Return to php_intl.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / intl |
1.1 ! misho 1: /* ! 2: +----------------------------------------------------------------------+ ! 3: | PHP Version 5 | ! 4: +----------------------------------------------------------------------+ ! 5: | This source file is subject to version 3.01 of the PHP license, | ! 6: | that is bundled with this package in the file LICENSE, and is | ! 7: | available through the world-wide-web at the following url: | ! 8: | http://www.php.net/license/3_01.txt | ! 9: | If you did not receive a copy of the PHP license and are unable to | ! 10: | obtain it through the world-wide-web, please send a note to | ! 11: | license@php.net so we can mail you a copy immediately. | ! 12: +----------------------------------------------------------------------+ ! 13: | Authors: Vadim Savchuk <vsavchuk@productengine.com> | ! 14: | Dmitry Lakhtyuk <dlakhtyuk@productengine.com> | ! 15: | Stanislav Malyshev <stas@zend.com> | ! 16: | Kirti Velankar <kirtig@yahoo-inc.com> | ! 17: +----------------------------------------------------------------------+ ! 18: */ ! 19: ! 20: #ifdef HAVE_CONFIG_H ! 21: #include "config.h" ! 22: #endif ! 23: ! 24: ! 25: #include "php_intl.h" ! 26: #include "intl_error.h" ! 27: #include "collator/collator_class.h" ! 28: #include "collator/collator.h" ! 29: #include "collator/collator_attr.h" ! 30: #include "collator/collator_compare.h" ! 31: #include "collator/collator_sort.h" ! 32: #include "collator/collator_convert.h" ! 33: #include "collator/collator_locale.h" ! 34: #include "collator/collator_create.h" ! 35: #include "collator/collator_error.h" ! 36: ! 37: #include "formatter/formatter.h" ! 38: #include "formatter/formatter_class.h" ! 39: #include "formatter/formatter_attr.h" ! 40: #include "formatter/formatter_format.h" ! 41: #include "formatter/formatter_main.h" ! 42: #include "formatter/formatter_parse.h" ! 43: ! 44: #include "msgformat/msgformat.h" ! 45: #include "msgformat/msgformat_class.h" ! 46: #include "msgformat/msgformat_attr.h" ! 47: #include "msgformat/msgformat_format.h" ! 48: #include "msgformat/msgformat_parse.h" ! 49: ! 50: #include "normalizer/normalizer.h" ! 51: #include "normalizer/normalizer_class.h" ! 52: #include "normalizer/normalizer_normalize.h" ! 53: ! 54: #include "locale/locale.h" ! 55: #include "locale/locale_class.h" ! 56: #include "locale/locale_methods.h" ! 57: ! 58: #include "dateformat/dateformat.h" ! 59: #include "dateformat/dateformat_class.h" ! 60: #include "dateformat/dateformat_attr.h" ! 61: #include "dateformat/dateformat_format.h" ! 62: #include "dateformat/dateformat_parse.h" ! 63: #include "dateformat/dateformat_data.h" ! 64: ! 65: #include "resourcebundle/resourcebundle_class.h" ! 66: ! 67: #include "idn/idn.h" ! 68: ! 69: #include "msgformat/msgformat.h" ! 70: #include "common/common_error.h" ! 71: ! 72: #include <unicode/uloc.h> ! 73: #include <ext/standard/info.h> ! 74: ! 75: #include "php_ini.h" ! 76: #define INTL_MODULE_VERSION PHP_INTL_VERSION ! 77: ! 78: /* ! 79: * locale_get_default has a conflict since ICU also has ! 80: * a function with the same name ! 81: * in fact ICU appends the version no. to it also ! 82: * Hence the following undef for ICU version ! 83: * Same true for the locale_set_default function ! 84: */ ! 85: #undef locale_get_default ! 86: #undef locale_set_default ! 87: ! 88: ZEND_DECLARE_MODULE_GLOBALS( intl ) ! 89: ! 90: /* {{{ Arguments info */ ! 91: ZEND_BEGIN_ARG_INFO_EX(collator_static_0_args, 0, 0, 0) ! 92: ZEND_END_ARG_INFO() ! 93: ! 94: ZEND_BEGIN_ARG_INFO_EX(collator_static_1_arg, 0, 0, 1) ! 95: ZEND_ARG_INFO(0, arg1) ! 96: ZEND_END_ARG_INFO() ! 97: ! 98: ZEND_BEGIN_ARG_INFO_EX(collator_static_2_args, 0, 0, 2) ! 99: ZEND_ARG_INFO(0, arg1) ! 100: ZEND_ARG_INFO(0, arg2) ! 101: ZEND_END_ARG_INFO() ! 102: ! 103: ZEND_BEGIN_ARG_INFO_EX(collator_0_args, 0, 0, 1) ! 104: ZEND_ARG_OBJ_INFO(0, object, Collator, 0) ! 105: ZEND_END_ARG_INFO() ! 106: ! 107: ZEND_BEGIN_ARG_INFO_EX(collator_1_arg, 0, 0, 2) ! 108: ZEND_ARG_OBJ_INFO(0, object, Collator, 0) ! 109: ZEND_ARG_INFO(0, arg1) ! 110: ZEND_END_ARG_INFO() ! 111: ! 112: ZEND_BEGIN_ARG_INFO_EX(collator_2_args, 0, 0, 3) ! 113: ZEND_ARG_OBJ_INFO(0, object, Collator, 0) ! 114: ZEND_ARG_INFO(0, arg1) ! 115: ZEND_ARG_INFO(0, arg2) ! 116: ZEND_END_ARG_INFO() ! 117: ! 118: ZEND_BEGIN_ARG_INFO_EX(collator_sort_args, 0, 0, 2) ! 119: ZEND_ARG_OBJ_INFO(0, object, Collator, 0) ! 120: ZEND_ARG_ARRAY_INFO(1, arr, 0) ! 121: ZEND_ARG_INFO(0, sort_flags) ! 122: ZEND_END_ARG_INFO() ! 123: ! 124: ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_arginfo, 0, 0, 2) ! 125: ZEND_ARG_INFO(0, formatter) ! 126: ZEND_ARG_INFO(0, string) ! 127: ZEND_ARG_INFO(0, type) ! 128: ZEND_ARG_INFO(1, position) ! 129: ZEND_END_ARG_INFO() ! 130: ! 131: ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_currency_arginfo, 0, 0, 3) ! 132: ZEND_ARG_INFO(0, formatter) ! 133: ZEND_ARG_INFO(0, string) ! 134: ZEND_ARG_INFO(1, currency) ! 135: ZEND_ARG_INFO(1, position) ! 136: ZEND_END_ARG_INFO() ! 137: ! 138: ZEND_BEGIN_ARG_INFO_EX(locale_0_args, 0, 0, 0) ! 139: ZEND_END_ARG_INFO() ! 140: ! 141: ZEND_BEGIN_ARG_INFO_EX(locale_1_arg, 0, 0, 1) ! 142: ZEND_ARG_INFO(0, arg1) ! 143: ZEND_END_ARG_INFO() ! 144: ! 145: ZEND_BEGIN_ARG_INFO_EX(locale_2_args, 0, 0, 2) ! 146: ZEND_ARG_INFO(0, arg1) ! 147: ZEND_ARG_INFO(0, arg2) ! 148: ZEND_END_ARG_INFO() ! 149: ! 150: ZEND_BEGIN_ARG_INFO_EX(locale_3_args, 0, 0, 3) ! 151: ZEND_ARG_INFO(0, arg1) ! 152: ZEND_ARG_INFO(0, arg2) ! 153: ZEND_ARG_INFO(0, arg3) ! 154: ZEND_END_ARG_INFO() ! 155: ! 156: ZEND_BEGIN_ARG_INFO_EX(locale_4_args, 0, 0, 4) ! 157: ZEND_ARG_INFO(0, arg1) ! 158: ZEND_ARG_INFO(0, arg2) ! 159: ZEND_ARG_INFO(0, arg3) ! 160: ZEND_ARG_INFO(0, arg4) ! 161: ZEND_END_ARG_INFO() ! 162: ! 163: #define intl_0_args collator_static_0_args ! 164: #define intl_1_arg collator_static_1_arg ! 165: ! 166: ZEND_BEGIN_ARG_INFO_EX(normalizer_args, 0, 0, 1) ! 167: ZEND_ARG_INFO(0, input) ! 168: ZEND_ARG_INFO(0, form) ! 169: ZEND_END_ARG_INFO() ! 170: ! 171: ZEND_BEGIN_ARG_INFO_EX(grapheme_1_arg, 0, 0, 1) ! 172: ZEND_ARG_INFO(0, string) ! 173: ZEND_END_ARG_INFO() ! 174: ! 175: ZEND_BEGIN_ARG_INFO_EX(grapheme_search_args, 0, 0, 2) ! 176: ZEND_ARG_INFO(0, haystack) ! 177: ZEND_ARG_INFO(0, needle) ! 178: ZEND_ARG_INFO(0, offset) ! 179: ZEND_END_ARG_INFO() ! 180: ! 181: ZEND_BEGIN_ARG_INFO_EX(grapheme_substr_args, 0, 0, 2) ! 182: ZEND_ARG_INFO(0, string) ! 183: ZEND_ARG_INFO(0, start) ! 184: ZEND_ARG_INFO(0, length) ! 185: ZEND_END_ARG_INFO() ! 186: ! 187: ZEND_BEGIN_ARG_INFO_EX(grapheme_strstr_args, 0, 0, 2) ! 188: ZEND_ARG_INFO(0, haystack) ! 189: ZEND_ARG_INFO(0, needle) ! 190: ZEND_ARG_INFO(0, before_needle) ! 191: ZEND_END_ARG_INFO() ! 192: ! 193: ZEND_BEGIN_ARG_INFO_EX(grapheme_extract_args, 0, 0, 2) ! 194: ZEND_ARG_INFO(0, arg1) ! 195: ZEND_ARG_INFO(0, arg2) ! 196: ZEND_ARG_INFO(0, arg3) ! 197: ZEND_ARG_INFO(0, arg4) ! 198: ZEND_ARG_INFO(1, arg5) /* 1 = pass by reference */ ! 199: ZEND_END_ARG_INFO() ! 200: ! 201: ZEND_BEGIN_ARG_INFO_EX(datefmt_parse_args, 0, 0, 2) ! 202: ZEND_ARG_INFO(0, formatter) ! 203: ZEND_ARG_INFO(0, string) ! 204: ZEND_ARG_INFO(1, position) ! 205: ZEND_END_ARG_INFO() ! 206: ! 207: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_create, 0, 0, 2) ! 208: ZEND_ARG_INFO(0, locale) ! 209: ZEND_ARG_INFO(0, style) ! 210: ZEND_ARG_INFO(0, pattern) ! 211: ZEND_END_ARG_INFO() ! 212: ! 213: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_error_code, 0, 0, 1) ! 214: ZEND_ARG_INFO(0, nf) ! 215: ZEND_END_ARG_INFO() ! 216: ! 217: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format, 0, 0, 2) ! 218: ZEND_ARG_INFO(0, nf) ! 219: ZEND_ARG_INFO(0, num) ! 220: ZEND_ARG_INFO(0, type) ! 221: ZEND_END_ARG_INFO() ! 222: ! 223: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format_currency, 0, 0, 3) ! 224: ZEND_ARG_INFO(0, nf) ! 225: ZEND_ARG_INFO(0, num) ! 226: ZEND_ARG_INFO(0, currency) ! 227: ZEND_END_ARG_INFO() ! 228: ! 229: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_attribute, 0, 0, 2) ! 230: ZEND_ARG_INFO(0, nf) ! 231: ZEND_ARG_INFO(0, attr) ! 232: ZEND_END_ARG_INFO() ! 233: ! 234: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_attribute, 0, 0, 3) ! 235: ZEND_ARG_INFO(0, nf) ! 236: ZEND_ARG_INFO(0, attr) ! 237: ZEND_ARG_INFO(0, value) ! 238: ZEND_END_ARG_INFO() ! 239: ! 240: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_symbol, 0, 0, 3) ! 241: ZEND_ARG_INFO(0, nf) ! 242: ZEND_ARG_INFO(0, attr) ! 243: ZEND_ARG_INFO(0, symbol) ! 244: ZEND_END_ARG_INFO() ! 245: ! 246: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_pattern, 0, 0, 2) ! 247: ZEND_ARG_INFO(0, nf) ! 248: ZEND_ARG_INFO(0, pattern) ! 249: ZEND_END_ARG_INFO() ! 250: ! 251: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_locale, 0, 0, 1) ! 252: ZEND_ARG_INFO(0, nf) ! 253: ZEND_ARG_INFO(0, type) ! 254: ZEND_END_ARG_INFO() ! 255: ! 256: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_create, 0, 0, 2) ! 257: ZEND_ARG_INFO(0, locale) ! 258: ZEND_ARG_INFO(0, pattern) ! 259: ZEND_END_ARG_INFO() ! 260: ! 261: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_code, 0, 0, 1) ! 262: ZEND_ARG_INFO(0, nf) ! 263: ZEND_END_ARG_INFO() ! 264: ! 265: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_message, 0, 0, 1) ! 266: ZEND_ARG_INFO(0, coll) ! 267: ZEND_END_ARG_INFO() ! 268: ! 269: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format, 0, 0, 2) ! 270: ZEND_ARG_INFO(0, nf) ! 271: ZEND_ARG_INFO(0, args) ! 272: ZEND_END_ARG_INFO() ! 273: ! 274: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format_message, 0, 0, 3) ! 275: ZEND_ARG_INFO(0, locale) ! 276: ZEND_ARG_INFO(0, pattern) ! 277: ZEND_ARG_INFO(0, args) ! 278: ZEND_END_ARG_INFO() ! 279: ! 280: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_parse, 0, 0, 2) ! 281: ZEND_ARG_INFO(0, nf) ! 282: ZEND_ARG_INFO(0, source) ! 283: ZEND_END_ARG_INFO() ! 284: ! 285: ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_parse_message, 0, 0, 3) ! 286: ZEND_ARG_INFO(0, locale) ! 287: ZEND_ARG_INFO(0, pattern) ! 288: ZEND_ARG_INFO(0, source) ! 289: ZEND_END_ARG_INFO() ! 290: ! 291: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_set_pattern, 0, 0, 2) ! 292: ZEND_ARG_INFO(0, mf) ! 293: ZEND_ARG_INFO(0, pattern) ! 294: ZEND_END_ARG_INFO() ! 295: ! 296: ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_locale, 0, 0, 1) ! 297: ZEND_ARG_INFO(0, mf) ! 298: ZEND_END_ARG_INFO() ! 299: ! 300: ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_pattern, 0, 0, 2) ! 301: ZEND_ARG_INFO(0, mf) ! 302: ZEND_ARG_INFO(0, pattern) ! 303: ZEND_END_ARG_INFO() ! 304: ! 305: ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_calendar, 0, 0, 2) ! 306: ZEND_ARG_INFO(0, mf) ! 307: ZEND_ARG_INFO(0, calendar) ! 308: ZEND_END_ARG_INFO() ! 309: ! 310: ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_format, 0, 0, 0) ! 311: ZEND_ARG_INFO(0, args) ! 312: ZEND_ARG_INFO(0, array) ! 313: ZEND_END_ARG_INFO() ! 314: ! 315: ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_create, 0, 0, 3) ! 316: ZEND_ARG_INFO(0, locale) ! 317: ZEND_ARG_INFO(0, date_type) ! 318: ZEND_ARG_INFO(0, time_type) ! 319: ZEND_ARG_INFO(0, timezone_str) ! 320: ZEND_ARG_INFO(0, calendar) ! 321: ZEND_ARG_INFO(0, pattern) ! 322: ZEND_END_ARG_INFO() ! 323: ! 324: ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_ascii, 0, 0, 1) ! 325: ZEND_ARG_INFO(0, domain) ! 326: ZEND_ARG_INFO(0, option) ! 327: ZEND_ARG_INFO(0, status) ! 328: ZEND_END_ARG_INFO() ! 329: ! 330: ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_utf8, 0, 0, 1) ! 331: ZEND_ARG_INFO(0, domain) ! 332: ZEND_ARG_INFO(0, option) ! 333: ZEND_ARG_INFO(0, status) ! 334: ZEND_END_ARG_INFO() ! 335: ! 336: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_create_proc, 0, 0, 2 ) ! 337: ZEND_ARG_INFO( 0, locale ) ! 338: ZEND_ARG_INFO( 0, bundlename ) ! 339: ZEND_ARG_INFO( 0, fallback ) ! 340: ZEND_END_ARG_INFO() ! 341: ! 342: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_proc, 0, 0, 2 ) ! 343: ZEND_ARG_INFO( 0, bundle ) ! 344: ZEND_ARG_INFO( 0, index ) ! 345: ZEND_ARG_INFO( 0, fallback ) ! 346: ZEND_END_ARG_INFO() ! 347: ! 348: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_count_proc, 0, 0, 1 ) ! 349: ZEND_ARG_INFO( 0, bundle ) ! 350: ZEND_END_ARG_INFO() ! 351: ! 352: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_locales_proc, 0, 0, 1 ) ! 353: ZEND_ARG_INFO( 0, bundlename ) ! 354: ZEND_END_ARG_INFO() ! 355: ! 356: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_code_proc, 0, 0, 1 ) ! 357: ZEND_ARG_INFO( 0, bundle ) ! 358: ZEND_END_ARG_INFO() ! 359: ! 360: ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_message_proc, 0, 0, 1 ) ! 361: ZEND_ARG_INFO( 0, bundle ) ! 362: ZEND_END_ARG_INFO() ! 363: ! 364: ! 365: /* }}} */ ! 366: ! 367: /* {{{ intl_functions ! 368: * ! 369: * Every user visible function must have an entry in intl_functions[]. ! 370: */ ! 371: zend_function_entry intl_functions[] = { ! 372: ! 373: /* collator functions */ ! 374: PHP_FE( collator_create, collator_static_1_arg ) ! 375: PHP_FE( collator_compare, collator_2_args ) ! 376: PHP_FE( collator_get_attribute, collator_1_arg ) ! 377: PHP_FE( collator_set_attribute, collator_2_args ) ! 378: PHP_FE( collator_get_strength, collator_0_args ) ! 379: PHP_FE( collator_set_strength, collator_1_arg ) ! 380: PHP_FE( collator_sort, collator_sort_args ) ! 381: PHP_FE( collator_sort_with_sort_keys, collator_sort_args ) ! 382: PHP_FE( collator_asort, collator_sort_args ) ! 383: PHP_FE( collator_get_locale, collator_1_arg ) ! 384: PHP_FE( collator_get_error_code, collator_0_args ) ! 385: PHP_FE( collator_get_error_message, collator_0_args ) ! 386: PHP_FE( collator_get_sort_key, collator_2_args ) ! 387: ! 388: /* formatter functions */ ! 389: PHP_FE( numfmt_create, arginfo_numfmt_create ) ! 390: PHP_FE( numfmt_format, arginfo_numfmt_format ) ! 391: PHP_FE( numfmt_parse, numfmt_parse_arginfo ) ! 392: PHP_FE( numfmt_format_currency, arginfo_numfmt_format_currency ) ! 393: PHP_FE( numfmt_parse_currency, numfmt_parse_currency_arginfo ) ! 394: PHP_FE( numfmt_set_attribute, arginfo_numfmt_set_attribute ) ! 395: PHP_FE( numfmt_get_attribute, arginfo_numfmt_get_attribute ) ! 396: PHP_FE( numfmt_set_text_attribute, arginfo_numfmt_set_attribute ) ! 397: PHP_FE( numfmt_get_text_attribute, arginfo_numfmt_get_attribute ) ! 398: PHP_FE( numfmt_set_symbol, arginfo_numfmt_set_symbol ) ! 399: PHP_FE( numfmt_get_symbol, arginfo_numfmt_get_attribute ) ! 400: PHP_FE( numfmt_set_pattern, arginfo_numfmt_set_pattern ) ! 401: PHP_FE( numfmt_get_pattern, arginfo_numfmt_get_error_code ) ! 402: PHP_FE( numfmt_get_locale, arginfo_numfmt_get_locale ) ! 403: PHP_FE( numfmt_get_error_code, arginfo_numfmt_get_error_code ) ! 404: PHP_FE( numfmt_get_error_message, arginfo_numfmt_get_error_code ) ! 405: ! 406: /* normalizer functions */ ! 407: PHP_FE( normalizer_normalize, normalizer_args ) ! 408: PHP_FE( normalizer_is_normalized, normalizer_args ) ! 409: ! 410: /* Locale functions */ ! 411: PHP_NAMED_FE( locale_get_default, zif_locale_get_default, locale_0_args ) ! 412: PHP_NAMED_FE( locale_set_default, zif_locale_set_default, locale_1_arg ) ! 413: PHP_FE( locale_get_primary_language, locale_1_arg ) ! 414: PHP_FE( locale_get_script, locale_1_arg ) ! 415: PHP_FE( locale_get_region, locale_1_arg ) ! 416: PHP_FE( locale_get_keywords, locale_1_arg ) ! 417: PHP_FE( locale_get_display_script, locale_2_args ) ! 418: PHP_FE( locale_get_display_region, locale_2_args ) ! 419: PHP_FE( locale_get_display_name, locale_2_args ) ! 420: PHP_FE( locale_get_display_language, locale_2_args) ! 421: PHP_FE( locale_get_display_variant, locale_2_args ) ! 422: PHP_FE( locale_compose, locale_1_arg ) ! 423: PHP_FE( locale_parse, locale_1_arg ) ! 424: PHP_FE( locale_get_all_variants, locale_1_arg ) ! 425: PHP_FE( locale_filter_matches, locale_3_args ) ! 426: PHP_FE( locale_canonicalize, locale_1_arg ) ! 427: PHP_FE( locale_lookup, locale_4_args ) ! 428: PHP_FE( locale_accept_from_http, locale_1_arg ) ! 429: ! 430: /* MessageFormatter functions */ ! 431: PHP_FE( msgfmt_create, arginfo_msgfmt_create ) ! 432: PHP_FE( msgfmt_format, arginfo_msgfmt_format ) ! 433: PHP_FE( msgfmt_format_message, arginfo_msgfmt_format_message ) ! 434: PHP_FE( msgfmt_parse, arginfo_msgfmt_parse ) ! 435: PHP_FE( msgfmt_parse_message, arginfo_numfmt_parse_message ) ! 436: PHP_FE( msgfmt_set_pattern, arginfo_msgfmt_set_pattern ) ! 437: PHP_FE( msgfmt_get_pattern, arginfo_msgfmt_get_locale ) ! 438: PHP_FE( msgfmt_get_locale, arginfo_msgfmt_get_locale ) ! 439: PHP_FE( msgfmt_get_error_code, arginfo_msgfmt_get_error_code ) ! 440: PHP_FE( msgfmt_get_error_message, arginfo_msgfmt_get_error_message ) ! 441: ! 442: /* IntlDateFormatter functions */ ! 443: PHP_FE( datefmt_create, arginfo_datefmt_create ) ! 444: PHP_FE( datefmt_get_datetype, arginfo_msgfmt_get_locale ) ! 445: PHP_FE( datefmt_get_timetype, arginfo_msgfmt_get_locale ) ! 446: PHP_FE( datefmt_get_calendar, arginfo_msgfmt_get_locale ) ! 447: PHP_FE( datefmt_set_calendar, arginfo_datefmt_set_calendar ) ! 448: PHP_FE( datefmt_get_locale, arginfo_msgfmt_get_locale ) ! 449: PHP_FE( datefmt_get_timezone_id, arginfo_msgfmt_get_locale ) ! 450: PHP_FE( datefmt_set_timezone_id, arginfo_msgfmt_get_locale ) ! 451: PHP_FE( datefmt_get_pattern, arginfo_msgfmt_get_locale ) ! 452: PHP_FE( datefmt_set_pattern, arginfo_datefmt_set_pattern ) ! 453: PHP_FE( datefmt_is_lenient, arginfo_msgfmt_get_locale ) ! 454: PHP_FE( datefmt_set_lenient, arginfo_msgfmt_get_locale ) ! 455: PHP_FE( datefmt_format, arginfo_datefmt_format ) ! 456: PHP_FE( datefmt_parse, datefmt_parse_args ) ! 457: PHP_FE( datefmt_localtime , datefmt_parse_args ) ! 458: PHP_FE( datefmt_get_error_code, arginfo_msgfmt_get_error_code ) ! 459: PHP_FE( datefmt_get_error_message, arginfo_msgfmt_get_error_message ) ! 460: ! 461: /* grapheme functions */ ! 462: PHP_FE( grapheme_strlen, grapheme_1_arg ) ! 463: PHP_FE( grapheme_strpos, grapheme_search_args ) ! 464: PHP_FE( grapheme_stripos, grapheme_search_args ) ! 465: PHP_FE( grapheme_strrpos, grapheme_search_args ) ! 466: PHP_FE( grapheme_strripos, grapheme_search_args ) ! 467: PHP_FE( grapheme_substr, grapheme_substr_args ) ! 468: PHP_FE( grapheme_strstr, grapheme_strstr_args ) ! 469: PHP_FE( grapheme_stristr, grapheme_strstr_args ) ! 470: PHP_FE( grapheme_extract, grapheme_extract_args ) ! 471: ! 472: /* IDN functions */ ! 473: PHP_FE( idn_to_ascii, arginfo_idn_to_ascii) ! 474: PHP_FE( idn_to_utf8, arginfo_idn_to_ascii) ! 475: ! 476: /* ResourceBundle functions */ ! 477: PHP_FE( resourcebundle_create, arginfo_resourcebundle_create_proc ) ! 478: PHP_FE( resourcebundle_get, arginfo_resourcebundle_get_proc ) ! 479: PHP_FE( resourcebundle_count, arginfo_resourcebundle_count_proc ) ! 480: PHP_FE( resourcebundle_locales, arginfo_resourcebundle_locales_proc ) ! 481: PHP_FE( resourcebundle_get_error_code, arginfo_resourcebundle_get_error_code_proc ) ! 482: PHP_FE( resourcebundle_get_error_message, arginfo_resourcebundle_get_error_message_proc ) ! 483: ! 484: /* common functions */ ! 485: PHP_FE( intl_get_error_code, intl_0_args ) ! 486: PHP_FE( intl_get_error_message, intl_0_args ) ! 487: PHP_FE( intl_is_failure, intl_1_arg ) ! 488: PHP_FE( intl_error_name, intl_1_arg ) ! 489: ! 490: PHP_FE_END ! 491: }; ! 492: /* }}} */ ! 493: ! 494: ! 495: /* {{{ INI Settings */ ! 496: PHP_INI_BEGIN() ! 497: STD_PHP_INI_ENTRY(LOCALE_INI_NAME, NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_locale, zend_intl_globals, intl_globals) ! 498: STD_PHP_INI_ENTRY("intl.error_level", "0", PHP_INI_ALL, OnUpdateLong, error_level, zend_intl_globals, intl_globals) ! 499: ! 500: PHP_INI_END() ! 501: /* }}} */ ! 502: ! 503: ! 504: static PHP_GINIT_FUNCTION(intl); ! 505: ! 506: /* {{{ intl_module_entry */ ! 507: zend_module_entry intl_module_entry = { ! 508: #if ZEND_MODULE_API_NO >= 20010901 ! 509: STANDARD_MODULE_HEADER, ! 510: #endif ! 511: "intl", ! 512: intl_functions, ! 513: PHP_MINIT( intl ), ! 514: PHP_MSHUTDOWN( intl ), ! 515: PHP_RINIT( intl ), ! 516: PHP_RSHUTDOWN( intl ), ! 517: PHP_MINFO( intl ), ! 518: INTL_MODULE_VERSION, ! 519: PHP_MODULE_GLOBALS(intl), /* globals descriptor */ ! 520: PHP_GINIT(intl), /* globals ctor */ ! 521: NULL, /* globals dtor */ ! 522: NULL, /* post deactivate */ ! 523: STANDARD_MODULE_PROPERTIES_EX ! 524: }; ! 525: /* }}} */ ! 526: ! 527: #ifdef COMPILE_DL_INTL ! 528: ZEND_GET_MODULE( intl ) ! 529: #endif ! 530: ! 531: /* {{{ intl_init_globals */ ! 532: static PHP_GINIT_FUNCTION(intl) ! 533: { ! 534: memset( intl_globals, 0, sizeof(zend_intl_globals) ); ! 535: } ! 536: /* }}} */ ! 537: ! 538: /* {{{ PHP_MINIT_FUNCTION ! 539: */ ! 540: PHP_MINIT_FUNCTION( intl ) ! 541: { ! 542: /* For the default locale php.ini setting */ ! 543: REGISTER_INI_ENTRIES(); ! 544: ! 545: REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_CS); ! 546: REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_PERSISTENT | CONST_CS); ! 547: #ifdef U_ICU_DATA_VERSION ! 548: REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_PERSISTENT | CONST_CS); ! 549: #endif ! 550: ! 551: /* Register 'Collator' PHP class */ ! 552: collator_register_Collator_class( TSRMLS_C ); ! 553: ! 554: /* Expose Collator constants to PHP scripts */ ! 555: collator_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 556: ! 557: /* Register 'NumberFormatter' PHP class */ ! 558: formatter_register_class( TSRMLS_C ); ! 559: ! 560: /* Expose NumberFormatter constants to PHP scripts */ ! 561: formatter_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 562: ! 563: /* Register 'Normalizer' PHP class */ ! 564: normalizer_register_Normalizer_class( TSRMLS_C ); ! 565: ! 566: /* Expose Normalizer constants to PHP scripts */ ! 567: normalizer_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 568: ! 569: /* Register 'Locale' PHP class */ ! 570: locale_register_Locale_class( TSRMLS_C ); ! 571: ! 572: /* Expose Locale constants to PHP scripts */ ! 573: locale_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 574: ! 575: msgformat_register_class(TSRMLS_C); ! 576: ! 577: grapheme_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 578: ! 579: /* Register 'DateFormat' PHP class */ ! 580: dateformat_register_IntlDateFormatter_class( TSRMLS_C ); ! 581: ! 582: /* Expose DateFormat constants to PHP scripts */ ! 583: dateformat_register_constants( INIT_FUNC_ARGS_PASSTHRU ); ! 584: ! 585: /* Register 'ResourceBundle' PHP class */ ! 586: resourcebundle_register_class( TSRMLS_C); ! 587: ! 588: /* Expose ICU error codes to PHP scripts. */ ! 589: intl_expose_icu_error_codes( INIT_FUNC_ARGS_PASSTHRU ); ! 590: ! 591: /* Expose IDN constants to PHP scripts. */ ! 592: idn_register_constants(INIT_FUNC_ARGS_PASSTHRU); ! 593: ! 594: /* Global error handling. */ ! 595: intl_error_init( NULL TSRMLS_CC ); ! 596: ! 597: /* Set the default_locale value */ ! 598: if( INTL_G(default_locale) == NULL ) { ! 599: INTL_G(default_locale) = pestrdup(uloc_getDefault(), 1) ; ! 600: } ! 601: ! 602: return SUCCESS; ! 603: } ! 604: /* }}} */ ! 605: ! 606: /* {{{ PHP_MSHUTDOWN_FUNCTION ! 607: */ ! 608: PHP_MSHUTDOWN_FUNCTION( intl ) ! 609: { ! 610: /* For the default locale php.ini setting */ ! 611: UNREGISTER_INI_ENTRIES(); ! 612: ! 613: return SUCCESS; ! 614: } ! 615: /* }}} */ ! 616: ! 617: /* {{{ PHP_RINIT_FUNCTION ! 618: */ ! 619: PHP_RINIT_FUNCTION( intl ) ! 620: { ! 621: /* Set the default_locale value */ ! 622: if( INTL_G(default_locale) == NULL ) { ! 623: INTL_G(default_locale) = pestrdup(uloc_getDefault(), 1) ; ! 624: } ! 625: return SUCCESS; ! 626: } ! 627: /* }}} */ ! 628: ! 629: /* {{{ PHP_RSHUTDOWN_FUNCTION ! 630: */ ! 631: PHP_RSHUTDOWN_FUNCTION( intl ) ! 632: { ! 633: if(INTL_G(current_collator)) { ! 634: INTL_G(current_collator) = NULL; ! 635: } ! 636: if (INTL_G(grapheme_iterator)) { ! 637: grapheme_close_global_iterator( TSRMLS_C ); ! 638: INTL_G(grapheme_iterator) = NULL; ! 639: } ! 640: ! 641: intl_error_reset( NULL TSRMLS_CC); ! 642: return SUCCESS; ! 643: } ! 644: /* }}} */ ! 645: ! 646: /* {{{ PHP_MINFO_FUNCTION ! 647: */ ! 648: PHP_MINFO_FUNCTION( intl ) ! 649: { ! 650: php_info_print_table_start(); ! 651: php_info_print_table_header( 2, "Internationalization support", "enabled" ); ! 652: php_info_print_table_row( 2, "version", INTL_MODULE_VERSION ); ! 653: php_info_print_table_row( 2, "ICU version", U_ICU_VERSION ); ! 654: #ifdef U_ICU_DATA_VERSION ! 655: php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION ); ! 656: #endif ! 657: php_info_print_table_end(); ! 658: ! 659: /* For the default locale php.ini setting */ ! 660: DISPLAY_INI_ENTRIES() ; ! 661: } ! 662: /* }}} */ ! 663: ! 664: /* ! 665: * Local variables: ! 666: * tab-width: 4 ! 667: * c-basic-offset: 4 ! 668: * End: ! 669: * vim600: noet sw=4 ts=4 fdm=marker ! 670: * vim<600: noet sw=4 ts=4 ! 671: */