root/ext/intl/php_intl.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ZEND_DECLARE_MODULE_GLOBALS
  2. ZEND_TSRMLS_CACHE_DEFINE
  3. PHP_MINIT_FUNCTION
  4. PHP_MSHUTDOWN_FUNCTION
  5. PHP_RINIT_FUNCTION
  6. PHP_RSHUTDOWN_FUNCTION
  7. PHP_MINFO_FUNCTION

   1 /*
   2    +----------------------------------------------------------------------+
   3    | PHP Version 7                                                        |
   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 "converter/converter.h"
  38 
  39 #include "formatter/formatter.h"
  40 #include "formatter/formatter_class.h"
  41 #include "formatter/formatter_attr.h"
  42 #include "formatter/formatter_format.h"
  43 #include "formatter/formatter_main.h"
  44 #include "formatter/formatter_parse.h"
  45 
  46 #include "grapheme/grapheme.h"
  47 
  48 #include "msgformat/msgformat.h"
  49 #include "msgformat/msgformat_class.h"
  50 #include "msgformat/msgformat_attr.h"
  51 #include "msgformat/msgformat_format.h"
  52 #include "msgformat/msgformat_parse.h"
  53 
  54 #include "normalizer/normalizer.h"
  55 #include "normalizer/normalizer_class.h"
  56 #include "normalizer/normalizer_normalize.h"
  57 
  58 #include "locale/locale.h"
  59 #include "locale/locale_class.h"
  60 #include "locale/locale_methods.h"
  61 
  62 #include "dateformat/dateformat.h"
  63 #include "dateformat/dateformat_class.h"
  64 #include "dateformat/dateformat_attr.h"
  65 #include "dateformat/dateformat_attrcpp.h"
  66 #include "dateformat/dateformat_format.h"
  67 #include "dateformat/dateformat_format_object.h"
  68 #include "dateformat/dateformat_parse.h"
  69 #include "dateformat/dateformat_data.h"
  70 
  71 #include "resourcebundle/resourcebundle_class.h"
  72 
  73 #include "transliterator/transliterator.h"
  74 #include "transliterator/transliterator_class.h"
  75 #include "transliterator/transliterator_methods.h"
  76 
  77 #include "timezone/timezone_class.h"
  78 #include "timezone/timezone_methods.h"
  79 
  80 #include "calendar/calendar_class.h"
  81 #include "calendar/calendar_methods.h"
  82 #include "calendar/gregoriancalendar_methods.h"
  83 
  84 #include "breakiterator/breakiterator_class.h"
  85 #include "breakiterator/breakiterator_iterators.h"
  86 
  87 #include "idn/idn.h"
  88 #include "uchar/uchar.h"
  89 
  90 #if U_ICU_VERSION_MAJOR_NUM * 1000 + U_ICU_VERSION_MINOR_NUM >= 4002
  91 # include "spoofchecker/spoofchecker_class.h"
  92 # include "spoofchecker/spoofchecker.h"
  93 # include "spoofchecker/spoofchecker_create.h"
  94 # include "spoofchecker/spoofchecker_main.h"
  95 #endif
  96 
  97 #include "msgformat/msgformat.h"
  98 #include "common/common_error.h"
  99 #include "common/common_enum.h"
 100 
 101 #include <unicode/uloc.h>
 102 #include <unicode/uclean.h>
 103 #include <ext/standard/info.h>
 104 
 105 #include "php_ini.h"
 106 #define INTL_MODULE_VERSION PHP_INTL_VERSION
 107 
 108 /*
 109  * locale_get_default has a conflict since ICU also has
 110  * a function with the same  name
 111  * in fact ICU appends the version no. to it also
 112  * Hence the following undef for ICU version
 113  * Same true for the locale_set_default function
 114 */
 115 #undef locale_get_default
 116 #undef locale_set_default
 117 
 118 ZEND_DECLARE_MODULE_GLOBALS( intl )
 119 
 120 const char *intl_locale_get_default( void )
 121 {
 122         if( INTL_G(default_locale) == NULL ) {
 123                 return uloc_getDefault();
 124         }
 125         return INTL_G(default_locale);
 126 }
 127 
 128 /* {{{ Arguments info */
 129 ZEND_BEGIN_ARG_INFO_EX(collator_static_0_args, 0, 0, 0)
 130 ZEND_END_ARG_INFO()
 131 
 132 ZEND_BEGIN_ARG_INFO_EX(collator_static_1_arg, 0, 0, 1)
 133         ZEND_ARG_INFO(0, arg1)
 134 ZEND_END_ARG_INFO()
 135 
 136 ZEND_BEGIN_ARG_INFO_EX(collator_static_2_args, 0, 0, 2)
 137         ZEND_ARG_INFO(0, arg1)
 138         ZEND_ARG_INFO(0, arg2)
 139 ZEND_END_ARG_INFO()
 140 
 141 ZEND_BEGIN_ARG_INFO_EX(collator_0_args, 0, 0, 1)
 142         ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
 143 ZEND_END_ARG_INFO()
 144 
 145 ZEND_BEGIN_ARG_INFO_EX(collator_1_arg, 0, 0, 2)
 146         ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
 147         ZEND_ARG_INFO(0, arg1)
 148 ZEND_END_ARG_INFO()
 149 
 150 ZEND_BEGIN_ARG_INFO_EX(collator_2_args, 0, 0, 3)
 151         ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
 152         ZEND_ARG_INFO(0, arg1)
 153         ZEND_ARG_INFO(0, arg2)
 154 ZEND_END_ARG_INFO()
 155 
 156 ZEND_BEGIN_ARG_INFO_EX(collator_sort_args, 0, 0, 2)
 157         ZEND_ARG_OBJ_INFO(0, object, Collator, 0)
 158         ZEND_ARG_ARRAY_INFO(1, arr, 0)
 159         ZEND_ARG_INFO(0, sort_flags)
 160 ZEND_END_ARG_INFO()
 161 
 162 ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_arginfo, 0, 0, 2)
 163         ZEND_ARG_INFO(0, formatter)
 164         ZEND_ARG_INFO(0, string)
 165         ZEND_ARG_INFO(0, type)
 166         ZEND_ARG_INFO(1, position)
 167 ZEND_END_ARG_INFO()
 168 
 169 ZEND_BEGIN_ARG_INFO_EX(numfmt_parse_currency_arginfo, 0, 0, 3)
 170         ZEND_ARG_INFO(0, formatter)
 171         ZEND_ARG_INFO(0, string)
 172         ZEND_ARG_INFO(1, currency)
 173         ZEND_ARG_INFO(1, position)
 174 ZEND_END_ARG_INFO()
 175 
 176 ZEND_BEGIN_ARG_INFO_EX(locale_0_args, 0, 0, 0)
 177 ZEND_END_ARG_INFO()
 178 
 179 ZEND_BEGIN_ARG_INFO_EX(locale_1_arg, 0, 0, 1)
 180         ZEND_ARG_INFO(0, arg1)
 181 ZEND_END_ARG_INFO()
 182 
 183 ZEND_BEGIN_ARG_INFO_EX(locale_2_args, 0, 0, 2)
 184         ZEND_ARG_INFO(0, arg1)
 185         ZEND_ARG_INFO(0, arg2)
 186 ZEND_END_ARG_INFO()
 187 
 188 ZEND_BEGIN_ARG_INFO_EX(locale_3_args, 0, 0, 3)
 189         ZEND_ARG_INFO(0, arg1)
 190         ZEND_ARG_INFO(0, arg2)
 191         ZEND_ARG_INFO(0, arg3)
 192 ZEND_END_ARG_INFO()
 193 
 194 ZEND_BEGIN_ARG_INFO_EX(locale_4_args, 0, 0, 4)
 195         ZEND_ARG_INFO(0, arg1)
 196         ZEND_ARG_INFO(0, arg2)
 197         ZEND_ARG_INFO(0, arg3)
 198         ZEND_ARG_INFO(0, arg4)
 199 ZEND_END_ARG_INFO()
 200 
 201 #define intl_0_args collator_static_0_args
 202 #define intl_1_arg collator_static_1_arg
 203 
 204 ZEND_BEGIN_ARG_INFO_EX(normalizer_args, 0, 0, 1)
 205         ZEND_ARG_INFO(0, input)
 206         ZEND_ARG_INFO(0, form)
 207 ZEND_END_ARG_INFO()
 208 
 209 ZEND_BEGIN_ARG_INFO_EX(grapheme_1_arg, 0, 0, 1)
 210         ZEND_ARG_INFO(0, string)
 211 ZEND_END_ARG_INFO()
 212 
 213 ZEND_BEGIN_ARG_INFO_EX(grapheme_search_args, 0, 0, 2)
 214         ZEND_ARG_INFO(0, haystack)
 215         ZEND_ARG_INFO(0, needle)
 216         ZEND_ARG_INFO(0, offset)
 217 ZEND_END_ARG_INFO()
 218 
 219 ZEND_BEGIN_ARG_INFO_EX(grapheme_substr_args, 0, 0, 2)
 220         ZEND_ARG_INFO(0, string)
 221         ZEND_ARG_INFO(0, start)
 222         ZEND_ARG_INFO(0, length)
 223 ZEND_END_ARG_INFO()
 224 
 225 ZEND_BEGIN_ARG_INFO_EX(grapheme_strstr_args, 0, 0, 2)
 226         ZEND_ARG_INFO(0, haystack)
 227         ZEND_ARG_INFO(0, needle)
 228         ZEND_ARG_INFO(0, before_needle)
 229 ZEND_END_ARG_INFO()
 230 
 231 ZEND_BEGIN_ARG_INFO_EX(grapheme_extract_args, 0, 0, 2)
 232         ZEND_ARG_INFO(0, arg1)
 233         ZEND_ARG_INFO(0, arg2)
 234         ZEND_ARG_INFO(0, arg3)
 235         ZEND_ARG_INFO(0, arg4)
 236         ZEND_ARG_INFO(1, arg5)  /* 1 = pass by reference */
 237 ZEND_END_ARG_INFO()
 238 
 239 ZEND_BEGIN_ARG_INFO_EX(datefmt_parse_args, 0, 0, 2)
 240         ZEND_ARG_INFO(0, formatter)
 241         ZEND_ARG_INFO(0, string)
 242         ZEND_ARG_INFO(1, position)
 243 ZEND_END_ARG_INFO()
 244 
 245 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_create, 0, 0, 2)
 246         ZEND_ARG_INFO(0, locale)
 247         ZEND_ARG_INFO(0, style)
 248         ZEND_ARG_INFO(0, pattern)
 249 ZEND_END_ARG_INFO()
 250 
 251 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_error_code, 0, 0, 1)
 252         ZEND_ARG_INFO(0, nf)
 253 ZEND_END_ARG_INFO()
 254 
 255 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format, 0, 0, 2)
 256         ZEND_ARG_INFO(0, nf)
 257         ZEND_ARG_INFO(0, num)
 258         ZEND_ARG_INFO(0, type)
 259 ZEND_END_ARG_INFO()
 260 
 261 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_format_currency, 0, 0, 3)
 262         ZEND_ARG_INFO(0, nf)
 263         ZEND_ARG_INFO(0, num)
 264         ZEND_ARG_INFO(0, currency)
 265 ZEND_END_ARG_INFO()
 266 
 267 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_attribute, 0, 0, 2)
 268         ZEND_ARG_INFO(0, nf)
 269         ZEND_ARG_INFO(0, attr)
 270 ZEND_END_ARG_INFO()
 271 
 272 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_attribute, 0, 0, 3)
 273         ZEND_ARG_INFO(0, nf)
 274         ZEND_ARG_INFO(0, attr)
 275         ZEND_ARG_INFO(0, value)
 276 ZEND_END_ARG_INFO()
 277 
 278 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_symbol, 0, 0, 3)
 279         ZEND_ARG_INFO(0, nf)
 280         ZEND_ARG_INFO(0, attr)
 281         ZEND_ARG_INFO(0, symbol)
 282 ZEND_END_ARG_INFO()
 283 
 284 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_set_pattern, 0, 0, 2)
 285         ZEND_ARG_INFO(0, nf)
 286         ZEND_ARG_INFO(0, pattern)
 287 ZEND_END_ARG_INFO()
 288 
 289 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_get_locale, 0, 0, 1)
 290         ZEND_ARG_INFO(0, nf)
 291         ZEND_ARG_INFO(0, type)
 292 ZEND_END_ARG_INFO()
 293 
 294 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_create, 0, 0, 2)
 295         ZEND_ARG_INFO(0, locale)
 296         ZEND_ARG_INFO(0, pattern)
 297 ZEND_END_ARG_INFO()
 298 
 299 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_code, 0, 0, 1)
 300         ZEND_ARG_INFO(0, nf)
 301 ZEND_END_ARG_INFO()
 302 
 303 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_error_message, 0, 0, 1)
 304         ZEND_ARG_INFO(0, coll)
 305 ZEND_END_ARG_INFO()
 306 
 307 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format, 0, 0, 2)
 308         ZEND_ARG_INFO(0, nf)
 309         ZEND_ARG_INFO(0, args)
 310 ZEND_END_ARG_INFO()
 311 
 312 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_format_message, 0, 0, 3)
 313         ZEND_ARG_INFO(0, locale)
 314         ZEND_ARG_INFO(0, pattern)
 315         ZEND_ARG_INFO(0, args)
 316 ZEND_END_ARG_INFO()
 317 
 318 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_parse, 0, 0, 2)
 319         ZEND_ARG_INFO(0, nf)
 320         ZEND_ARG_INFO(0, source)
 321 ZEND_END_ARG_INFO()
 322 
 323 ZEND_BEGIN_ARG_INFO_EX(arginfo_numfmt_parse_message, 0, 0, 3)
 324         ZEND_ARG_INFO(0, locale)
 325         ZEND_ARG_INFO(0, pattern)
 326         ZEND_ARG_INFO(0, source)
 327 ZEND_END_ARG_INFO()
 328 
 329 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_set_pattern, 0, 0, 2)
 330         ZEND_ARG_INFO(0, mf)
 331         ZEND_ARG_INFO(0, pattern)
 332 ZEND_END_ARG_INFO()
 333 
 334 ZEND_BEGIN_ARG_INFO_EX(arginfo_msgfmt_get_locale, 0, 0, 1)
 335         ZEND_ARG_INFO(0, mf)
 336 ZEND_END_ARG_INFO()
 337 
 338 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_pattern, 0, 0, 2)
 339         ZEND_ARG_INFO(0, mf)
 340         ZEND_ARG_INFO(0, pattern)
 341 ZEND_END_ARG_INFO()
 342 
 343 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_timezone, 0, 0, 2)
 344         ZEND_ARG_INFO(0, mf)
 345         ZEND_ARG_INFO(0, timezone)
 346 ZEND_END_ARG_INFO()
 347 
 348 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_set_calendar, 0, 0, 2)
 349         ZEND_ARG_INFO(0, mf)
 350         ZEND_ARG_INFO(0, calendar)
 351 ZEND_END_ARG_INFO()
 352 
 353 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_format, 0, 0, 0)
 354         ZEND_ARG_INFO(0, args)
 355         ZEND_ARG_INFO(0, array)
 356 ZEND_END_ARG_INFO()
 357 
 358 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_format_object, 0, 0, 1)
 359         ZEND_ARG_INFO(0, object)
 360         ZEND_ARG_INFO(0, format)
 361         ZEND_ARG_INFO(0, locale)
 362 ZEND_END_ARG_INFO()
 363 
 364 
 365 ZEND_BEGIN_ARG_INFO_EX(arginfo_datefmt_create, 0, 0, 3)
 366         ZEND_ARG_INFO(0, locale)
 367         ZEND_ARG_INFO(0, date_type)
 368         ZEND_ARG_INFO(0, time_type)
 369         ZEND_ARG_INFO(0, timezone_str)
 370         ZEND_ARG_INFO(0, calendar)
 371         ZEND_ARG_INFO(0, pattern)
 372 ZEND_END_ARG_INFO()
 373 
 374 ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_ascii, 0, 0, 1)
 375         ZEND_ARG_INFO(0, domain)
 376         ZEND_ARG_INFO(0, option)
 377         ZEND_ARG_INFO(0, variant)
 378         ZEND_ARG_INFO(1, idn_info)
 379 ZEND_END_ARG_INFO()
 380 
 381 ZEND_BEGIN_ARG_INFO_EX(arginfo_idn_to_utf8, 0, 0, 1)
 382         ZEND_ARG_INFO(0, domain)
 383         ZEND_ARG_INFO(0, option)
 384         ZEND_ARG_INFO(0, variant)
 385         ZEND_ARG_INFO(1, idn_info)
 386 ZEND_END_ARG_INFO()
 387 
 388 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_create_proc, 0, 0, 2 )
 389         ZEND_ARG_INFO( 0, locale )
 390         ZEND_ARG_INFO( 0, bundlename )
 391         ZEND_ARG_INFO( 0, fallback )
 392 ZEND_END_ARG_INFO()
 393 
 394 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_proc, 0, 0, 2 )
 395     ZEND_ARG_INFO( 0, bundle )
 396         ZEND_ARG_INFO( 0, index )
 397         ZEND_ARG_INFO( 0, fallback )
 398 ZEND_END_ARG_INFO()
 399 
 400 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_count_proc, 0, 0, 1 )
 401   ZEND_ARG_INFO( 0, bundle )
 402 ZEND_END_ARG_INFO()
 403 
 404 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_locales_proc, 0, 0, 1 )
 405         ZEND_ARG_INFO( 0, bundlename )
 406 ZEND_END_ARG_INFO()
 407 
 408 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_code_proc, 0, 0, 1 )
 409   ZEND_ARG_INFO( 0, bundle )
 410 ZEND_END_ARG_INFO()
 411 
 412 ZEND_BEGIN_ARG_INFO_EX( arginfo_resourcebundle_get_error_message_proc, 0, 0, 1 )
 413   ZEND_ARG_INFO( 0, bundle )
 414 ZEND_END_ARG_INFO()
 415 
 416 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_void, 0, 0, 0 )
 417 ZEND_END_ARG_INFO()
 418 
 419 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create, 0, 0, 1 )
 420         ZEND_ARG_INFO( 0, id )
 421         ZEND_ARG_INFO( 0, direction )
 422 ZEND_END_ARG_INFO()
 423 
 424 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_from_rules, 0, 0, 1 )
 425         ZEND_ARG_INFO( 0, rules )
 426         ZEND_ARG_INFO( 0, direction )
 427 ZEND_END_ARG_INFO()
 428 
 429 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_create_inverse, 0, 0, 1 )
 430         ZEND_ARG_OBJ_INFO( 0, orig_trans, Transliterator, 0 )
 431 ZEND_END_ARG_INFO()
 432 
 433 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_transliterate, 0, 0, 2 )
 434         ZEND_ARG_INFO( 0, trans )
 435         ZEND_ARG_INFO( 0, subject )
 436         ZEND_ARG_INFO( 0, start )
 437         ZEND_ARG_INFO( 0, end )
 438 ZEND_END_ARG_INFO()
 439 
 440 ZEND_BEGIN_ARG_INFO_EX( arginfo_transliterator_error, 0, 0, 1 )
 441         ZEND_ARG_OBJ_INFO( 0, trans, Transliterator, 0 )
 442 ZEND_END_ARG_INFO()
 443 
 444 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_idarg_static, 0, 0, 1 )
 445         ZEND_ARG_INFO( 0, zoneId )
 446 ZEND_END_ARG_INFO()
 447 
 448 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_from_date_time_zone, 0, 0, 1 )
 449         ZEND_ARG_OBJ_INFO( 0, dateTimeZone, DateTimeZone, 0 )
 450 ZEND_END_ARG_INFO()
 451 
 452 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_create_enumeration, 0, 0, 0 )
 453         ZEND_ARG_INFO( 0, countryOrRawOffset )
 454 ZEND_END_ARG_INFO()
 455 
 456 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_count_equivalent_ids, 0, 0, 1 )
 457         ZEND_ARG_INFO( 0, zoneId )
 458 ZEND_END_ARG_INFO()
 459 
 460 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_create_time_zone_id_enumeration, 0, 0, 1 )
 461         ZEND_ARG_INFO( 0, zoneType )
 462         ZEND_ARG_INFO( 0, region )
 463         ZEND_ARG_INFO( 0, rawOffset )
 464 ZEND_END_ARG_INFO()
 465 
 466 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_canonical_id, 0, 0, 1 )
 467         ZEND_ARG_INFO( 0, zoneId )
 468         ZEND_ARG_INFO( 1, isSystemID )
 469 ZEND_END_ARG_INFO()
 470 
 471 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_equivalent_id, 0, 0, 2 )
 472         ZEND_ARG_INFO( 0, zoneId )
 473         ZEND_ARG_INFO( 0, index )
 474 ZEND_END_ARG_INFO()
 475 
 476 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_offset, 0, 0, 5 )
 477         ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
 478         ZEND_ARG_INFO( 0, date )
 479         ZEND_ARG_INFO( 0, local )
 480         ZEND_ARG_INFO( 1, rawOffset )
 481         ZEND_ARG_INFO( 1, dstOffset )
 482 ZEND_END_ARG_INFO()
 483 
 484 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_has_same_rules, 0, 0, 1 )
 485         ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
 486         ZEND_ARG_OBJ_INFO( 0, otherTimeZone, IntlTimeZone, 0 )
 487 ZEND_END_ARG_INFO()
 488 
 489 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_get_display_name, 0, 0, 1 )
 490         ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
 491         ZEND_ARG_INFO( 0, isDaylight )
 492         ZEND_ARG_INFO( 0, style )
 493         ZEND_ARG_INFO( 0, locale )
 494 ZEND_END_ARG_INFO()
 495 
 496 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_only_tz, 0, 0, 1 )
 497         ZEND_ARG_OBJ_INFO( 0, timeZone, IntlTimeZone, 0 )
 498 ZEND_END_ARG_INFO()
 499 
 500 ZEND_BEGIN_ARG_INFO_EX( arginfo_tz_void, 0, 0, 0 )
 501 ZEND_END_ARG_INFO()
 502 
 503 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_create_instance, 0, 0, 0 )
 504         ZEND_ARG_INFO( 0, timeZone )
 505         ZEND_ARG_INFO( 0, locale )
 506 ZEND_END_ARG_INFO()
 507 
 508 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_only_cal, 0, 0, 1 )
 509         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 510 ZEND_END_ARG_INFO()
 511 
 512 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_void, 0, 0, 0 )
 513 ZEND_END_ARG_INFO()
 514 
 515 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_field, 0, 0, 2 )
 516         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 517         ZEND_ARG_INFO( 0, field )
 518 ZEND_END_ARG_INFO()
 519 
 520 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_dow, 0, 0, 2 )
 521         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 522         ZEND_ARG_INFO( 0, dayOfWeek )
 523 ZEND_END_ARG_INFO()
 524 
 525 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_other_cal, 0, 0, 2 )
 526         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 527         ZEND_ARG_OBJ_INFO( 0, otherCalendar, IntlCalendar, 0 )
 528 ZEND_END_ARG_INFO()
 529 
 530 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_date, 0, 0, 2 )
 531         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 532         ZEND_ARG_INFO( 0, date )
 533 ZEND_END_ARG_INFO()
 534 
 535 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_date_optional, 0, 0, 1 )
 536         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 537         ZEND_ARG_INFO( 0, date )
 538 ZEND_END_ARG_INFO()
 539 
 540 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_get_keyword_values_for_locale, 0, 0, 3)
 541         ZEND_ARG_INFO( 0, key )
 542         ZEND_ARG_INFO( 0, locale )
 543         ZEND_ARG_INFO( 0, commonlyUsed )
 544 ZEND_END_ARG_INFO()
 545 
 546 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_add, 0, 0, 3 )
 547         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 548         ZEND_ARG_INFO( 0, field )
 549         ZEND_ARG_INFO( 0, amount )
 550 ZEND_END_ARG_INFO()
 551 
 552 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_time_zone, 0, 0, 2 )
 553         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 554         ZEND_ARG_INFO( 0, timeZone )
 555 ZEND_END_ARG_INFO()
 556 
 557 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set, 0, 0, 3 )
 558         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 559         ZEND_ARG_INFO( 0, fieldOrYear )
 560         ZEND_ARG_INFO( 0, valueOrMonth )
 561         ZEND_ARG_INFO( 0, dayOfMonth )
 562         ZEND_ARG_INFO( 0, hour )
 563         ZEND_ARG_INFO( 0, minute )
 564         ZEND_ARG_INFO( 0, second )
 565 ZEND_END_ARG_INFO()
 566 
 567 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_roll, 0, 0, 2 )
 568         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 569         ZEND_ARG_INFO( 0, field )
 570         ZEND_ARG_INFO( 0, amountOrUpOrDown )
 571 ZEND_END_ARG_INFO()
 572 
 573 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_clear, 0, 0, 1 )
 574         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 575         ZEND_ARG_INFO( 0, field )
 576 ZEND_END_ARG_INFO()
 577 
 578 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_field_difference, 0, 0, 3 )
 579         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 580         ZEND_ARG_INFO( 0, when )
 581         ZEND_ARG_INFO( 0, field )
 582 ZEND_END_ARG_INFO()
 583 
 584 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_get_locale, 0, 0, 2 )
 585         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 586         ZEND_ARG_INFO( 0, localeType )
 587 ZEND_END_ARG_INFO()
 588 
 589 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_lenient, 0, 0, 2 )
 590         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 591         ZEND_ARG_INFO( 0, isLenient )
 592 ZEND_END_ARG_INFO()
 593 
 594 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_set_minimal_days_in_first_week, 0, 0, 2 )
 595         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 596         ZEND_ARG_INFO( 0, numberOfDays )
 597 ZEND_END_ARG_INFO()
 598 
 599 ZEND_BEGIN_ARG_INFO_EX(ainfo_cal_from_date_time, 0, 0, 1)
 600         ZEND_ARG_INFO(0, dateTime)
 601 ZEND_END_ARG_INFO()
 602 
 603 ZEND_BEGIN_ARG_INFO_EX( ainfo_cal_wall_time_option, 0, 0, 2 )
 604         ZEND_ARG_OBJ_INFO( 0, calendar, IntlCalendar, 0 )
 605         ZEND_ARG_INFO( 0, wallTimeOption )
 606 ZEND_END_ARG_INFO()
 607 
 608 /* Gregorian Calendar */
 609 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_create_instance, 0, 0, 0 )
 610         ZEND_ARG_INFO(0, timeZoneOrYear)
 611         ZEND_ARG_INFO(0, localeOrMonth)
 612         ZEND_ARG_INFO(0, dayOfMonth)
 613         ZEND_ARG_INFO(0, hour)
 614         ZEND_ARG_INFO(0, minute)
 615         ZEND_ARG_INFO(0, second)
 616 ZEND_END_ARG_INFO()
 617 
 618 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_is_leap_year, 0, 0, 2 )
 619         ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
 620         ZEND_ARG_INFO( 0, year )
 621 ZEND_END_ARG_INFO()
 622 
 623 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_only_gregcal, 0, 0, 1 )
 624         ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
 625 ZEND_END_ARG_INFO()
 626 
 627 ZEND_BEGIN_ARG_INFO_EX( ainfo_gregcal_set_gregorian_change, 0, 0, 2 )
 628         ZEND_ARG_OBJ_INFO( 0, calendar, IntlGregorianCalendar, 0 )
 629         ZEND_ARG_INFO( 0, date )
 630 ZEND_END_ARG_INFO()
 631 
 632 /* }}} */
 633 
 634 /* {{{ intl_functions
 635  *
 636  * Every user visible function must have an entry in intl_functions[].
 637  */
 638 zend_function_entry intl_functions[] = {
 639 
 640         /* collator functions */
 641         PHP_FE( collator_create, collator_static_1_arg )
 642         PHP_FE( collator_compare, collator_2_args )
 643         PHP_FE( collator_get_attribute, collator_1_arg )
 644         PHP_FE( collator_set_attribute, collator_2_args )
 645         PHP_FE( collator_get_strength, collator_0_args )
 646         PHP_FE( collator_set_strength, collator_1_arg )
 647         PHP_FE( collator_sort, collator_sort_args )
 648         PHP_FE( collator_sort_with_sort_keys, collator_sort_args )
 649         PHP_FE( collator_asort, collator_sort_args )
 650         PHP_FE( collator_get_locale, collator_1_arg )
 651         PHP_FE( collator_get_error_code, collator_0_args )
 652         PHP_FE( collator_get_error_message, collator_0_args )
 653         PHP_FE( collator_get_sort_key, collator_2_args )
 654 
 655         /* formatter functions */
 656         PHP_FE( numfmt_create, arginfo_numfmt_create )
 657         PHP_FE( numfmt_format, arginfo_numfmt_format )
 658         PHP_FE( numfmt_parse, numfmt_parse_arginfo )
 659         PHP_FE( numfmt_format_currency, arginfo_numfmt_format_currency )
 660         PHP_FE( numfmt_parse_currency, numfmt_parse_currency_arginfo )
 661         PHP_FE( numfmt_set_attribute, arginfo_numfmt_set_attribute )
 662         PHP_FE( numfmt_get_attribute, arginfo_numfmt_get_attribute )
 663         PHP_FE( numfmt_set_text_attribute, arginfo_numfmt_set_attribute )
 664         PHP_FE( numfmt_get_text_attribute, arginfo_numfmt_get_attribute )
 665         PHP_FE( numfmt_set_symbol, arginfo_numfmt_set_symbol )
 666         PHP_FE( numfmt_get_symbol, arginfo_numfmt_get_attribute )
 667         PHP_FE( numfmt_set_pattern, arginfo_numfmt_set_pattern )
 668         PHP_FE( numfmt_get_pattern, arginfo_numfmt_get_error_code )
 669         PHP_FE( numfmt_get_locale, arginfo_numfmt_get_locale )
 670         PHP_FE( numfmt_get_error_code, arginfo_numfmt_get_error_code )
 671         PHP_FE( numfmt_get_error_message, arginfo_numfmt_get_error_code )
 672 
 673         /* normalizer functions */
 674         PHP_FE( normalizer_normalize, normalizer_args )
 675         PHP_FE( normalizer_is_normalized, normalizer_args )
 676 
 677         /* Locale functions */
 678         PHP_NAMED_FE( locale_get_default, zif_locale_get_default, locale_0_args )
 679         PHP_NAMED_FE( locale_set_default, zif_locale_set_default, locale_1_arg )
 680         PHP_FE( locale_get_primary_language, locale_1_arg )
 681         PHP_FE( locale_get_script, locale_1_arg )
 682         PHP_FE( locale_get_region, locale_1_arg )
 683         PHP_FE( locale_get_keywords, locale_1_arg )
 684         PHP_FE( locale_get_display_script, locale_2_args )
 685         PHP_FE( locale_get_display_region, locale_2_args )
 686         PHP_FE( locale_get_display_name, locale_2_args )
 687         PHP_FE( locale_get_display_language, locale_2_args)
 688         PHP_FE( locale_get_display_variant, locale_2_args )
 689         PHP_FE( locale_compose, locale_1_arg )
 690         PHP_FE( locale_parse, locale_1_arg )
 691         PHP_FE( locale_get_all_variants, locale_1_arg )
 692         PHP_FE( locale_filter_matches, locale_3_args )
 693         PHP_FE( locale_canonicalize, locale_1_arg )
 694         PHP_FE( locale_lookup, locale_4_args )
 695         PHP_FE( locale_accept_from_http, locale_1_arg )
 696 
 697         /* MessageFormatter functions */
 698         PHP_FE( msgfmt_create, arginfo_msgfmt_create )
 699         PHP_FE( msgfmt_format, arginfo_msgfmt_format )
 700         PHP_FE( msgfmt_format_message, arginfo_msgfmt_format_message )
 701         PHP_FE( msgfmt_parse, arginfo_msgfmt_parse )
 702         PHP_FE( msgfmt_parse_message, arginfo_numfmt_parse_message )
 703         PHP_FE( msgfmt_set_pattern, arginfo_msgfmt_set_pattern )
 704         PHP_FE( msgfmt_get_pattern, arginfo_msgfmt_get_locale )
 705         PHP_FE( msgfmt_get_locale, arginfo_msgfmt_get_locale )
 706         PHP_FE( msgfmt_get_error_code, arginfo_msgfmt_get_error_code )
 707         PHP_FE( msgfmt_get_error_message, arginfo_msgfmt_get_error_message )
 708 
 709         /* IntlDateFormatter functions */
 710         PHP_FE( datefmt_create, arginfo_datefmt_create )
 711         PHP_FE( datefmt_get_datetype, arginfo_msgfmt_get_locale )
 712         PHP_FE( datefmt_get_timetype, arginfo_msgfmt_get_locale )
 713         PHP_FE( datefmt_get_calendar, arginfo_msgfmt_get_locale )
 714         PHP_FE( datefmt_get_calendar_object, arginfo_msgfmt_get_locale )
 715         PHP_FE( datefmt_set_calendar, arginfo_datefmt_set_calendar )
 716         PHP_FE( datefmt_get_locale, arginfo_msgfmt_get_locale )
 717         PHP_FE( datefmt_get_timezone_id, arginfo_msgfmt_get_locale )
 718         PHP_FE( datefmt_get_timezone, arginfo_msgfmt_get_locale )
 719         PHP_FE( datefmt_set_timezone, arginfo_datefmt_set_timezone )
 720         PHP_FE( datefmt_get_pattern, arginfo_msgfmt_get_locale )
 721         PHP_FE( datefmt_set_pattern, arginfo_datefmt_set_pattern )
 722         PHP_FE( datefmt_is_lenient, arginfo_msgfmt_get_locale )
 723         PHP_FE( datefmt_set_lenient, arginfo_msgfmt_get_locale )
 724         PHP_FE( datefmt_format, arginfo_datefmt_format )
 725         PHP_FE( datefmt_format_object, arginfo_datefmt_format_object )
 726         PHP_FE( datefmt_parse, datefmt_parse_args )
 727         PHP_FE( datefmt_localtime , datefmt_parse_args )
 728         PHP_FE( datefmt_get_error_code, arginfo_msgfmt_get_error_code )
 729         PHP_FE( datefmt_get_error_message, arginfo_msgfmt_get_error_message )
 730 
 731         /* grapheme functions */
 732         PHP_FE( grapheme_strlen, grapheme_1_arg )
 733         PHP_FE( grapheme_strpos, grapheme_search_args )
 734         PHP_FE( grapheme_stripos, grapheme_search_args )
 735         PHP_FE( grapheme_strrpos, grapheme_search_args )
 736         PHP_FE( grapheme_strripos, grapheme_search_args )
 737         PHP_FE( grapheme_substr, grapheme_substr_args )
 738         PHP_FE( grapheme_strstr, grapheme_strstr_args )
 739         PHP_FE( grapheme_stristr, grapheme_strstr_args )
 740         PHP_FE( grapheme_extract, grapheme_extract_args )
 741 
 742         /* IDN functions */
 743         PHP_FE( idn_to_ascii, arginfo_idn_to_ascii)
 744         PHP_FE( idn_to_utf8, arginfo_idn_to_ascii)
 745 
 746         /* ResourceBundle functions */
 747         PHP_FE( resourcebundle_create, arginfo_resourcebundle_create_proc )
 748         PHP_FE( resourcebundle_get, arginfo_resourcebundle_get_proc )
 749         PHP_FE( resourcebundle_count, arginfo_resourcebundle_count_proc )
 750         PHP_FE( resourcebundle_locales, arginfo_resourcebundle_locales_proc )
 751         PHP_FE( resourcebundle_get_error_code, arginfo_resourcebundle_get_error_code_proc )
 752         PHP_FE( resourcebundle_get_error_message, arginfo_resourcebundle_get_error_message_proc )
 753 
 754         /* Transliterator functions */
 755         PHP_FE( transliterator_create, arginfo_transliterator_create )
 756         PHP_FE( transliterator_create_from_rules, arginfo_transliterator_create_from_rules )
 757         PHP_FE( transliterator_list_ids, arginfo_transliterator_void )
 758         PHP_FE( transliterator_create_inverse, arginfo_transliterator_create_inverse)
 759         PHP_FE( transliterator_transliterate, arginfo_transliterator_transliterate )
 760         PHP_FE( transliterator_get_error_code, arginfo_transliterator_error )
 761         PHP_FE( transliterator_get_error_message, arginfo_transliterator_error )
 762 
 763         /* TimeZone functions */
 764         PHP_FE( intltz_create_time_zone, arginfo_tz_idarg_static )
 765         PHP_FE( intltz_from_date_time_zone, arginfo_tz_from_date_time_zone )
 766         PHP_FE( intltz_create_default, arginfo_tz_void )
 767         PHP_FE( intltz_get_id, arginfo_tz_only_tz )
 768         PHP_FE( intltz_get_gmt, arginfo_tz_void )
 769 #if U_ICU_VERSION_MAJOR_NUM >= 49
 770         PHP_FE( intltz_get_unknown, arginfo_tz_void )
 771 #endif
 772         PHP_FE( intltz_create_enumeration, arginfo_tz_create_enumeration )
 773         PHP_FE( intltz_count_equivalent_ids, arginfo_tz_idarg_static )
 774 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
 775         PHP_FE( intltz_create_time_zone_id_enumeration, arginfo_tz_create_time_zone_id_enumeration )
 776 #endif
 777         PHP_FE( intltz_get_canonical_id, arginfo_tz_get_canonical_id )
 778 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
 779         PHP_FE( intltz_get_region, arginfo_tz_idarg_static )
 780 #endif
 781         PHP_FE( intltz_get_tz_data_version, arginfo_tz_void )
 782         PHP_FE( intltz_get_equivalent_id, arginfo_tz_get_equivalent_id )
 783         PHP_FE( intltz_use_daylight_time, arginfo_tz_only_tz )
 784         PHP_FE( intltz_get_offset, arginfo_tz_get_offset )
 785         PHP_FE( intltz_get_raw_offset, arginfo_tz_only_tz )
 786         PHP_FE( intltz_has_same_rules, arginfo_tz_has_same_rules )
 787         PHP_FE( intltz_get_display_name, arginfo_tz_get_display_name )
 788         PHP_FE( intltz_get_dst_savings, arginfo_tz_only_tz )
 789         PHP_FE( intltz_to_date_time_zone, arginfo_tz_only_tz )
 790         PHP_FE( intltz_get_error_code, arginfo_tz_only_tz )
 791         PHP_FE( intltz_get_error_message, arginfo_tz_only_tz )
 792 
 793         PHP_FE( intlcal_create_instance, ainfo_cal_create_instance )
 794 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 42
 795         PHP_FE( intlcal_get_keyword_values_for_locale, ainfo_cal_get_keyword_values_for_locale )
 796 #endif
 797         PHP_FE( intlcal_get_now, ainfo_cal_void )
 798         PHP_FE( intlcal_get_available_locales, ainfo_cal_void )
 799         PHP_FE( intlcal_get, ainfo_cal_field )
 800         PHP_FE( intlcal_get_time, ainfo_cal_only_cal )
 801         PHP_FE( intlcal_set_time, ainfo_cal_date )
 802         PHP_FE( intlcal_add, ainfo_cal_add )
 803         PHP_FE( intlcal_set_time_zone, ainfo_cal_set_time_zone )
 804         PHP_FE( intlcal_after, ainfo_cal_other_cal )
 805         PHP_FE( intlcal_before, ainfo_cal_other_cal )
 806         PHP_FE( intlcal_set, ainfo_cal_set )
 807         PHP_FE( intlcal_roll, ainfo_cal_roll )
 808         PHP_FE( intlcal_clear, ainfo_cal_clear )
 809         PHP_FE( intlcal_field_difference, ainfo_cal_field_difference )
 810         PHP_FE( intlcal_get_actual_maximum, ainfo_cal_field )
 811         PHP_FE( intlcal_get_actual_minimum, ainfo_cal_field )
 812 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
 813         PHP_FE( intlcal_get_day_of_week_type, ainfo_cal_dow )
 814 #endif
 815         PHP_FE( intlcal_get_first_day_of_week, ainfo_cal_only_cal )
 816         PHP_FE( intlcal_get_greatest_minimum, ainfo_cal_field )
 817         PHP_FE( intlcal_get_least_maximum, ainfo_cal_field )
 818         PHP_FE( intlcal_get_locale, ainfo_cal_get_locale )
 819         PHP_FE( intlcal_get_maximum, ainfo_cal_field )
 820         PHP_FE( intlcal_get_minimal_days_in_first_week, ainfo_cal_only_cal )
 821         PHP_FE( intlcal_get_minimum, ainfo_cal_field )
 822         PHP_FE( intlcal_get_time_zone, ainfo_cal_only_cal )
 823         PHP_FE( intlcal_get_type, ainfo_cal_only_cal )
 824 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
 825         PHP_FE( intlcal_get_weekend_transition, ainfo_cal_dow )
 826 #endif
 827         PHP_FE( intlcal_in_daylight_time, ainfo_cal_only_cal )
 828         PHP_FE( intlcal_is_equivalent_to, ainfo_cal_other_cal )
 829         PHP_FE( intlcal_is_lenient, ainfo_cal_only_cal )
 830         PHP_FE( intlcal_is_set, ainfo_cal_field )
 831 #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 44
 832         PHP_FE( intlcal_is_weekend, ainfo_cal_date_optional )
 833 #endif
 834         PHP_FE( intlcal_set_first_day_of_week, ainfo_cal_dow )
 835         PHP_FE( intlcal_set_lenient, ainfo_cal_set_lenient )
 836         PHP_FE( intlcal_set_minimal_days_in_first_week, ainfo_cal_set_minimal_days_in_first_week )
 837         PHP_FE( intlcal_equals, ainfo_cal_other_cal )
 838         PHP_FE( intlcal_from_date_time, ainfo_cal_from_date_time )
 839         PHP_FE( intlcal_to_date_time, ainfo_cal_only_cal )
 840 #if U_ICU_VERSION_MAJOR_NUM >= 49
 841         PHP_FE( intlcal_get_repeated_wall_time_option, ainfo_cal_only_cal )
 842         PHP_FE( intlcal_get_skipped_wall_time_option, ainfo_cal_only_cal )
 843         PHP_FE( intlcal_set_repeated_wall_time_option, ainfo_cal_wall_time_option )
 844         PHP_FE( intlcal_set_skipped_wall_time_option, ainfo_cal_wall_time_option )
 845 #endif
 846         PHP_FE( intlcal_get_error_code, ainfo_cal_only_cal )
 847         PHP_FE( intlcal_get_error_message, ainfo_cal_only_cal )
 848 
 849         PHP_FE( intlgregcal_create_instance, ainfo_gregcal_create_instance )
 850         PHP_FE( intlgregcal_set_gregorian_change, ainfo_gregcal_set_gregorian_change )
 851         PHP_FE( intlgregcal_get_gregorian_change, ainfo_gregcal_only_gregcal )
 852         PHP_FE( intlgregcal_is_leap_year, ainfo_gregcal_is_leap_year )
 853 
 854         /* common functions */
 855         PHP_FE( intl_get_error_code, intl_0_args )
 856         PHP_FE( intl_get_error_message, intl_0_args )
 857         PHP_FE( intl_is_failure, intl_1_arg )
 858         PHP_FE( intl_error_name, intl_1_arg )
 859 
 860         PHP_FE_END
 861 };
 862 /* }}} */
 863 
 864 /* {{{ INI Settings */
 865 PHP_INI_BEGIN()
 866     STD_PHP_INI_ENTRY(LOCALE_INI_NAME, NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_locale, zend_intl_globals, intl_globals)
 867     STD_PHP_INI_ENTRY("intl.error_level", "0", PHP_INI_ALL, OnUpdateLong, error_level, zend_intl_globals, intl_globals)
 868         STD_PHP_INI_ENTRY("intl.use_exceptions", "0", PHP_INI_ALL, OnUpdateBool, use_exceptions, zend_intl_globals, intl_globals)
 869 PHP_INI_END()
 870 /* }}} */
 871 
 872 static PHP_GINIT_FUNCTION(intl);
 873 
 874 /* {{{ intl_module_entry */
 875 zend_module_entry intl_module_entry = {
 876         STANDARD_MODULE_HEADER,
 877         "intl",
 878         intl_functions,
 879         PHP_MINIT( intl ),
 880         PHP_MSHUTDOWN( intl ),
 881         PHP_RINIT( intl ),
 882         PHP_RSHUTDOWN( intl ),
 883         PHP_MINFO( intl ),
 884         INTL_MODULE_VERSION,
 885         PHP_MODULE_GLOBALS(intl),   /* globals descriptor */
 886         PHP_GINIT(intl),            /* globals ctor */
 887         NULL,                       /* globals dtor */
 888         NULL,                       /* post deactivate */
 889         STANDARD_MODULE_PROPERTIES_EX
 890 };
 891 /* }}} */
 892 
 893 #ifdef COMPILE_DL_INTL
 894 #ifdef ZTS
 895 ZEND_TSRMLS_CACHE_DEFINE()
 896 #endif
 897 ZEND_GET_MODULE( intl )
 898 #endif
 899 
 900 /* {{{ intl_init_globals */
 901 static PHP_GINIT_FUNCTION(intl)
 902 {
 903 #if defined(COMPILE_DL_INTL) && defined(ZTS)
 904         ZEND_TSRMLS_CACHE_UPDATE();
 905 #endif
 906         memset( intl_globals, 0, sizeof(zend_intl_globals) );
 907 }
 908 /* }}} */
 909 
 910 /* {{{ PHP_MINIT_FUNCTION
 911  */
 912 PHP_MINIT_FUNCTION( intl )
 913 {
 914         /* For the default locale php.ini setting */
 915         REGISTER_INI_ENTRIES();
 916 
 917         REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_PERSISTENT | CONST_CS);
 918         REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_PERSISTENT | CONST_CS);
 919 #ifdef U_ICU_DATA_VERSION
 920         REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_PERSISTENT | CONST_CS);
 921 #endif
 922 
 923         /* Register 'Collator' PHP class */
 924         collator_register_Collator_class(  );
 925 
 926         /* Expose Collator constants to PHP scripts */
 927         collator_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 928 
 929         /* Register 'NumberFormatter' PHP class */
 930         formatter_register_class(  );
 931 
 932         /* Expose NumberFormatter constants to PHP scripts */
 933         formatter_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 934 
 935         /* Register 'Normalizer' PHP class */
 936         normalizer_register_Normalizer_class(  );
 937 
 938         /* Expose Normalizer constants to PHP scripts */
 939         normalizer_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 940 
 941         /* Register 'Locale' PHP class */
 942         locale_register_Locale_class(  );
 943 
 944         /* Expose Locale constants to PHP scripts */
 945         locale_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 946 
 947         msgformat_register_class();
 948 
 949         grapheme_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 950 
 951         /* Register 'DateFormat' PHP class */
 952         dateformat_register_IntlDateFormatter_class(  );
 953 
 954         /* Expose DateFormat constants to PHP scripts */
 955         dateformat_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 956 
 957         /* Register 'ResourceBundle' PHP class */
 958         resourcebundle_register_class( );
 959 
 960         /* Register 'Transliterator' PHP class */
 961         transliterator_register_Transliterator_class(  );
 962 
 963         /* Register Transliterator constants */
 964         transliterator_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 965 
 966         /* Register 'IntlTimeZone' PHP class */
 967         timezone_register_IntlTimeZone_class(  );
 968 
 969         /* Register 'IntlCalendar' PHP class */
 970         calendar_register_IntlCalendar_class(  );
 971 
 972         /* Expose ICU error codes to PHP scripts. */
 973         intl_expose_icu_error_codes( INIT_FUNC_ARGS_PASSTHRU );
 974 
 975         /* Expose IDN constants to PHP scripts. */
 976         idn_register_constants(INIT_FUNC_ARGS_PASSTHRU);
 977 
 978 #if U_ICU_VERSION_MAJOR_NUM * 1000 + U_ICU_VERSION_MINOR_NUM >= 4002
 979         /* Register 'Spoofchecker' PHP class */
 980         spoofchecker_register_Spoofchecker_class(  );
 981 
 982         /* Expose Spoofchecker constants to PHP scripts */
 983         spoofchecker_register_constants( INIT_FUNC_ARGS_PASSTHRU );
 984 #endif
 985 
 986         /* Register 'IntlException' PHP class */
 987         intl_register_IntlException_class(  );
 988 
 989         /* Register 'IntlIterator' PHP class */
 990         intl_register_IntlIterator_class(  );
 991 
 992         /* Register 'BreakIterator' class */
 993         breakiterator_register_BreakIterator_class(  );
 994 
 995         /* Register 'IntlPartsIterator' class */
 996         breakiterator_register_IntlPartsIterator_class(  );
 997 
 998         /* Global error handling. */
 999         intl_error_init( NULL );
