PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LCOV - code coverage report
Current view: top level - ext/intl - php_intl.c (source / functions) Hit Total Coverage
Test: PHP Code Coverage Lines: 69 71 97.2 %
Date: 2022-01-18 Functions: 7 7 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10

Generated at Wed, 19 Jan 2022 00:14:12 +0000 (3 days ago)

Copyright © 2005-2022 The PHP Group
All rights reserved.