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: Kirti Velankar <kirtig@yahoo-inc.com> |
14 +----------------------------------------------------------------------+
15 */
16
17 #include <unicode/uloc.h>
18 #include "php_intl.h"
19 #include "intl_error.h"
20 #include "locale_class.h"
21 #include "locale_methods.h"
22 #include "locale.h"
23
24 zend_class_entry *Locale_ce_ptr = NULL;
25
26 /*
27 * 'Locale' class registration structures & functions
28 */
29
30 /* {{{ Locale methods arguments info */
31 /*
32 * NOTE: when modifying 'locale_XX_args' do not forget to modify
33 * approptiate 'locale_XX_args' for the procedural API!
34 */
35
36 ZEND_BEGIN_ARG_INFO_EX( locale_0_args, 0, 0, 0 )
37 ZEND_END_ARG_INFO()
38
39 ZEND_BEGIN_ARG_INFO_EX( locale_arg_locale, 0, 0, 1 )
40 ZEND_ARG_INFO( 0, locale )
41 ZEND_END_ARG_INFO()
42
43 ZEND_BEGIN_ARG_INFO_EX( locale_accept_from_http_args, 0, 0, 1 )
44 ZEND_ARG_INFO( 0, header )
45 ZEND_END_ARG_INFO()
46
47 ZEND_BEGIN_ARG_INFO_EX( locale_compose_args, 0, 0, 1 )
48 ZEND_ARG_INFO( 0, subtags )
49 ZEND_END_ARG_INFO()
50
51 ZEND_BEGIN_ARG_INFO_EX( locale_2_args, 0, 0, 1 )
52 ZEND_ARG_INFO( 0, locale )
53 ZEND_ARG_INFO( 0, in_locale )
54 ZEND_END_ARG_INFO()
55
56 ZEND_BEGIN_ARG_INFO_EX( locale_filter_matches_args, 0, 0, 2 )
57 ZEND_ARG_INFO( 0, langtag )
58 ZEND_ARG_INFO( 0, locale )
59 ZEND_ARG_INFO( 0, canonicalize )
60 ZEND_END_ARG_INFO()
61
62 ZEND_BEGIN_ARG_INFO_EX( locale_lookup_args, 0, 0, 2 )
63 ZEND_ARG_INFO( 0, langtag )
64 ZEND_ARG_INFO( 0, locale )
65 ZEND_ARG_INFO( 0, canonicalize )
66 ZEND_ARG_INFO( 0, default )
67 ZEND_END_ARG_INFO()
68
69 /* }}} */
70
71 /* {{{ Locale_class_functions
72 * Every 'Locale' class method has an entry in this table
73 */
74
75 static const zend_function_entry Locale_class_functions[] = {
76 ZEND_FENTRY( getDefault, zif_locale_get_default , locale_0_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
77 ZEND_FENTRY( setDefault, zif_locale_set_default , locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
78 ZEND_FENTRY( getPrimaryLanguage, ZEND_FN( locale_get_primary_language ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
79 ZEND_FENTRY( getScript, ZEND_FN( locale_get_script ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
80 ZEND_FENTRY( getRegion, ZEND_FN( locale_get_region ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
81 ZEND_FENTRY( getKeywords, ZEND_FN( locale_get_keywords ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
82 ZEND_FENTRY( getDisplayScript, ZEND_FN( locale_get_display_script ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
83 ZEND_FENTRY( getDisplayRegion, ZEND_FN( locale_get_display_region ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
84 ZEND_FENTRY( getDisplayName, ZEND_FN( locale_get_display_name ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
85 ZEND_FENTRY( getDisplayLanguage, ZEND_FN( locale_get_display_language ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
86 ZEND_FENTRY( getDisplayVariant, ZEND_FN( locale_get_display_variant ), locale_2_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
87 ZEND_FENTRY( composeLocale, ZEND_FN( locale_compose ), locale_compose_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
88 ZEND_FENTRY( parseLocale, ZEND_FN( locale_parse ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
89 ZEND_FENTRY( getAllVariants, ZEND_FN( locale_get_all_variants ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
90 ZEND_FENTRY( filterMatches, ZEND_FN( locale_filter_matches ), locale_filter_matches_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
91 ZEND_FENTRY( lookup, ZEND_FN( locale_lookup ), locale_lookup_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
92 ZEND_FENTRY( canonicalize, ZEND_FN( locale_canonicalize ), locale_arg_locale , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
93 ZEND_FENTRY( acceptFromHttp, ZEND_FN( locale_accept_from_http ), locale_accept_from_http_args , ZEND_ACC_PUBLIC|ZEND_ACC_STATIC )
94 PHP_FE_END
95 };
96 /* }}} */
97
98 /* {{{ locale_register_Locale_class
99 * Initialize 'Locale' class
100 */
locale_register_Locale_class(void)101 void locale_register_Locale_class( void )
102 {
103 zend_class_entry ce;
104
105 /* Create and register 'Locale' class. */
106 INIT_CLASS_ENTRY( ce, "Locale", Locale_class_functions );
107 ce.create_object = NULL;
108 Locale_ce_ptr = zend_register_internal_class( &ce );
109
110 /* Declare 'Locale' class properties. */
111 if( !Locale_ce_ptr )
112 {
113 zend_error( E_ERROR,
114 "Locale: Failed to register Locale class.");
115 return;
116 }
117 }
118 /* }}} */
119
120 /*
121 * Local variables:
122 * tab-width: 4
123 * c-basic-offset: 4
124 * End:
125 * vim600: noet sw=4 ts=4 fdm=marker
126 * vim<600: noet sw=4 ts=4
127 */
128