1000 
1001         /* 'Converter' class for codepage conversions */
1002         php_converter_minit(INIT_FUNC_ARGS_PASSTHRU);
1003 
1004         /* IntlChar class */
1005         php_uchar_minit(INIT_FUNC_ARGS_PASSTHRU);
1006 
1007         return SUCCESS;
1008 }
1009 /* }}} */
1010 
1011 #define EXPLICIT_CLEANUP_ENV_VAR "INTL_EXPLICIT_CLEANUP"
1012 
1013 /* {{{ PHP_MSHUTDOWN_FUNCTION
1014  */
1015 PHP_MSHUTDOWN_FUNCTION( intl )
1016 {
1017         const char *cleanup;
1018     /* For the default locale php.ini setting */
1019     UNREGISTER_INI_ENTRIES();
1020 
1021         cleanup = getenv(EXPLICIT_CLEANUP_ENV_VAR);
1022     if (cleanup != NULL && !(cleanup[0] == '0' && cleanup[1] == '\0')) {
1023                 u_cleanup();
1024     }
1025 
1026     return SUCCESS;
1027 }
1028 /* }}} */
1029 
1030 /* {{{ PHP_RINIT_FUNCTION
1031  */
1032 PHP_RINIT_FUNCTION( intl )
1033 {
1034         return SUCCESS;
1035 }
1036 /* }}} */
1037 
1038 /* {{{ PHP_RSHUTDOWN_FUNCTION
1039  */
1040 PHP_RSHUTDOWN_FUNCTION( intl )
1041 {
1042         if(!Z_ISUNDEF(INTL_G(current_collator))) {
1043                 ZVAL_UNDEF(&INTL_G(current_collator));
1044         }
1045         if (INTL_G(grapheme_iterator)) {
1046                 grapheme_close_global_iterator(  );
1047                 INTL_G(grapheme_iterator) = NULL;
1048         }
1049 
1050         intl_error_reset( NULL);
1051         return SUCCESS;
1052 }
1053 /* }}} */
1054 
1055 /* {{{ PHP_MINFO_FUNCTION
1056  */
1057 PHP_MINFO_FUNCTION( intl )
1058 {
1059         php_info_print_table_start();
1060         php_info_print_table_header( 2, "Internationalization support", "enabled" );
1061         php_info_print_table_row( 2, "version", INTL_MODULE_VERSION );
1062         php_info_print_table_row( 2, "ICU version", U_ICU_VERSION );
1063 #ifdef U_ICU_DATA_VERSION
1064         php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION );
1065 #endif
1066         php_info_print_table_end();
1067 
1068     /* For the default locale php.ini setting */
1069     DISPLAY_INI_ENTRIES() ;
1070 }
1071 /* }}} */
1072 
1073 /*
1074  * Local variables:
1075  * tab-width: 4
1076  * c-basic-offset: 4
1077  * End:
1078  * vim600: noet sw=4 ts=4 fdm=marker
1079  * vim<600: noet sw=4 ts=4
1080  */

/* [<][>][^][v][top][bottom][index][help] */