]> granicus.if.org Git - php/commitdiff
Add various stubs for Intl
authorMáté Kocsis <kocsismate@woohoolabs.com>
Mon, 14 Oct 2019 20:02:22 +0000 (22:02 +0200)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Tue, 4 Feb 2020 13:55:21 +0000 (14:55 +0100)
Closes GH-4826

ext/intl/collator/collator.stub.php [new file with mode: 0644]
ext/intl/collator/collator_arginfo.h [new file with mode: 0644]
ext/intl/collator/collator_class.c
ext/intl/common/common.stub.php [new file with mode: 0644]
ext/intl/common/common_arginfo.h [new file with mode: 0644]
ext/intl/common/common_enum.cpp
ext/intl/php_intl.c
ext/intl/transliterator/transliterator.stub.php [new file with mode: 0644]
ext/intl/transliterator/transliterator_arginfo.h [new file with mode: 0644]
ext/intl/transliterator/transliterator_class.c

diff --git a/ext/intl/collator/collator.stub.php b/ext/intl/collator/collator.stub.php
new file mode 100644 (file)
index 0000000..a7ade53
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+class Collator
+{
+    public function __construct(string $locale) {}
+
+    /** @return Collator|null */
+    public static function create(string $locale) {}
+
+    /** @return int|false */
+    public function compare(string $str1, string $str2) {}
+
+    /** @return bool */
+    public function sort(array &$arr, $sort_flag = Collator::SORT_REGULAR) {}
+
+    /** @return bool */
+    public function sortWithSortKeys(array &$arr) {}
+
+    /** @return bool */
+    public function asort(array &$arr, int $sort_flag = Collator::SORT_REGULAR) {}
+
+    /** @return int|false */
+    public function getAttribute(int $attr) {}
+
+    /** @return bool */
+    public function setAttribute(int $attr, int $val) {}
+
+    /** @return int */
+    public function getStrength() {}
+
+    /** @return bool */
+    public function setStrength(int $strength) {}
+
+    /** @return string|false */
+    public function getLocale(int $type) {}
+
+    /** @return int|false */
+    public function getErrorCode() {}
+
+    /** @return string|false */
+    public function getErrorMessage() {}
+
+    /** @return string|false */
+    public function getSortKey(string $str) {}
+}
+
+function collator_create(string $locale): ?Collator {}
+
+function collator_compare(Collator $object, string $str1, string $str2): int|false {}
+
+function collator_get_attribute(Collator $object, int $attr): int|false {}
+
+function collator_set_attribute(Collator $object, int $attr, int $val): bool {}
+
+function collator_get_strength(Collator $object): int {}
+
+function collator_set_strength(Collator $object, int $strength): bool {}
+
+function collator_sort(Collator $object, array &$arr, int $sort_flag = Collator::SORT_REGULAR): bool {}
+
+function collator_sort_with_sort_keys(Collator $object, array &$arr): bool {}
+
+function collator_asort(Collator $object, array &$arr, int $sort_flag = Collator::SORT_REGULAR): bool {}
+
+function collator_get_locale(Collator $object, int $type): string|false {}
+
+function collator_get_error_code(Collator $object): int|false {}
+
+function collator_get_error_message(Collator $object): string|false {}
+
+function collator_get_sort_key(Collator $object, string $str): string|false {}
diff --git a/ext/intl/collator/collator_arginfo.h b/ext/intl/collator/collator_arginfo.h
new file mode 100644 (file)
index 0000000..ba1a18a
--- /dev/null
@@ -0,0 +1,115 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator___construct, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_Collator_create arginfo_class_Collator___construct
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_compare, 0, 0, 2)
+       ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_sort, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(1, arr, IS_ARRAY, 0)
+       ZEND_ARG_INFO(0, sort_flag)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_sortWithSortKeys, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(1, arr, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_asort, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(1, arr, IS_ARRAY, 0)
+       ZEND_ARG_TYPE_INFO(0, sort_flag, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_getAttribute, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, attr, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_setAttribute, 0, 0, 2)
+       ZEND_ARG_TYPE_INFO(0, attr, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, val, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_getStrength, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_setStrength, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, strength, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_getLocale, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_Collator_getErrorCode arginfo_class_Collator_getStrength
+
+#define arginfo_class_Collator_getErrorMessage arginfo_class_Collator_getStrength
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator_getSortKey, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_collator_create, 0, 1, Collator, 1)
+       ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_compare, 0, 3, MAY_BE_LONG|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_get_attribute, 0, 2, MAY_BE_LONG|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, attr, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_collator_set_attribute, 0, 3, _IS_BOOL, 0)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, attr, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, val, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_collator_get_strength, 0, 1, IS_LONG, 0)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_collator_set_strength, 0, 2, _IS_BOOL, 0)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, strength, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_collator_sort, 0, 2, _IS_BOOL, 0)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(1, arr, IS_ARRAY, 0)
+       ZEND_ARG_TYPE_INFO(0, sort_flag, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_collator_sort_with_sort_keys, 0, 2, _IS_BOOL, 0)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(1, arr, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_collator_asort arginfo_collator_sort
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_get_locale, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_get_error_code, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_get_error_message, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_collator_get_sort_key, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
+       ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ZEND_END_ARG_INFO()
index 94e13efab73cbcfb44ed295d1b76d0d9e5654ed2..26417061142e01df6065f0e7829e69c5201c8ade 100644 (file)
@@ -22,6 +22,7 @@
 #include "collator_locale.h"
 #include "collator_create.h"
 #include "collator_error.h"
+#include "collator_arginfo.h"
 #include "intl_error.h"
 
 #include <unicode/ucol.h>
@@ -62,53 +63,25 @@ zend_object *Collator_object_create(zend_class_entry *ce )
  * 'Collator' class registration structures & functions
  */
 
-/* {{{ Collator methods arguments info */
-/* NOTE: modifying 'collator_XX_args' do not forget to
-       modify approptiate 'collator_XX_args' for
-       the procedural API.
-*/
-ZEND_BEGIN_ARG_INFO_EX( collator_0_args, 0, 0, 0 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( collator_1_arg, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, arg1 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( collator_2_args, 0, 0, 2 )
-       ZEND_ARG_INFO( 0, arg1 )
-       ZEND_ARG_INFO( 0, arg2 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( collator_sort_args, 0, 0, 1 )
-       ZEND_ARG_ARRAY_INFO( 1, arr, 0 )
-       ZEND_ARG_INFO( 0, flags )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( collator_sort_with_sort_keys_args, 0, 0, 1 )
-       ZEND_ARG_ARRAY_INFO( 1, arr, 0 )
-ZEND_END_ARG_INFO()
-
-/* }}} */
-
 /* {{{ Collator_class_functions
  * Every 'Collator' class method has an entry in this table
  */
 
 static const zend_function_entry Collator_class_functions[] = {
-       PHP_ME( Collator, __construct, collator_1_arg, ZEND_ACC_PUBLIC )
-       ZEND_FENTRY( create, ZEND_FN( collator_create ), collator_1_arg, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
-       PHP_NAMED_FE( compare, ZEND_FN( collator_compare ), collator_2_args )
-       PHP_NAMED_FE( sort, ZEND_FN( collator_sort ), collator_sort_args )
-       PHP_NAMED_FE( sortWithSortKeys, ZEND_FN( collator_sort_with_sort_keys ), collator_sort_with_sort_keys_args )
-       PHP_NAMED_FE( asort, ZEND_FN( collator_asort ), collator_sort_args )
-       PHP_NAMED_FE( getAttribute, ZEND_FN( collator_get_attribute ), collator_1_arg )
-       PHP_NAMED_FE( setAttribute, ZEND_FN( collator_set_attribute ), collator_2_args )
-       PHP_NAMED_FE( getStrength, ZEND_FN( collator_get_strength ), collator_0_args )
-       PHP_NAMED_FE( setStrength, ZEND_FN( collator_set_strength ), collator_1_arg )
-       PHP_NAMED_FE( getLocale, ZEND_FN( collator_get_locale ), collator_1_arg )
-       PHP_NAMED_FE( getErrorCode, ZEND_FN( collator_get_error_code ), collator_0_args )
-       PHP_NAMED_FE( getErrorMessage, ZEND_FN( collator_get_error_message ), collator_0_args )
-       PHP_NAMED_FE( getSortKey, ZEND_FN( collator_get_sort_key ), collator_1_arg )
+       PHP_ME( Collator, __construct, arginfo_class_Collator___construct, ZEND_ACC_PUBLIC )
+       ZEND_FENTRY( create, ZEND_FN( collator_create ), arginfo_class_Collator_create, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
+       PHP_NAMED_FE( compare, ZEND_FN( collator_compare ), arginfo_class_Collator_compare )
+       PHP_NAMED_FE( sort, ZEND_FN( collator_sort ), arginfo_class_Collator_sort )
+       PHP_NAMED_FE( sortWithSortKeys, ZEND_FN( collator_sort_with_sort_keys ), arginfo_class_Collator_sortWithSortKeys )
+       PHP_NAMED_FE( asort, ZEND_FN( collator_asort ), arginfo_class_Collator_asort )
+       PHP_NAMED_FE( getAttribute, ZEND_FN( collator_get_attribute ), arginfo_class_Collator_getAttribute )
+       PHP_NAMED_FE( setAttribute, ZEND_FN( collator_set_attribute ), arginfo_class_Collator_setAttribute )
+       PHP_NAMED_FE( getStrength, ZEND_FN( collator_get_strength ), arginfo_class_Collator_getStrength )
+       PHP_NAMED_FE( setStrength, ZEND_FN( collator_set_strength ), arginfo_class_Collator_setStrength )
+       PHP_NAMED_FE( getLocale, ZEND_FN( collator_get_locale ), arginfo_class_Collator_getLocale )
+       PHP_NAMED_FE( getErrorCode, ZEND_FN( collator_get_error_code ), arginfo_class_Collator_getErrorCode )
+       PHP_NAMED_FE( getErrorMessage, ZEND_FN( collator_get_error_message ), arginfo_class_Collator_getErrorMessage )
+       PHP_NAMED_FE( getSortKey, ZEND_FN( collator_get_sort_key ), arginfo_class_Collator_getSortKey )
        PHP_FE_END
 };
 /* }}} */
diff --git a/ext/intl/common/common.stub.php b/ext/intl/common/common.stub.php
new file mode 100644 (file)
index 0000000..61a977f
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+class IntlIterator implements Iterator
+{
+    public function current() {}
+
+    public function key() {}
+
+    public function next() {}
+
+    public function rewind() {}
+
+    public function valid() {}
+}
+
+function intl_get_error_code(): int {}
+
+function intl_get_error_message(): string {}
+
+function intl_is_failure(int $error_code): bool {}
+
+function intl_error_name(int $error_code): string {}
diff --git a/ext/intl/common/common_arginfo.h b/ext/intl/common/common_arginfo.h
new file mode 100644 (file)
index 0000000..6d1b836
--- /dev/null
@@ -0,0 +1,26 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlIterator_current, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_IntlIterator_key arginfo_class_IntlIterator_current
+
+#define arginfo_class_IntlIterator_next arginfo_class_IntlIterator_current
+
+#define arginfo_class_IntlIterator_rewind arginfo_class_IntlIterator_current
+
+#define arginfo_class_IntlIterator_valid arginfo_class_IntlIterator_current
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intl_get_error_code, 0, 0, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intl_get_error_message, 0, 0, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intl_is_failure, 0, 1, _IS_BOOL, 0)
+       ZEND_ARG_TYPE_INFO(0, error_code, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_intl_error_name, 0, 1, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, error_code, IS_LONG, 0)
+ZEND_END_ARG_INFO()
index d94323ba82500db416ea3f47e7d067888559a3fb..446ffad82ecf820f42307cd249c1f6b2ac3fa9e1 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdio.h>
 
 #include "common_enum.h"
+#include "common_arginfo.h"
 
 extern "C" {
 #include <zend_interfaces.h>
@@ -280,15 +281,12 @@ static PHP_METHOD(IntlIterator, valid)
        RETURN_BOOL(ii->iterator->funcs->valid(ii->iterator) == SUCCESS);
 }
 
-ZEND_BEGIN_ARG_INFO_EX(ainfo_se_void, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
 static const zend_function_entry IntlIterator_class_functions[] = {
-       PHP_ME(IntlIterator,    current,        ainfo_se_void,                  ZEND_ACC_PUBLIC)
-       PHP_ME(IntlIterator,    key,            ainfo_se_void,                  ZEND_ACC_PUBLIC)
-       PHP_ME(IntlIterator,    next,           ainfo_se_void,                  ZEND_ACC_PUBLIC)
-       PHP_ME(IntlIterator,    rewind,         ainfo_se_void,                  ZEND_ACC_PUBLIC)
-       PHP_ME(IntlIterator,    valid,          ainfo_se_void,                  ZEND_ACC_PUBLIC)
+       PHP_ME(IntlIterator,    current,        arginfo_class_IntlIterator_current,             ZEND_ACC_PUBLIC)
+       PHP_ME(IntlIterator,    key,            arginfo_class_IntlIterator_key,                 ZEND_ACC_PUBLIC)
+       PHP_ME(IntlIterator,    next,           arginfo_class_IntlIterator_next,                ZEND_ACC_PUBLIC)
+       PHP_ME(IntlIterator,    rewind,         arginfo_class_IntlIterator_rewind,              ZEND_ACC_PUBLIC)
+       PHP_ME(IntlIterator,    valid,          arginfo_class_IntlIterator_valid,               ZEND_ACC_PUBLIC)
        PHP_FE_END
 };
 
index b7bab203a7bef47d6c904d822ae29dfa8eaf05b3..c9a8b5ff972e0a743c3a90a5400325d8b0859175 100644 (file)
@@ -31,6 +31,7 @@
 #include "collator/collator_locale.h"
 #include "collator/collator_create.h"
 #include "collator/collator_error.h"
+#include "collator/collator_arginfo.h"
 
 #include "converter/converter.h"
 
@@ -76,6 +77,7 @@
 #include "transliterator/transliterator.h"
 #include "transliterator/transliterator_class.h"
 #include "transliterator/transliterator_methods.h"
+#include "transliterator/transliterator_arginfo.h"
 
 #include "timezone/timezone_class.h"
 #include "timezone/timezone_methods.h"
 #include "msgformat/msgformat_arginfo.h"
 #include "common/common_error.h"
 #include "common/common_enum.h"
+#include "common/common_arginfo.h"
 
 #include <unicode/uloc.h>
 #include <unicode/uclean.h>
@@ -129,40 +132,6 @@ const char *intl_locale_get_default( void )
        return INTL_G(default_locale);
 }
 
-/* {{{ Arguments info */
-ZEND_BEGIN_ARG_INFO_EX(collator_static_0_args, 0, 0, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_static_1_arg, 0, 0, 1)
-       ZEND_ARG_INFO(0, arg1)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_0_args, 0, 0, 1)
-       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_1_arg, 0, 0, 2)
-       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
-       ZEND_ARG_INFO(0, arg1)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_2_args, 0, 0, 3)
-       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
-       ZEND_ARG_INFO(0, arg1)
-       ZEND_ARG_INFO(0, arg2)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_sort_args, 0, 0, 2)
-       ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
-       ZEND_ARG_ARRAY_INFO(1, arr, 0)
-       ZEND_ARG_INFO(0, sort_flags)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(collator_sort_with_sort_keys_args, 0, 0, 2)
-       ZEND_ARG_OBJ_INFO(0, coll, Collator, 0)
-       ZEND_ARG_ARRAY_INFO(1, arr, 0)
-ZEND_END_ARG_INFO()
-
 ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_arginfo, 0, 0, 2)
        ZEND_ARG_INFO(0, formatter)
        ZEND_ARG_INFO(0, string)
