Annotation of embedaddon/php/ext/intl/php_intl.c, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>