From 5a5c01f779b942300308bd9318272575d15f38cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Mon, 1 Aug 2022 19:09:18 +0200 Subject: [PATCH] Declare ext/intl constants in stubs - part 2 --- ext/intl/collator/collator.c | 85 --------------- ext/intl/collator/collator.h | 2 - ext/intl/collator/collator.stub.php | 142 +++++++++++++++++++++++++ ext/intl/collator/collator_arginfo.h | 152 ++++++++++++++++++++++++++- ext/intl/collator/collator_class.c | 10 +- ext/intl/collator/collator_class.h | 2 +- ext/intl/config.m4 | 1 - ext/intl/config.w32 | 1 - ext/intl/php_intl.c | 16 +-- ext/intl/php_intl.stub.php | 18 ++++ ext/intl/php_intl_arginfo.h | 11 +- 11 files changed, 334 insertions(+), 106 deletions(-) delete mode 100644 ext/intl/collator/collator.c diff --git a/ext/intl/collator/collator.c b/ext/intl/collator/collator.c deleted file mode 100644 index c4a9886f8ac9..000000000000 --- a/ext/intl/collator/collator.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Vadim Savchuk | - | Dmitry Lakhtyuk | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "collator_class.h" -#include "collator.h" - -#include -#include -#include - -/* {{{ collator_register_constants - * Register constants common for the both (OO and procedural) - * APIs. - */ -void collator_register_constants( INIT_FUNC_ARGS ) -{ - if( !Collator_ce_ptr ) - { - zend_error( E_ERROR, "Collator class not defined" ); - return; - } - - #define COLLATOR_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_PERSISTENT | CONST_CS) - #define COLLATOR_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long( Collator_ce_ptr, ZEND_STRS( #x ) - 1, UCOL_##x ); - #define COLLATOR_EXPOSE_CUSTOM_CLASS_CONST(name, value) zend_declare_class_constant_long( Collator_ce_ptr, ZEND_STRS( name ) - 1, value ); - - /* UColAttributeValue constants */ - COLLATOR_EXPOSE_CUSTOM_CLASS_CONST( "DEFAULT_VALUE", UCOL_DEFAULT ); - - COLLATOR_EXPOSE_CLASS_CONST( PRIMARY ); - COLLATOR_EXPOSE_CLASS_CONST( SECONDARY ); - COLLATOR_EXPOSE_CLASS_CONST( TERTIARY ); - COLLATOR_EXPOSE_CLASS_CONST( DEFAULT_STRENGTH ); - COLLATOR_EXPOSE_CLASS_CONST( QUATERNARY ); - COLLATOR_EXPOSE_CLASS_CONST( IDENTICAL ); - - COLLATOR_EXPOSE_CLASS_CONST( OFF ); - COLLATOR_EXPOSE_CLASS_CONST( ON ); - - COLLATOR_EXPOSE_CLASS_CONST( SHIFTED ); - COLLATOR_EXPOSE_CLASS_CONST( NON_IGNORABLE ); - - COLLATOR_EXPOSE_CLASS_CONST( LOWER_FIRST ); - COLLATOR_EXPOSE_CLASS_CONST( UPPER_FIRST ); - - /* UColAttribute constants */ - COLLATOR_EXPOSE_CLASS_CONST( FRENCH_COLLATION ); - COLLATOR_EXPOSE_CLASS_CONST( ALTERNATE_HANDLING ); - COLLATOR_EXPOSE_CLASS_CONST( CASE_FIRST ); - COLLATOR_EXPOSE_CLASS_CONST( CASE_LEVEL ); - COLLATOR_EXPOSE_CLASS_CONST( NORMALIZATION_MODE ); - COLLATOR_EXPOSE_CLASS_CONST( STRENGTH ); - COLLATOR_EXPOSE_CLASS_CONST( HIRAGANA_QUATERNARY_MODE ); - COLLATOR_EXPOSE_CLASS_CONST( NUMERIC_COLLATION ); - - /* ULocDataLocaleType constants */ - COLLATOR_EXPOSE_CONST( ULOC_ACTUAL_LOCALE ); - COLLATOR_EXPOSE_CONST( ULOC_VALID_LOCALE ); - - /* sort flags */ - COLLATOR_EXPOSE_CUSTOM_CLASS_CONST( "SORT_REGULAR", COLLATOR_SORT_REGULAR ); - COLLATOR_EXPOSE_CUSTOM_CLASS_CONST( "SORT_STRING", COLLATOR_SORT_STRING ); - COLLATOR_EXPOSE_CUSTOM_CLASS_CONST( "SORT_NUMERIC", COLLATOR_SORT_NUMERIC ); - - #undef COLLATOR_EXPOSE_CUSTOM_CLASS_CONST - #undef COLLATOR_EXPOSE_CLASS_CONST - #undef COLLATOR_EXPOSE_CONST -} -/* }}} */ diff --git a/ext/intl/collator/collator.h b/ext/intl/collator/collator.h index be7984da6026..e92429f51179 100644 --- a/ext/intl/collator/collator.h +++ b/ext/intl/collator/collator.h @@ -22,6 +22,4 @@ #define COLLATOR_SORT_STRING 1 #define COLLATOR_SORT_NUMERIC 2 -void collator_register_constants( INIT_FUNC_ARGS ); - #endif // COLLATOR_COLLATOR_H diff --git a/ext/intl/collator/collator.stub.php b/ext/intl/collator/collator.stub.php index bd201ee28be6..fe61ba17a627 100644 --- a/ext/intl/collator/collator.stub.php +++ b/ext/intl/collator/collator.stub.php @@ -2,9 +2,151 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue ULOC_ACTUAL_LOCALE + */ +const ULOC_ACTUAL_LOCALE = UNKNOWN; +/** + * @var int + * @cvalue ULOC_VALID_LOCALE + */ +const ULOC_VALID_LOCALE = UNKNOWN; + /** @not-serializable */ class Collator { + /** + * @var int + * @cvalue UCOL_DEFAULT + */ + const DEFAULT_VALUE = UNKNOWN; + + /** + * @var int + * @cvalue UCOL_PRIMARY + */ + const PRIMARY = UNKNOWN; + /** + * @var int + * @cvalue UCOL_SECONDARY + */ + const SECONDARY = UNKNOWN; + /** + * @var int + * @cvalue UCOL_TERTIARY + */ + const TERTIARY = UNKNOWN; + /** + * @var int + * @cvalue UCOL_DEFAULT_STRENGTH + */ + const DEFAULT_STRENGTH = UNKNOWN; + /** + * @var int + * @cvalue UCOL_QUATERNARY + */ + const QUATERNARY = UNKNOWN; + /** + * @var int + * @cvalue UCOL_IDENTICAL + */ + const IDENTICAL = UNKNOWN; + + /** + * @var int + * @cvalue UCOL_OFF + */ + const OFF = UNKNOWN; + /** + * @var int + * @cvalue UCOL_ON + */ + const ON = UNKNOWN; + + /** + * @var int + * @cvalue UCOL_SHIFTED + */ + const SHIFTED = UNKNOWN; + /** + * @var int + * @cvalue UCOL_NON_IGNORABLE + */ + const NON_IGNORABLE = UNKNOWN; + + /** + * @var int + * @cvalue UCOL_LOWER_FIRST + */ + const LOWER_FIRST = UNKNOWN; + /** + * @var int + * @cvalue UCOL_UPPER_FIRST + */ + const UPPER_FIRST = UNKNOWN; + + /* UColAttribute constants */ + + /** + * @var int + * @cvalue UCOL_FRENCH_COLLATION + */ + const FRENCH_COLLATION = UNKNOWN; + /** + * @var int + * @cvalue UCOL_ALTERNATE_HANDLING + */ + const ALTERNATE_HANDLING = UNKNOWN; + /** + * @var int + * @cvalue UCOL_CASE_FIRST + */ + const CASE_FIRST = UNKNOWN; + /** + * @var int + * @cvalue UCOL_CASE_LEVEL + */ + const CASE_LEVEL = UNKNOWN; + /** + * @var int + * @cvalue UCOL_NORMALIZATION_MODE + */ + const NORMALIZATION_MODE = UNKNOWN; + /** + * @var int + * @cvalue UCOL_STRENGTH + */ + const STRENGTH = UNKNOWN; + /** + * @var int + * @cvalue UCOL_HIRAGANA_QUATERNARY_MODE + */ + const HIRAGANA_QUATERNARY_MODE = UNKNOWN; + /** + * @var int + * @cvalue UCOL_NUMERIC_COLLATION + */ + const NUMERIC_COLLATION = UNKNOWN; + + /* sort flags */ + + /** + * @var int + * @cvalue COLLATOR_SORT_REGULAR + */ + const SORT_REGULAR = UNKNOWN; + /** + * @var int + * @cvalue COLLATOR_SORT_STRING + */ + const SORT_STRING = UNKNOWN; + /** + * @var int + * @cvalue COLLATOR_SORT_NUMERIC + */ + const SORT_NUMERIC = UNKNOWN; + public function __construct(string $locale) {} /** diff --git a/ext/intl/collator/collator_arginfo.h b/ext/intl/collator/collator_arginfo.h index c693ad925088..37fa57fff530 100644 --- a/ext/intl/collator/collator_arginfo.h +++ b/ext/intl/collator/collator_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: c2e08f16cdc3d64e82fc277b4a59250d4b19c84e */ + * Stub hash: be1f74889b55b997f8b2647fe65ab86cf4d72c0b */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Collator___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0) @@ -90,6 +90,12 @@ static const zend_function_entry class_Collator_methods[] = { ZEND_FE_END }; +static void register_collator_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("ULOC_ACTUAL_LOCALE", ULOC_ACTUAL_LOCALE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ULOC_VALID_LOCALE", ULOC_VALID_LOCALE, CONST_CS | CONST_PERSISTENT); +} + static zend_class_entry *register_class_Collator(void) { zend_class_entry ce, *class_entry; @@ -98,5 +104,149 @@ static zend_class_entry *register_class_Collator(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_DEFAULT_VALUE_value; + ZVAL_LONG(&const_DEFAULT_VALUE_value, UCOL_DEFAULT); + zend_string *const_DEFAULT_VALUE_name = zend_string_init_interned("DEFAULT_VALUE", sizeof("DEFAULT_VALUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DEFAULT_VALUE_name, &const_DEFAULT_VALUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DEFAULT_VALUE_name); + + zval const_PRIMARY_value; + ZVAL_LONG(&const_PRIMARY_value, UCOL_PRIMARY); + zend_string *const_PRIMARY_name = zend_string_init_interned("PRIMARY", sizeof("PRIMARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PRIMARY_name, &const_PRIMARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PRIMARY_name); + + zval const_SECONDARY_value; + ZVAL_LONG(&const_SECONDARY_value, UCOL_SECONDARY); + zend_string *const_SECONDARY_name = zend_string_init_interned("SECONDARY", sizeof("SECONDARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SECONDARY_name, &const_SECONDARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SECONDARY_name); + + zval const_TERTIARY_value; + ZVAL_LONG(&const_TERTIARY_value, UCOL_TERTIARY); + zend_string *const_TERTIARY_name = zend_string_init_interned("TERTIARY", sizeof("TERTIARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TERTIARY_name, &const_TERTIARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TERTIARY_name); + + zval const_DEFAULT_STRENGTH_value; + ZVAL_LONG(&const_DEFAULT_STRENGTH_value, UCOL_DEFAULT_STRENGTH); + zend_string *const_DEFAULT_STRENGTH_name = zend_string_init_interned("DEFAULT_STRENGTH", sizeof("DEFAULT_STRENGTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DEFAULT_STRENGTH_name, &const_DEFAULT_STRENGTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DEFAULT_STRENGTH_name); + + zval const_QUATERNARY_value; + ZVAL_LONG(&const_QUATERNARY_value, UCOL_QUATERNARY); + zend_string *const_QUATERNARY_name = zend_string_init_interned("QUATERNARY", sizeof("QUATERNARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_QUATERNARY_name, &const_QUATERNARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_QUATERNARY_name); + + zval const_IDENTICAL_value; + ZVAL_LONG(&const_IDENTICAL_value, UCOL_IDENTICAL); + zend_string *const_IDENTICAL_name = zend_string_init_interned("IDENTICAL", sizeof("IDENTICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_IDENTICAL_name, &const_IDENTICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_IDENTICAL_name); + + zval const_OFF_value; + ZVAL_LONG(&const_OFF_value, UCOL_OFF); + zend_string *const_OFF_name = zend_string_init_interned("OFF", sizeof("OFF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OFF_name, &const_OFF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OFF_name); + + zval const_ON_value; + ZVAL_LONG(&const_ON_value, UCOL_ON); + zend_string *const_ON_name = zend_string_init_interned("ON", sizeof("ON") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ON_name, &const_ON_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ON_name); + + zval const_SHIFTED_value; + ZVAL_LONG(&const_SHIFTED_value, UCOL_SHIFTED); + zend_string *const_SHIFTED_name = zend_string_init_interned("SHIFTED", sizeof("SHIFTED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SHIFTED_name, &const_SHIFTED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SHIFTED_name); + + zval const_NON_IGNORABLE_value; + ZVAL_LONG(&const_NON_IGNORABLE_value, UCOL_NON_IGNORABLE); + zend_string *const_NON_IGNORABLE_name = zend_string_init_interned("NON_IGNORABLE", sizeof("NON_IGNORABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NON_IGNORABLE_name, &const_NON_IGNORABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NON_IGNORABLE_name); + + zval const_LOWER_FIRST_value; + ZVAL_LONG(&const_LOWER_FIRST_value, UCOL_LOWER_FIRST); + zend_string *const_LOWER_FIRST_name = zend_string_init_interned("LOWER_FIRST", sizeof("LOWER_FIRST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LOWER_FIRST_name, &const_LOWER_FIRST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LOWER_FIRST_name); + + zval const_UPPER_FIRST_value; + ZVAL_LONG(&const_UPPER_FIRST_value, UCOL_UPPER_FIRST); + zend_string *const_UPPER_FIRST_name = zend_string_init_interned("UPPER_FIRST", sizeof("UPPER_FIRST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UPPER_FIRST_name, &const_UPPER_FIRST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UPPER_FIRST_name); + + zval const_FRENCH_COLLATION_value; + ZVAL_LONG(&const_FRENCH_COLLATION_value, UCOL_FRENCH_COLLATION); + zend_string *const_FRENCH_COLLATION_name = zend_string_init_interned("FRENCH_COLLATION", sizeof("FRENCH_COLLATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FRENCH_COLLATION_name, &const_FRENCH_COLLATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FRENCH_COLLATION_name); + + zval const_ALTERNATE_HANDLING_value; + ZVAL_LONG(&const_ALTERNATE_HANDLING_value, UCOL_ALTERNATE_HANDLING); + zend_string *const_ALTERNATE_HANDLING_name = zend_string_init_interned("ALTERNATE_HANDLING", sizeof("ALTERNATE_HANDLING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ALTERNATE_HANDLING_name, &const_ALTERNATE_HANDLING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ALTERNATE_HANDLING_name); + + zval const_CASE_FIRST_value; + ZVAL_LONG(&const_CASE_FIRST_value, UCOL_CASE_FIRST); + zend_string *const_CASE_FIRST_name = zend_string_init_interned("CASE_FIRST", sizeof("CASE_FIRST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CASE_FIRST_name, &const_CASE_FIRST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CASE_FIRST_name); + + zval const_CASE_LEVEL_value; + ZVAL_LONG(&const_CASE_LEVEL_value, UCOL_CASE_LEVEL); + zend_string *const_CASE_LEVEL_name = zend_string_init_interned("CASE_LEVEL", sizeof("CASE_LEVEL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CASE_LEVEL_name, &const_CASE_LEVEL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CASE_LEVEL_name); + + zval const_NORMALIZATION_MODE_value; + ZVAL_LONG(&const_NORMALIZATION_MODE_value, UCOL_NORMALIZATION_MODE); + zend_string *const_NORMALIZATION_MODE_name = zend_string_init_interned("NORMALIZATION_MODE", sizeof("NORMALIZATION_MODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NORMALIZATION_MODE_name, &const_NORMALIZATION_MODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NORMALIZATION_MODE_name); + + zval const_STRENGTH_value; + ZVAL_LONG(&const_STRENGTH_value, UCOL_STRENGTH); + zend_string *const_STRENGTH_name = zend_string_init_interned("STRENGTH", sizeof("STRENGTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_STRENGTH_name, &const_STRENGTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_STRENGTH_name); + + zval const_HIRAGANA_QUATERNARY_MODE_value; + ZVAL_LONG(&const_HIRAGANA_QUATERNARY_MODE_value, UCOL_HIRAGANA_QUATERNARY_MODE); + zend_string *const_HIRAGANA_QUATERNARY_MODE_name = zend_string_init_interned("HIRAGANA_QUATERNARY_MODE", sizeof("HIRAGANA_QUATERNARY_MODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HIRAGANA_QUATERNARY_MODE_name, &const_HIRAGANA_QUATERNARY_MODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HIRAGANA_QUATERNARY_MODE_name); + + zval const_NUMERIC_COLLATION_value; + ZVAL_LONG(&const_NUMERIC_COLLATION_value, UCOL_NUMERIC_COLLATION); + zend_string *const_NUMERIC_COLLATION_name = zend_string_init_interned("NUMERIC_COLLATION", sizeof("NUMERIC_COLLATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NUMERIC_COLLATION_name, &const_NUMERIC_COLLATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NUMERIC_COLLATION_name); + + zval const_SORT_REGULAR_value; + ZVAL_LONG(&const_SORT_REGULAR_value, COLLATOR_SORT_REGULAR); + zend_string *const_SORT_REGULAR_name = zend_string_init_interned("SORT_REGULAR", sizeof("SORT_REGULAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SORT_REGULAR_name, &const_SORT_REGULAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SORT_REGULAR_name); + + zval const_SORT_STRING_value; + ZVAL_LONG(&const_SORT_STRING_value, COLLATOR_SORT_STRING); + zend_string *const_SORT_STRING_name = zend_string_init_interned("SORT_STRING", sizeof("SORT_STRING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SORT_STRING_name, &const_SORT_STRING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SORT_STRING_name); + + zval const_SORT_NUMERIC_value; + ZVAL_LONG(&const_SORT_NUMERIC_value, COLLATOR_SORT_NUMERIC); + zend_string *const_SORT_NUMERIC_name = zend_string_init_interned("SORT_NUMERIC", sizeof("SORT_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SORT_NUMERIC_name, &const_SORT_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SORT_NUMERIC_name); + return class_entry; } diff --git a/ext/intl/collator/collator_class.c b/ext/intl/collator/collator_class.c index 159b2fdf330f..709691123ed3 100644 --- a/ext/intl/collator/collator_class.c +++ b/ext/intl/collator/collator_class.c @@ -13,15 +13,17 @@ +----------------------------------------------------------------------+ */ +#include "collator.h" #include "collator_class.h" #include "php_intl.h" #include "collator_sort.h" #include "collator_convert.h" -#include "collator_arginfo.h" #include "intl_error.h" #include +#include "collator_arginfo.h" + zend_class_entry *Collator_ce_ptr = NULL; static zend_object_handlers Collator_handlers; @@ -58,11 +60,13 @@ zend_object *Collator_object_create(zend_class_entry *ce ) * 'Collator' class registration structures & functions */ -/* {{{ collator_register_Collator_class +/* {{{ collator_register_Collator_symbols * Initialize 'Collator' class */ -void collator_register_Collator_class( void ) +void collator_register_Collator_symbols(int module_number) { + register_collator_symbols(module_number); + /* Create and register 'Collator' class. */ Collator_ce_ptr = register_class_Collator(); Collator_ce_ptr->create_object = Collator_object_create; diff --git a/ext/intl/collator/collator_class.h b/ext/intl/collator/collator_class.h index d66abe3f56b5..5c69c2e5affb 100644 --- a/ext/intl/collator/collator_class.h +++ b/ext/intl/collator/collator_class.h @@ -46,7 +46,7 @@ static inline Collator_object *php_intl_collator_fetch_object(zend_object *obj) } #define Z_INTL_COLLATOR_P(zv) php_intl_collator_fetch_object(Z_OBJ_P(zv)) -void collator_register_Collator_class( void ); +void collator_register_Collator_symbols(int module_number); void collator_object_init( Collator_object* co ); void collator_object_destroy( Collator_object* co ); diff --git a/ext/intl/config.m4 b/ext/intl/config.m4 index daadd3e73d8d..91a91da20c27 100644 --- a/ext/intl/config.m4 +++ b/ext/intl/config.m4 @@ -10,7 +10,6 @@ if test "$PHP_INTL" != "no"; then PHP_NEW_EXTENSION(intl, php_intl.c \ intl_error.c \ intl_convert.c \ - collator/collator.c \ collator/collator_class.c \ collator/collator_sort.c \ collator/collator_convert.c \ diff --git a/ext/intl/config.w32 b/ext/intl/config.w32 index d9cafc5957c5..95ac9a108f73 100644 --- a/ext/intl/config.w32 +++ b/ext/intl/config.w32 @@ -9,7 +9,6 @@ if (PHP_INTL != "no") { EXTENSION("intl", "php_intl.c intl_convert.c intl_convertcpp.cpp intl_error.c ", true, "/I \"" + configure_module_dirname + "\" /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); ADD_SOURCES(configure_module_dirname + "/collator", "\ - collator.c \ collator_attr.c \ collator_class.c \ collator_compare.c \ diff --git a/ext/intl/php_intl.c b/ext/intl/php_intl.c index a76472f19f2e..2fa47e46726a 100644 --- a/ext/intl/php_intl.c +++ b/ext/intl/php_intl.c @@ -21,7 +21,6 @@ #include "php_intl.h" -#include "php_intl_arginfo.h" #include "intl_error.h" #include "collator/collator_class.h" #include "collator/collator.h" @@ -76,6 +75,8 @@ #include "php_ini.h" +#include "php_intl_arginfo.h" + /* * locale_get_default has a conflict since ICU also has * a function with the same name @@ -148,17 +149,10 @@ PHP_MINIT_FUNCTION( intl ) /* For the default locale php.ini setting */ REGISTER_INI_ENTRIES(); - REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_PERSISTENT | CONST_CS); - REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_PERSISTENT | CONST_CS); -#ifdef U_ICU_DATA_VERSION - REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_PERSISTENT | CONST_CS); -#endif - - /* Register 'Collator' PHP class */ - collator_register_Collator_class( ); + register_php_intl_symbols(module_number); - /* Expose Collator constants to PHP scripts */ - collator_register_constants( INIT_FUNC_ARGS_PASSTHRU ); + /* Register collator symbols and classes */ + collator_register_Collator_symbols(module_number); /* Register 'NumberFormatter' PHP class */ formatter_register_class( ); diff --git a/ext/intl/php_intl.stub.php b/ext/intl/php_intl.stub.php index 7ed23ee3946f..5d1dd192a3e9 100644 --- a/ext/intl/php_intl.stub.php +++ b/ext/intl/php_intl.stub.php @@ -2,6 +2,24 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue INTL_MAX_LOCALE_LEN + */ +const INTL_MAX_LOCALE_LEN = UNKNOWN; +/** + * @var string + * @cvalue U_ICU_VERSION + */ +const INTL_ICU_VERSION = UNKNOWN; +#ifdef U_ICU_DATA_VERSION +/** + * @var string + * @cvalue U_ICU_DATA_VERSION + */ +const INTL_ICU_DATA_VERSION = UNKNOWN; +#endif + class IntlException extends Exception { } diff --git a/ext/intl/php_intl_arginfo.h b/ext/intl/php_intl_arginfo.h index 443341941ac7..bbdbb23b300a 100644 --- a/ext/intl/php_intl_arginfo.h +++ b/ext/intl/php_intl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 09aa0aa66c78b86c0e6e0e554c3ebe205a0e5f59 */ + * Stub hash: 00c129ef1fe3ff8227fd6926f8702e05582a33a8 */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_intlcal_create_instance, 0, 0, IntlCalendar, 1) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, timezone, "null") @@ -1171,6 +1171,15 @@ static const zend_function_entry class_IntlException_methods[] = { ZEND_FE_END }; +static void register_php_intl_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_CS | CONST_PERSISTENT); +#if defined(U_ICU_DATA_VERSION) + REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_CS | CONST_PERSISTENT); +#endif +} + static zend_class_entry *register_class_IntlException(zend_class_entry *class_entry_Exception) { zend_class_entry ce, *class_entry;