@@ -177,9 +146,6 @@ ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_currency_arginfo, 0, 0, 3)
        ZEND_ARG_INFO(1, position)
 ZEND_END_ARG_INFO()
 
-#define intl_0_args collator_static_0_args
-#define intl_1_arg collator_static_1_arg
-
 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_create, 0, 0, 2)
        ZEND_ARG_INFO(0, locale)
        ZEND_ARG_INFO(0, style)
@@ -229,34 +195,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_locale, 0, 0, 1)
        ZEND_ARG_INFO(0, type)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_void, 0, 0, 0 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, id )
-       ZEND_ARG_INFO( 0, direction )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_from_rules, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, rules )
-       ZEND_ARG_INFO( 0, direction )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_inverse, 0, 0, 1 )
-       ZEND_ARG_OBJ_INFO( 0, orig_trans, Transliterator, 0 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_transliterate, 0, 0, 2 )
-       ZEND_ARG_INFO( 0, trans )
-       ZEND_ARG_INFO( 0, subject )
-       ZEND_ARG_INFO( 0, start )
-       ZEND_ARG_INFO( 0, end )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_error, 0, 0, 1 )
-       ZEND_ARG_OBJ_INFO( 0, trans, Transliterator, 0 )
-ZEND_END_ARG_INFO()
-
 /* }}} */
 
 /* {{{ intl_functions
@@ -266,19 +204,19 @@ ZEND_END_ARG_INFO()
 static const zend_function_entry intl_functions[] = {
 
        /* collator functions */
-       PHP_FE( collator_create, collator_static_1_arg )
-       PHP_FE( collator_compare, collator_2_args )
-       PHP_FE( collator_get_attribute, collator_1_arg )
-       PHP_FE( collator_set_attribute, collator_2_args )
-       PHP_FE( collator_get_strength, collator_0_args )
-       PHP_FE( collator_set_strength, collator_1_arg )
-       PHP_FE( collator_sort, collator_sort_args )
-       PHP_FE( collator_sort_with_sort_keys, collator_sort_with_sort_keys_args )
-       PHP_FE( collator_asort, collator_sort_args )
-       PHP_FE( collator_get_locale, collator_1_arg )
-       PHP_FE( collator_get_error_code, collator_0_args )
-       PHP_FE( collator_get_error_message, collator_0_args )
-       PHP_FE( collator_get_sort_key, collator_1_arg )
+       PHP_FE( collator_create, arginfo_collator_create )
+       PHP_FE( collator_compare, arginfo_collator_compare )
+       PHP_FE( collator_get_attribute, arginfo_collator_get_attribute )
+       PHP_FE( collator_set_attribute, arginfo_collator_set_attribute )
+       PHP_FE( collator_get_strength, arginfo_collator_get_strength )
+       PHP_FE( collator_set_strength, arginfo_collator_set_strength )
+       PHP_FE( collator_sort, arginfo_collator_sort )
+       PHP_FE( collator_sort_with_sort_keys, arginfo_collator_sort_with_sort_keys )
+       PHP_FE( collator_asort, arginfo_collator_asort )
+       PHP_FE( collator_get_locale, arginfo_collator_get_locale )
+       PHP_FE( collator_get_error_code, arginfo_collator_get_error_code )
+       PHP_FE( collator_get_error_message, arginfo_collator_get_error_message )
+       PHP_FE( collator_get_sort_key, arginfo_collator_get_sort_key )
 
        /* formatter functions */
        PHP_FE( numfmt_create, arginfo_numfmt_create )
@@ -385,11 +323,11 @@ static const zend_function_entry intl_functions[] = {
        /* Transliterator functions */
        PHP_FE( transliterator_create, arginfo_transliterator_create )
        PHP_FE( transliterator_create_from_rules, arginfo_transliterator_create_from_rules )
-       PHP_FE( transliterator_list_ids, arginfo_transliterator_void )
+       PHP_FE( transliterator_list_ids, arginfo_transliterator_list_ids )
        PHP_FE( transliterator_create_inverse, arginfo_transliterator_create_inverse)
        PHP_FE( transliterator_transliterate, arginfo_transliterator_transliterate )
-       PHP_FE( transliterator_get_error_code, arginfo_transliterator_error )
-       PHP_FE( transliterator_get_error_message, arginfo_transliterator_error )
+       PHP_FE( transliterator_get_error_code, arginfo_transliterator_get_error_code )
+       PHP_FE( transliterator_get_error_message, arginfo_transliterator_get_error_message )
 
        /* TimeZone functions */
        PHP_FE( intltz_create_time_zone, arginfo_intltz_create_time_zone )
@@ -467,10 +405,10 @@ static const zend_function_entry intl_functions[] = {
        PHP_FE( intlgregcal_is_leap_year, arginfo_intlgregcal_is_leap_year )
 
        /* common functions */
-       PHP_FE( intl_get_error_code, intl_0_args )
-       PHP_FE( intl_get_error_message, intl_0_args )
-       PHP_FE( intl_is_failure, intl_1_arg )
-       PHP_FE( intl_error_name, intl_1_arg )
+       PHP_FE( intl_get_error_code, arginfo_intl_get_error_code )
+       PHP_FE( intl_get_error_message, arginfo_intl_get_error_message )
+       PHP_FE( intl_is_failure, arginfo_intl_is_failure )
+       PHP_FE( intl_error_name, arginfo_intl_error_name )
 
        PHP_FE_END
 };
diff --git a/ext/intl/transliterator/transliterator.stub.php b/ext/intl/transliterator/transliterator.stub.php
new file mode 100644 (file)
index 0000000..1e96ba6
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+class Transliterator
+{
+    final private function __construct() {}
+
+    /** @return Transliterator|null */
+    public static function create(string $id, int $direction = Transliterator::FORWARD) {}
+
+    /** @return Transliterator|null */
+    public static function createFromRules(string $rules, int $direction = Transliterator::FORWARD) {}
+
+    /** @return Transliterator|null */
+    public function createInverse() {}
+
+    /** @return array|false */
+    public static function listIDs() {}
+
+    /** @return string|false */
+    public function transliterate(string $subject, int $start = 0, int $end = -1) {}
+
+    /** @return int|false */
+    public function getErrorCode() {}
+
+    /** @return string|false */
+    public function getErrorMessage() {}
+}
+
+function transliterator_create(string $id, int $direction = Transliterator::FORWARD): ?Transliterator {}
+
+function transliterator_create_from_rules(string $rules, int $direction = Transliterator::FORWARD): ?Transliterator {}
+
+function transliterator_list_ids(): array|false {}
+
+function transliterator_create_inverse(Transliterator $orig_trans): ?Transliterator {}
+
+/** @param Transliterator|string */
+function transliterator_transliterate($transliterator, string $subject, int $start = 0, int $end = -1): string|false {}
+
+function transliterator_get_error_code(Transliterator $trans): int|false {}
+
+function transliterator_get_error_message(Transliterator $trans): string|false {}
diff --git a/ext/intl/transliterator/transliterator_arginfo.h b/ext/intl/transliterator/transliterator_arginfo.h
new file mode 100644 (file)
index 0000000..7061b4b
--- /dev/null
@@ -0,0 +1,60 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Transliterator___construct, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Transliterator_create, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, id, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, direction, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Transliterator_createFromRules, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, rules, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, direction, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_Transliterator_createInverse arginfo_class_Transliterator___construct
+
+#define arginfo_class_Transliterator_listIDs arginfo_class_Transliterator___construct
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Transliterator_transliterate, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, subject, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, start, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, end, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_Transliterator_getErrorCode arginfo_class_Transliterator___construct
+
+#define arginfo_class_Transliterator_getErrorMessage arginfo_class_Transliterator___construct
+
+ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_transliterator_create, 0, 1, Transliterator, 1)
+       ZEND_ARG_TYPE_INFO(0, id, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, direction, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_transliterator_create_from_rules, 0, 1, Transliterator, 1)
+       ZEND_ARG_TYPE_INFO(0, rules, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, direction, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_transliterator_list_ids, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_transliterator_create_inverse, 0, 1, Transliterator, 1)
+       ZEND_ARG_OBJ_INFO(0, orig_trans, Transliterator, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_transliterator_transliterate, 0, 2, MAY_BE_STRING|MAY_BE_FALSE)
+       ZEND_ARG_INFO(0, transliterator)
+       ZEND_ARG_TYPE_INFO(0, subject, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, start, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, end, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_transliterator_get_error_code, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, trans, Transliterator, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_transliterator_get_error_message, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
+       ZEND_ARG_OBJ_INFO(0, trans, Transliterator, 0)
+ZEND_END_ARG_INFO()
index 5bed10ed6f57c58dfd029ca9b062092af0bdfcde..4afc6017c33906d3f499a29c8f16c721c7135239 100644 (file)
@@ -15,6 +15,7 @@
 #include "transliterator_class.h"
 #include "php_intl.h"
 #include "transliterator_methods.h"
+#include "transliterator_arginfo.h"
 #include "intl_error.h"
 #include "intl_convert.h"
 #include "intl_data.h"
@@ -254,44 +255,18 @@ static zval *Transliterator_write_property( zend_object *object, zend_string *na
 }
 /* }}} */
 
-/*
- * 'Transliterator' class registration structures & functions
- */
-
-/* {{{ Transliterator methods arguments info */
-
-ZEND_BEGIN_ARG_INFO_EX( ainfo_trans_void, 0, 0, 0 )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( ainfo_trans_create, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, id )
-       ZEND_ARG_INFO( 0, direction )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( ainfo_trans_create_from_rules, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, rules )
-       ZEND_ARG_INFO( 0, direction )
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX( ainfo_trans_me_transliterate, 0, 0, 1 )
-       ZEND_ARG_INFO( 0, subject )
-       ZEND_ARG_INFO( 0, start )
-       ZEND_ARG_INFO( 0, end )
-ZEND_END_ARG_INFO()
-/* }}} */
-
 /* {{{ Transliterator_class_functions
  * Every 'Transliterator' class method has an entry in this table
  */
 static const zend_function_entry Transliterator_class_functions[] = {
-       PHP_ME( Transliterator,                 __construct,                                            ainfo_trans_void,                               ZEND_ACC_PRIVATE | ZEND_ACC_FINAL )
-       PHP_ME_MAPPING( create,                 transliterator_create,                          ainfo_trans_create,                             ZEND_ACC_STATIC |ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( createFromRules,transliterator_create_from_rules,       ainfo_trans_create_from_rules,  ZEND_ACC_STATIC | ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( createInverse,  transliterator_create_inverse,          ainfo_trans_void,                               ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( listIDs,                transliterator_list_ids,                        ainfo_trans_void,                               ZEND_ACC_STATIC | ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( transliterate,  transliterator_transliterate,           ainfo_trans_me_transliterate,   ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( getErrorCode,   transliterator_get_error_code,          ainfo_trans_void,                               ZEND_ACC_PUBLIC )
-       PHP_ME_MAPPING( getErrorMessage,transliterator_get_error_message,       ainfo_trans_void,                               ZEND_ACC_PUBLIC )
+       PHP_ME( Transliterator,                 __construct,                                            arginfo_class_Transliterator___construct,               ZEND_ACC_PRIVATE | ZEND_ACC_FINAL )
+       PHP_ME_MAPPING( create,                 transliterator_create,                          arginfo_class_Transliterator_create,                    ZEND_ACC_STATIC |ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( createFromRules,transliterator_create_from_rules,       arginfo_class_Transliterator_createFromRules,   ZEND_ACC_STATIC | ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( createInverse,  transliterator_create_inverse,          arginfo_class_Transliterator_createInverse,             ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( listIDs,                transliterator_list_ids,                        arginfo_class_Transliterator_listIDs,                   ZEND_ACC_STATIC | ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( transliterate,  transliterator_transliterate,           arginfo_class_Transliterator_transliterate,             ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( getErrorCode,   transliterator_get_error_code,          arginfo_class_Transliterator_getErrorCode,              ZEND_ACC_PUBLIC )
+       PHP_ME_MAPPING( getErrorMessage,transliterator_get_error_message,       arginfo_class_Transliterator_getErrorMessage,   ZEND_ACC_PUBLIC )
        PHP_FE_END
 };
 /* }}} */