1 : /*
2 : +----------------------------------------------------------------------+
3 : | PHP Version 6 |
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: Andrei Zmievski <andrei@php.net> |
14 : | Wez Furlong <wez@php.net> |
15 : +----------------------------------------------------------------------+
16 : */
17 :
18 : #include "php_unicode.h"
19 :
20 : PHPAPI zend_class_entry *u_const_ce;
21 :
22 : #define REGISTER_U_CONST(constant) \
23 : php_register_u_constant(#constant, (long)constant TSRMLS_CC)
24 :
25 : static void php_register_u_constant(const char *name, long value TSRMLS_DC)
26 7619136 : {
27 7619136 : const char *p = name;
28 :
29 7619136 : if (*p == 'U') p++;
30 7619136 : if (*p == '_') p++;
31 :
32 7619136 : zend_declare_class_constant_long(u_const_ce, (char *)p, strlen(p), value TSRMLS_CC);
33 7619136 : }
34 :
35 : /* {{{ Character property constants */
36 : static void php_register_property_constants(TSRMLS_D)
37 17007 : {
38 17007 : REGISTER_U_CONST(UCHAR_ALPHABETIC);
39 17007 : REGISTER_U_CONST(UCHAR_ASCII_HEX_DIGIT);
40 17007 : REGISTER_U_CONST(UCHAR_BIDI_CONTROL);
41 17007 : REGISTER_U_CONST(UCHAR_BIDI_MIRRORED);
42 17007 : REGISTER_U_CONST(UCHAR_DASH);
43 17007 : REGISTER_U_CONST(UCHAR_DEFAULT_IGNORABLE_CODE_POINT);
44 17007 : REGISTER_U_CONST(UCHAR_DEPRECATED);
45 17007 : REGISTER_U_CONST(UCHAR_DIACRITIC);
46 17007 : REGISTER_U_CONST(UCHAR_EXTENDER);
47 17007 : REGISTER_U_CONST(UCHAR_FULL_COMPOSITION_EXCLUSION);
48 17007 : REGISTER_U_CONST(UCHAR_GRAPHEME_BASE);
49 17007 : REGISTER_U_CONST(UCHAR_GRAPHEME_EXTEND);
50 17007 : REGISTER_U_CONST(UCHAR_GRAPHEME_LINK);
51 17007 : REGISTER_U_CONST(UCHAR_HEX_DIGIT);
52 17007 : REGISTER_U_CONST(UCHAR_HYPHEN);
53 17007 : REGISTER_U_CONST(UCHAR_ID_CONTINUE);
54 17007 : REGISTER_U_CONST(UCHAR_ID_START);
55 17007 : REGISTER_U_CONST(UCHAR_IDEOGRAPHIC);
56 17007 : REGISTER_U_CONST(UCHAR_IDS_BINARY_OPERATOR);
57 17007 : REGISTER_U_CONST(UCHAR_IDS_TRINARY_OPERATOR);
58 17007 : REGISTER_U_CONST(UCHAR_JOIN_CONTROL);
59 17007 : REGISTER_U_CONST(UCHAR_LOGICAL_ORDER_EXCEPTION);
60 17007 : REGISTER_U_CONST(UCHAR_LOWERCASE);
61 17007 : REGISTER_U_CONST(UCHAR_MATH);
62 17007 : REGISTER_U_CONST(UCHAR_NONCHARACTER_CODE_POINT);
63 17007 : REGISTER_U_CONST(UCHAR_QUOTATION_MARK);
64 17007 : REGISTER_U_CONST(UCHAR_RADICAL);
65 17007 : REGISTER_U_CONST(UCHAR_SOFT_DOTTED);
66 17007 : REGISTER_U_CONST(UCHAR_TERMINAL_PUNCTUATION);
67 17007 : REGISTER_U_CONST(UCHAR_UNIFIED_IDEOGRAPH);
68 17007 : REGISTER_U_CONST(UCHAR_UPPERCASE);
69 17007 : REGISTER_U_CONST(UCHAR_WHITE_SPACE);
70 17007 : REGISTER_U_CONST(UCHAR_XID_CONTINUE);
71 17007 : REGISTER_U_CONST(UCHAR_XID_START);
72 17007 : REGISTER_U_CONST(UCHAR_CASE_SENSITIVE);
73 17007 : REGISTER_U_CONST(UCHAR_S_TERM);
74 17007 : REGISTER_U_CONST(UCHAR_VARIATION_SELECTOR);
75 17007 : REGISTER_U_CONST(UCHAR_NFD_INERT);
76 17007 : REGISTER_U_CONST(UCHAR_NFKD_INERT);
77 17007 : REGISTER_U_CONST(UCHAR_NFC_INERT);
78 17007 : REGISTER_U_CONST(UCHAR_NFKC_INERT);
79 17007 : REGISTER_U_CONST(UCHAR_SEGMENT_STARTER);
80 17007 : REGISTER_U_CONST(UCHAR_PATTERN_SYNTAX);
81 17007 : REGISTER_U_CONST(UCHAR_PATTERN_WHITE_SPACE);
82 17007 : REGISTER_U_CONST(UCHAR_POSIX_ALNUM);
83 17007 : REGISTER_U_CONST(UCHAR_POSIX_BLANK);
84 17007 : REGISTER_U_CONST(UCHAR_POSIX_GRAPH);
85 17007 : REGISTER_U_CONST(UCHAR_POSIX_PRINT);
86 17007 : REGISTER_U_CONST(UCHAR_POSIX_XDIGIT);
87 17007 : REGISTER_U_CONST(UCHAR_BIDI_CLASS);
88 17007 : REGISTER_U_CONST(UCHAR_INT_START);
89 17007 : REGISTER_U_CONST(UCHAR_BLOCK);
90 17007 : REGISTER_U_CONST(UCHAR_CANONICAL_COMBINING_CLASS);
91 17007 : REGISTER_U_CONST(UCHAR_DECOMPOSITION_TYPE);
92 17007 : REGISTER_U_CONST(UCHAR_EAST_ASIAN_WIDTH);
93 17007 : REGISTER_U_CONST(UCHAR_GENERAL_CATEGORY);
94 17007 : REGISTER_U_CONST(UCHAR_JOINING_GROUP);
95 17007 : REGISTER_U_CONST(UCHAR_JOINING_TYPE);
96 17007 : REGISTER_U_CONST(UCHAR_LINE_BREAK);
97 17007 : REGISTER_U_CONST(UCHAR_NUMERIC_TYPE);
98 17007 : REGISTER_U_CONST(UCHAR_SCRIPT);
99 17007 : REGISTER_U_CONST(UCHAR_HANGUL_SYLLABLE_TYPE);
100 17007 : REGISTER_U_CONST(UCHAR_NFD_QUICK_CHECK);
101 17007 : REGISTER_U_CONST(UCHAR_NFKD_QUICK_CHECK);
102 17007 : REGISTER_U_CONST(UCHAR_NFC_QUICK_CHECK);
103 17007 : REGISTER_U_CONST(UCHAR_NFKC_QUICK_CHECK);
104 17007 : REGISTER_U_CONST(UCHAR_LEAD_CANONICAL_COMBINING_CLASS);
105 17007 : REGISTER_U_CONST(UCHAR_TRAIL_CANONICAL_COMBINING_CLASS);
106 17007 : REGISTER_U_CONST(UCHAR_GRAPHEME_CLUSTER_BREAK);
107 17007 : REGISTER_U_CONST(UCHAR_SENTENCE_BREAK);
108 17007 : REGISTER_U_CONST(UCHAR_WORD_BREAK);
109 17007 : REGISTER_U_CONST(UCHAR_GENERAL_CATEGORY_MASK);
110 17007 : REGISTER_U_CONST(UCHAR_NUMERIC_VALUE);
111 17007 : REGISTER_U_CONST(UCHAR_AGE);
112 17007 : REGISTER_U_CONST(UCHAR_BIDI_MIRRORING_GLYPH);
113 17007 : REGISTER_U_CONST(UCHAR_CASE_FOLDING);
114 17007 : REGISTER_U_CONST(UCHAR_ISO_COMMENT);
115 17007 : REGISTER_U_CONST(UCHAR_LOWERCASE_MAPPING);
116 17007 : REGISTER_U_CONST(UCHAR_NAME);
117 17007 : REGISTER_U_CONST(UCHAR_SIMPLE_CASE_FOLDING);
118 17007 : REGISTER_U_CONST(UCHAR_SIMPLE_LOWERCASE_MAPPING);
119 17007 : REGISTER_U_CONST(UCHAR_SIMPLE_TITLECASE_MAPPING);
120 17007 : REGISTER_U_CONST(UCHAR_SIMPLE_UPPERCASE_MAPPING);
121 17007 : REGISTER_U_CONST(UCHAR_TITLECASE_MAPPING);
122 17007 : REGISTER_U_CONST(UCHAR_UNICODE_1_NAME);
123 17007 : REGISTER_U_CONST(UCHAR_UPPERCASE_MAPPING);
124 17007 : REGISTER_U_CONST(UCHAR_INVALID_CODE);
125 17007 : }
126 : /* }}} */
127 :
128 : /* {{{ General category constants */
129 : static void php_register_general_category_constants(TSRMLS_D)
130 17007 : {
131 17007 : REGISTER_U_CONST(U_UNASSIGNED);
132 17007 : REGISTER_U_CONST(U_GENERAL_OTHER_TYPES);
133 17007 : REGISTER_U_CONST(U_UPPERCASE_LETTER);
134 17007 : REGISTER_U_CONST(U_LOWERCASE_LETTER);
135 17007 : REGISTER_U_CONST(U_TITLECASE_LETTER);
136 17007 : REGISTER_U_CONST(U_MODIFIER_LETTER);
137 17007 : REGISTER_U_CONST(U_OTHER_LETTER);
138 17007 : REGISTER_U_CONST(U_NON_SPACING_MARK);
139 17007 : REGISTER_U_CONST(U_ENCLOSING_MARK);
140 17007 : REGISTER_U_CONST(U_COMBINING_SPACING_MARK);
141 17007 : REGISTER_U_CONST(U_DECIMAL_DIGIT_NUMBER);
142 17007 : REGISTER_U_CONST(U_LETTER_NUMBER);
143 17007 : REGISTER_U_CONST(U_OTHER_NUMBER);
144 17007 : REGISTER_U_CONST(U_SPACE_SEPARATOR);
145 17007 : REGISTER_U_CONST(U_LINE_SEPARATOR);
146 17007 : REGISTER_U_CONST(U_PARAGRAPH_SEPARATOR);
147 17007 : REGISTER_U_CONST(U_CONTROL_CHAR);
148 17007 : REGISTER_U_CONST(U_FORMAT_CHAR);
149 17007 : REGISTER_U_CONST(U_PRIVATE_USE_CHAR);
150 17007 : REGISTER_U_CONST(U_SURROGATE);
151 17007 : REGISTER_U_CONST(U_DASH_PUNCTUATION);
152 17007 : REGISTER_U_CONST(U_START_PUNCTUATION);
153 17007 : REGISTER_U_CONST(U_END_PUNCTUATION);
154 17007 : REGISTER_U_CONST(U_CONNECTOR_PUNCTUATION);
155 17007 : REGISTER_U_CONST(U_OTHER_PUNCTUATION);
156 17007 : REGISTER_U_CONST(U_MATH_SYMBOL);
157 17007 : REGISTER_U_CONST(U_CURRENCY_SYMBOL);
158 17007 : REGISTER_U_CONST(U_MODIFIER_SYMBOL);
159 17007 : REGISTER_U_CONST(U_OTHER_SYMBOL);
160 17007 : REGISTER_U_CONST(U_INITIAL_PUNCTUATION);
161 17007 : REGISTER_U_CONST(U_FINAL_PUNCTUATION);
162 17007 : }
163 : /* }}} */
164 :
165 : /* {{{ Character direction constants */
166 : static void php_register_char_direction_constants(TSRMLS_D)
167 17007 : {
168 17007 : REGISTER_U_CONST(U_LEFT_TO_RIGHT);
169 17007 : REGISTER_U_CONST(U_RIGHT_TO_LEFT);
170 17007 : REGISTER_U_CONST(U_EUROPEAN_NUMBER);
171 17007 : REGISTER_U_CONST(U_EUROPEAN_NUMBER_SEPARATOR);
172 17007 : REGISTER_U_CONST(U_EUROPEAN_NUMBER_TERMINATOR);
173 17007 : REGISTER_U_CONST(U_ARABIC_NUMBER);
174 17007 : REGISTER_U_CONST(U_COMMON_NUMBER_SEPARATOR);
175 17007 : REGISTER_U_CONST(U_BLOCK_SEPARATOR);
176 17007 : REGISTER_U_CONST(U_SEGMENT_SEPARATOR);
177 17007 : REGISTER_U_CONST(U_WHITE_SPACE_NEUTRAL);
178 17007 : REGISTER_U_CONST(U_OTHER_NEUTRAL);
179 17007 : REGISTER_U_CONST(U_LEFT_TO_RIGHT_EMBEDDING);
180 17007 : REGISTER_U_CONST(U_LEFT_TO_RIGHT_OVERRIDE);
181 17007 : REGISTER_U_CONST(U_RIGHT_TO_LEFT_ARABIC);
182 17007 : REGISTER_U_CONST(U_RIGHT_TO_LEFT_EMBEDDING);
183 17007 : REGISTER_U_CONST(U_RIGHT_TO_LEFT_OVERRIDE);
184 17007 : REGISTER_U_CONST(U_POP_DIRECTIONAL_FORMAT);
185 17007 : REGISTER_U_CONST(U_DIR_NON_SPACING_MARK);
186 17007 : REGISTER_U_CONST(U_BOUNDARY_NEUTRAL);
187 17007 : }
188 : /* }}} */
189 :
190 : /* {{{ Unicode block constants */
191 : static void php_register_block_constants(TSRMLS_D)
192 17007 : {
193 17007 : REGISTER_U_CONST(UBLOCK_NO_BLOCK);
194 17007 : REGISTER_U_CONST(UBLOCK_BASIC_LATIN);
195 17007 : REGISTER_U_CONST(UBLOCK_LATIN_1_SUPPLEMENT);
196 17007 : REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_A);
197 17007 : REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_B);
198 17007 : REGISTER_U_CONST(UBLOCK_IPA_EXTENSIONS);
199 17007 : REGISTER_U_CONST(UBLOCK_SPACING_MODIFIER_LETTERS);
200 17007 : REGISTER_U_CONST(UBLOCK_COMBINING_DIACRITICAL_MARKS);
201 17007 : REGISTER_U_CONST(UBLOCK_GREEK);
202 17007 : REGISTER_U_CONST(UBLOCK_CYRILLIC);
203 17007 : REGISTER_U_CONST(UBLOCK_ARMENIAN);
204 17007 : REGISTER_U_CONST(UBLOCK_HEBREW);
205 17007 : REGISTER_U_CONST(UBLOCK_ARABIC);
206 17007 : REGISTER_U_CONST(UBLOCK_SYRIAC);
207 17007 : REGISTER_U_CONST(UBLOCK_THAANA);
208 17007 : REGISTER_U_CONST(UBLOCK_DEVANAGARI);
209 17007 : REGISTER_U_CONST(UBLOCK_BENGALI);
210 17007 : REGISTER_U_CONST(UBLOCK_GURMUKHI);
211 17007 : REGISTER_U_CONST(UBLOCK_GUJARATI);
212 17007 : REGISTER_U_CONST(UBLOCK_ORIYA);
213 17007 : REGISTER_U_CONST(UBLOCK_TAMIL);
214 17007 : REGISTER_U_CONST(UBLOCK_TELUGU);
215 17007 : REGISTER_U_CONST(UBLOCK_KANNADA);
216 17007 : REGISTER_U_CONST(UBLOCK_MALAYALAM);
217 17007 : REGISTER_U_CONST(UBLOCK_SINHALA);
218 17007 : REGISTER_U_CONST(UBLOCK_THAI);
219 17007 : REGISTER_U_CONST(UBLOCK_LAO);
220 17007 : REGISTER_U_CONST(UBLOCK_TIBETAN);
221 17007 : REGISTER_U_CONST(UBLOCK_MYANMAR);
222 17007 : REGISTER_U_CONST(UBLOCK_GEORGIAN);
223 17007 : REGISTER_U_CONST(UBLOCK_HANGUL_JAMO);
224 17007 : REGISTER_U_CONST(UBLOCK_ETHIOPIC);
225 17007 : REGISTER_U_CONST(UBLOCK_CHEROKEE);
226 17007 : REGISTER_U_CONST(UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS);
227 17007 : REGISTER_U_CONST(UBLOCK_OGHAM);
228 17007 : REGISTER_U_CONST(UBLOCK_RUNIC);
229 17007 : REGISTER_U_CONST(UBLOCK_KHMER);
230 17007 : REGISTER_U_CONST(UBLOCK_MONGOLIAN);
231 17007 : REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_ADDITIONAL);
232 17007 : REGISTER_U_CONST(UBLOCK_GREEK_EXTENDED);
233 17007 : REGISTER_U_CONST(UBLOCK_GENERAL_PUNCTUATION);
234 17007 : REGISTER_U_CONST(UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS);
235 17007 : REGISTER_U_CONST(UBLOCK_CURRENCY_SYMBOLS);
236 17007 : REGISTER_U_CONST(UBLOCK_COMBINING_MARKS_FOR_SYMBOLS);
237 17007 : REGISTER_U_CONST(UBLOCK_LETTERLIKE_SYMBOLS);
238 17007 : REGISTER_U_CONST(UBLOCK_NUMBER_FORMS);
239 17007 : REGISTER_U_CONST(UBLOCK_ARROWS);
240 17007 : REGISTER_U_CONST(UBLOCK_MATHEMATICAL_OPERATORS);
241 17007 : REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_TECHNICAL);
242 17007 : REGISTER_U_CONST(UBLOCK_CONTROL_PICTURES);
243 17007 : REGISTER_U_CONST(UBLOCK_OPTICAL_CHARACTER_RECOGNITION);
244 17007 : REGISTER_U_CONST(UBLOCK_ENCLOSED_ALPHANUMERICS);
245 17007 : REGISTER_U_CONST(UBLOCK_BOX_DRAWING);
246 17007 : REGISTER_U_CONST(UBLOCK_BLOCK_ELEMENTS);
247 17007 : REGISTER_U_CONST(UBLOCK_GEOMETRIC_SHAPES);
248 17007 : REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_SYMBOLS);
249 17007 : REGISTER_U_CONST(UBLOCK_DINGBATS);
250 17007 : REGISTER_U_CONST(UBLOCK_BRAILLE_PATTERNS);
251 17007 : REGISTER_U_CONST(UBLOCK_CJK_RADICALS_SUPPLEMENT);
252 17007 : REGISTER_U_CONST(UBLOCK_KANGXI_RADICALS);
253 17007 : REGISTER_U_CONST(UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS);
254 17007 : REGISTER_U_CONST(UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION);
255 17007 : REGISTER_U_CONST(UBLOCK_HIRAGANA);
256 17007 : REGISTER_U_CONST(UBLOCK_KATAKANA);
257 17007 : REGISTER_U_CONST(UBLOCK_BOPOMOFO);
258 17007 : REGISTER_U_CONST(UBLOCK_HANGUL_COMPATIBILITY_JAMO);
259 17007 : REGISTER_U_CONST(UBLOCK_KANBUN);
260 17007 : REGISTER_U_CONST(UBLOCK_BOPOMOFO_EXTENDED);
261 17007 : REGISTER_U_CONST(UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS);
262 17007 : REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY);
263 17007 : REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A);
264 17007 : REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS);
265 17007 : REGISTER_U_CONST(UBLOCK_YI_SYLLABLES);
266 17007 : REGISTER_U_CONST(UBLOCK_YI_RADICALS);
267 17007 : REGISTER_U_CONST(UBLOCK_HANGUL_SYLLABLES);
268 17007 : REGISTER_U_CONST(UBLOCK_HIGH_SURROGATES);
269 17007 : REGISTER_U_CONST(UBLOCK_HIGH_PRIVATE_USE_SURROGATES);
270 17007 : REGISTER_U_CONST(UBLOCK_LOW_SURROGATES);
271 17007 : REGISTER_U_CONST(UBLOCK_PRIVATE_USE_AREA);
272 17007 : REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS);
273 17007 : REGISTER_U_CONST(UBLOCK_ALPHABETIC_PRESENTATION_FORMS);
274 17007 : REGISTER_U_CONST(UBLOCK_ARABIC_PRESENTATION_FORMS_A);
275 17007 : REGISTER_U_CONST(UBLOCK_COMBINING_HALF_MARKS);
276 17007 : REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_FORMS);
277 17007 : REGISTER_U_CONST(UBLOCK_SMALL_FORM_VARIANTS);
278 17007 : REGISTER_U_CONST(UBLOCK_ARABIC_PRESENTATION_FORMS_B);
279 17007 : REGISTER_U_CONST(UBLOCK_SPECIALS);
280 17007 : REGISTER_U_CONST(UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS);
281 17007 : REGISTER_U_CONST(UBLOCK_OLD_ITALIC);
282 17007 : REGISTER_U_CONST(UBLOCK_GOTHIC);
283 17007 : REGISTER_U_CONST(UBLOCK_DESERET);
284 17007 : REGISTER_U_CONST(UBLOCK_BYZANTINE_MUSICAL_SYMBOLS);
285 17007 : REGISTER_U_CONST(UBLOCK_MUSICAL_SYMBOLS);
286 17007 : REGISTER_U_CONST(UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS);
287 17007 : REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B);
288 17007 : REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT);
289 17007 : REGISTER_U_CONST(UBLOCK_TAGS);
290 17007 : REGISTER_U_CONST(UBLOCK_CYRILLIC_SUPPLEMENT);
291 17007 : REGISTER_U_CONST(UBLOCK_TAGALOG);
292 17007 : REGISTER_U_CONST(UBLOCK_HANUNOO);
293 17007 : REGISTER_U_CONST(UBLOCK_BUHID);
294 17007 : REGISTER_U_CONST(UBLOCK_TAGBANWA);
295 17007 : REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A);
296 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_ARROWS_A);
297 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_ARROWS_B);
298 17007 : REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B);
299 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS);
300 17007 : REGISTER_U_CONST(UBLOCK_KATAKANA_PHONETIC_EXTENSIONS);
301 17007 : REGISTER_U_CONST(UBLOCK_VARIATION_SELECTORS);
302 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A);
303 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B);
304 17007 : REGISTER_U_CONST(UBLOCK_LIMBU);
305 17007 : REGISTER_U_CONST(UBLOCK_TAI_LE);
306 17007 : REGISTER_U_CONST(UBLOCK_KHMER_SYMBOLS);
307 17007 : REGISTER_U_CONST(UBLOCK_PHONETIC_EXTENSIONS);
308 17007 : REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS);
309 17007 : REGISTER_U_CONST(UBLOCK_YIJING_HEXAGRAM_SYMBOLS);
310 17007 : REGISTER_U_CONST(UBLOCK_LINEAR_B_SYLLABARY);
311 17007 : REGISTER_U_CONST(UBLOCK_LINEAR_B_IDEOGRAMS);
312 17007 : REGISTER_U_CONST(UBLOCK_AEGEAN_NUMBERS);
313 17007 : REGISTER_U_CONST(UBLOCK_UGARITIC);
314 17007 : REGISTER_U_CONST(UBLOCK_SHAVIAN);
315 17007 : REGISTER_U_CONST(UBLOCK_OSMANYA);
316 17007 : REGISTER_U_CONST(UBLOCK_CYPRIOT_SYLLABARY);
317 17007 : REGISTER_U_CONST(UBLOCK_TAI_XUAN_JING_SYMBOLS);
318 17007 : REGISTER_U_CONST(UBLOCK_VARIATION_SELECTORS_SUPPLEMENT);
319 17007 : REGISTER_U_CONST(UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION);
320 17007 : REGISTER_U_CONST(UBLOCK_ANCIENT_GREEK_NUMBERS);
321 17007 : REGISTER_U_CONST(UBLOCK_ARABIC_SUPPLEMENT);
322 17007 : REGISTER_U_CONST(UBLOCK_BUGINESE);
323 17007 : REGISTER_U_CONST(UBLOCK_CJK_STROKES);
324 17007 : REGISTER_U_CONST(UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT);
325 17007 : REGISTER_U_CONST(UBLOCK_COPTIC);
326 17007 : REGISTER_U_CONST(UBLOCK_ETHIOPIC_EXTENDED);
327 17007 : REGISTER_U_CONST(UBLOCK_ETHIOPIC_SUPPLEMENT);
328 17007 : REGISTER_U_CONST(UBLOCK_GEORGIAN_SUPPLEMENT);
329 17007 : REGISTER_U_CONST(UBLOCK_GLAGOLITIC);
330 17007 : REGISTER_U_CONST(UBLOCK_KHAROSHTHI);
331 17007 : REGISTER_U_CONST(UBLOCK_MODIFIER_TONE_LETTERS);
332 17007 : REGISTER_U_CONST(UBLOCK_NEW_TAI_LUE);
333 17007 : REGISTER_U_CONST(UBLOCK_OLD_PERSIAN);
334 17007 : REGISTER_U_CONST(UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT);
335 17007 : REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_PUNCTUATION);
336 17007 : REGISTER_U_CONST(UBLOCK_SYLOTI_NAGRI);
337 17007 : REGISTER_U_CONST(UBLOCK_TIFINAGH);
338 17007 : REGISTER_U_CONST(UBLOCK_VERTICAL_FORMS);
339 17007 : }
340 : /* }}} */
341 :
342 : /* {{{ East Asian width constants */
343 : static void php_register_east_asian_width_constants(TSRMLS_D)
344 17007 : {
345 17007 : REGISTER_U_CONST(U_EA_NEUTRAL);
346 17007 : REGISTER_U_CONST(U_EA_AMBIGUOUS);
347 17007 : REGISTER_U_CONST(U_EA_HALFWIDTH);
348 17007 : REGISTER_U_CONST(U_EA_FULLWIDTH);
349 17007 : REGISTER_U_CONST(U_EA_NARROW);
350 17007 : REGISTER_U_CONST(U_EA_WIDE);
351 17007 : }
352 : /* }}} */
353 :
354 : /* {{{ Decomposition type constants */
355 : static void php_register_decomposition_type_constants(TSRMLS_D)
356 17007 : {
357 17007 : REGISTER_U_CONST(U_DT_NONE);
358 17007 : REGISTER_U_CONST(U_DT_CANONICAL);
359 17007 : REGISTER_U_CONST(U_DT_COMPAT);
360 17007 : REGISTER_U_CONST(U_DT_CIRCLE);
361 17007 : REGISTER_U_CONST(U_DT_FINAL);
362 17007 : REGISTER_U_CONST(U_DT_FONT);
363 17007 : REGISTER_U_CONST(U_DT_FRACTION);
364 17007 : REGISTER_U_CONST(U_DT_INITIAL);
365 17007 : REGISTER_U_CONST(U_DT_ISOLATED);
366 17007 : REGISTER_U_CONST(U_DT_MEDIAL);
367 17007 : REGISTER_U_CONST(U_DT_NARROW);
368 17007 : REGISTER_U_CONST(U_DT_NOBREAK);
369 17007 : REGISTER_U_CONST(U_DT_SMALL);
370 17007 : REGISTER_U_CONST(U_DT_SQUARE);
371 17007 : REGISTER_U_CONST(U_DT_SUB);
372 17007 : REGISTER_U_CONST(U_DT_SUPER);
373 17007 : REGISTER_U_CONST(U_DT_VERTICAL);
374 17007 : REGISTER_U_CONST(U_DT_WIDE);
375 17007 : }
376 : /* }}} */
377 :
378 : /* {{{ Joining type constants */
379 : static void php_register_joining_type_constants(TSRMLS_D)
380 17007 : {
381 17007 : REGISTER_U_CONST(U_JT_NON_JOINING);
382 17007 : REGISTER_U_CONST(U_JT_JOIN_CAUSING);
383 17007 : REGISTER_U_CONST(U_JT_DUAL_JOINING);
384 17007 : REGISTER_U_CONST(U_JT_LEFT_JOINING);
385 17007 : REGISTER_U_CONST(U_JT_RIGHT_JOINING);
386 17007 : REGISTER_U_CONST(U_JT_TRANSPARENT);
387 17007 : }
388 : /* }}} */
389 :
390 : /* {{{ Joining group constants */
391 : static void php_register_joining_group_constants(TSRMLS_D)
392 17007 : {
393 17007 : REGISTER_U_CONST(U_JG_NO_JOINING_GROUP);
394 17007 : REGISTER_U_CONST(U_JG_AIN);
395 17007 : REGISTER_U_CONST(U_JG_ALAPH);
396 17007 : REGISTER_U_CONST(U_JG_ALEF);
397 17007 : REGISTER_U_CONST(U_JG_BEH);
398 17007 : REGISTER_U_CONST(U_JG_BETH);
399 17007 : REGISTER_U_CONST(U_JG_DAL);
400 17007 : REGISTER_U_CONST(U_JG_DALATH_RISH);
401 17007 : REGISTER_U_CONST(U_JG_E);
402 17007 : REGISTER_U_CONST(U_JG_FEH);
403 17007 : REGISTER_U_CONST(U_JG_FINAL_SEMKATH);
404 17007 : REGISTER_U_CONST(U_JG_GAF);
405 17007 : REGISTER_U_CONST(U_JG_GAMAL);
406 17007 : REGISTER_U_CONST(U_JG_HAH);
407 17007 : REGISTER_U_CONST(U_JG_HAMZA_ON_HEH_GOAL);
408 17007 : REGISTER_U_CONST(U_JG_HE);
409 17007 : REGISTER_U_CONST(U_JG_HEH);
410 17007 : REGISTER_U_CONST(U_JG_HEH_GOAL);
411 17007 : REGISTER_U_CONST(U_JG_HETH);
412 17007 : REGISTER_U_CONST(U_JG_KAF);
413 17007 : REGISTER_U_CONST(U_JG_KAPH);
414 17007 : REGISTER_U_CONST(U_JG_KNOTTED_HEH);
415 17007 : REGISTER_U_CONST(U_JG_LAM);
416 17007 : REGISTER_U_CONST(U_JG_LAMADH);
417 17007 : REGISTER_U_CONST(U_JG_MEEM);
418 17007 : REGISTER_U_CONST(U_JG_MIM);
419 17007 : REGISTER_U_CONST(U_JG_NOON);
420 17007 : REGISTER_U_CONST(U_JG_NUN);
421 17007 : REGISTER_U_CONST(U_JG_PE);
422 17007 : REGISTER_U_CONST(U_JG_QAF);
423 17007 : REGISTER_U_CONST(U_JG_QAPH);
424 17007 : REGISTER_U_CONST(U_JG_REH);
425 17007 : REGISTER_U_CONST(U_JG_REVERSED_PE);
426 17007 : REGISTER_U_CONST(U_JG_SAD);
427 17007 : REGISTER_U_CONST(U_JG_SADHE);
428 17007 : REGISTER_U_CONST(U_JG_SEEN);
429 17007 : REGISTER_U_CONST(U_JG_SEMKATH);
430 17007 : REGISTER_U_CONST(U_JG_SHIN);
431 17007 : REGISTER_U_CONST(U_JG_SWASH_KAF);
432 17007 : REGISTER_U_CONST(U_JG_SYRIAC_WAW);
433 17007 : REGISTER_U_CONST(U_JG_TAH);
434 17007 : REGISTER_U_CONST(U_JG_TAW);
435 17007 : REGISTER_U_CONST(U_JG_TEH_MARBUTA);
436 17007 : REGISTER_U_CONST(U_JG_TETH);
437 17007 : REGISTER_U_CONST(U_JG_WAW);
438 17007 : REGISTER_U_CONST(U_JG_YEH);
439 17007 : REGISTER_U_CONST(U_JG_YEH_BARREE);
440 17007 : REGISTER_U_CONST(U_JG_YEH_WITH_TAIL);
441 17007 : REGISTER_U_CONST(U_JG_YUDH);
442 17007 : REGISTER_U_CONST(U_JG_YUDH_HE);
443 17007 : REGISTER_U_CONST(U_JG_ZAIN);
444 17007 : REGISTER_U_CONST(U_JG_FE);
445 17007 : REGISTER_U_CONST(U_JG_KHAPH);
446 17007 : REGISTER_U_CONST(U_JG_ZHAIN);
447 17007 : }
448 : /* }}} */
449 :
450 : /* {{{ Grapheme cluster break constants */
451 : static void php_register_grapheme_cluster_break_constants(TSRMLS_D)
452 17007 : {
453 17007 : REGISTER_U_CONST(U_GCB_OTHER);
454 17007 : REGISTER_U_CONST(U_GCB_CONTROL);
455 17007 : REGISTER_U_CONST(U_GCB_CR);
456 17007 : REGISTER_U_CONST(U_GCB_EXTEND);
457 17007 : REGISTER_U_CONST(U_GCB_L);
458 17007 : REGISTER_U_CONST(U_GCB_LF);
459 17007 : REGISTER_U_CONST(U_GCB_LV);
460 17007 : REGISTER_U_CONST(U_GCB_LVT);
461 17007 : REGISTER_U_CONST(U_GCB_T);
462 17007 : REGISTER_U_CONST(U_GCB_V);
463 17007 : }
464 : /* }}} */
465 :
466 : /* {{{ Work break constants */
467 : static void php_register_word_break_constants(TSRMLS_D)
468 17007 : {
469 17007 : REGISTER_U_CONST(U_WB_OTHER);
470 17007 : REGISTER_U_CONST(U_WB_ALETTER);
471 17007 : REGISTER_U_CONST(U_WB_FORMAT);
472 17007 : REGISTER_U_CONST(U_WB_KATAKANA);
473 17007 : REGISTER_U_CONST(U_WB_MIDLETTER);
474 17007 : REGISTER_U_CONST(U_WB_MIDNUM);
475 17007 : REGISTER_U_CONST(U_WB_NUMERIC);
476 17007 : REGISTER_U_CONST(U_WB_EXTENDNUMLET);
477 17007 : }
478 : /* }}} */
479 :
480 : /* {{{ Sentence break constants */
481 : static void php_register_sentence_break_constants(TSRMLS_D)
482 17007 : {
483 17007 : REGISTER_U_CONST(U_SB_OTHER);
484 17007 : REGISTER_U_CONST(U_SB_ATERM);
485 17007 : REGISTER_U_CONST(U_SB_CLOSE);
486 17007 : REGISTER_U_CONST(U_SB_FORMAT);
487 17007 : REGISTER_U_CONST(U_SB_LOWER);
488 17007 : REGISTER_U_CONST(U_SB_NUMERIC);
489 17007 : REGISTER_U_CONST(U_SB_OLETTER);
490 17007 : REGISTER_U_CONST(U_SB_SEP);
491 17007 : REGISTER_U_CONST(U_SB_SP);
492 17007 : REGISTER_U_CONST(U_SB_STERM);
493 17007 : REGISTER_U_CONST(U_SB_UPPER);
494 17007 : }
495 : /* }}} */
496 :
497 : /* {{{ Line break constants */
498 : static void php_register_line_break_constants(TSRMLS_D)
499 17007 : {
500 17007 : REGISTER_U_CONST(U_LB_UNKNOWN);
501 17007 : REGISTER_U_CONST(U_LB_AMBIGUOUS);
502 17007 : REGISTER_U_CONST(U_LB_ALPHABETIC);
503 17007 : REGISTER_U_CONST(U_LB_BREAK_BOTH);
504 17007 : REGISTER_U_CONST(U_LB_BREAK_AFTER);
505 17007 : REGISTER_U_CONST(U_LB_BREAK_BEFORE);
506 17007 : REGISTER_U_CONST(U_LB_MANDATORY_BREAK);
507 17007 : REGISTER_U_CONST(U_LB_CONTINGENT_BREAK);
508 17007 : REGISTER_U_CONST(U_LB_CLOSE_PUNCTUATION);
509 17007 : REGISTER_U_CONST(U_LB_COMBINING_MARK);
510 17007 : REGISTER_U_CONST(U_LB_CARRIAGE_RETURN);
511 17007 : REGISTER_U_CONST(U_LB_EXCLAMATION);
512 17007 : REGISTER_U_CONST(U_LB_GLUE);
513 17007 : REGISTER_U_CONST(U_LB_HYPHEN);
514 17007 : REGISTER_U_CONST(U_LB_IDEOGRAPHIC);
515 17007 : REGISTER_U_CONST(U_LB_INSEPARABLE);
516 17007 : REGISTER_U_CONST(U_LB_INFIX_NUMERIC);
517 17007 : REGISTER_U_CONST(U_LB_LINE_FEED);
518 17007 : REGISTER_U_CONST(U_LB_NONSTARTER);
519 17007 : REGISTER_U_CONST(U_LB_NUMERIC);
520 17007 : REGISTER_U_CONST(U_LB_OPEN_PUNCTUATION);
521 17007 : REGISTER_U_CONST(U_LB_POSTFIX_NUMERIC);
522 17007 : REGISTER_U_CONST(U_LB_PREFIX_NUMERIC);
523 17007 : REGISTER_U_CONST(U_LB_QUOTATION);
524 17007 : REGISTER_U_CONST(U_LB_COMPLEX_CONTEXT);
525 17007 : REGISTER_U_CONST(U_LB_SURROGATE);
526 17007 : REGISTER_U_CONST(U_LB_SPACE);
527 17007 : REGISTER_U_CONST(U_LB_BREAK_SYMBOLS);
528 17007 : REGISTER_U_CONST(U_LB_ZWSPACE);
529 17007 : REGISTER_U_CONST(U_LB_NEXT_LINE);
530 17007 : REGISTER_U_CONST(U_LB_WORD_JOINER);
531 17007 : REGISTER_U_CONST(U_LB_H2);
532 17007 : REGISTER_U_CONST(U_LB_H3);
533 17007 : REGISTER_U_CONST(U_LB_JL);
534 17007 : REGISTER_U_CONST(U_LB_JT);
535 17007 : REGISTER_U_CONST(U_LB_JV);
536 17007 : }
537 : /* }}} */
538 :
539 : /* {{{ Numeric type constants */
540 : static void php_register_numeric_type_constants(TSRMLS_D)
541 17007 : {
542 17007 : REGISTER_U_CONST(U_NT_NONE);
543 17007 : REGISTER_U_CONST(U_NT_DECIMAL);
544 17007 : REGISTER_U_CONST(U_NT_DIGIT);
545 17007 : REGISTER_U_CONST(U_NT_NUMERIC);
546 17007 : }
547 : /* }}} */
548 :
549 : /* {{{ Hangul syllable type constants */
550 : static void php_register_hangul_syllable_constants(TSRMLS_D)
551 17007 : {
552 17007 : REGISTER_U_CONST(U_HST_NOT_APPLICABLE);
553 17007 : REGISTER_U_CONST(U_HST_LEADING_JAMO);
554 17007 : REGISTER_U_CONST(U_HST_VOWEL_JAMO);
555 17007 : REGISTER_U_CONST(U_HST_TRAILING_JAMO);
556 17007 : REGISTER_U_CONST(U_HST_LV_SYLLABLE);
557 17007 : REGISTER_U_CONST(U_HST_LVT_SYLLABLE);
558 17007 : }
559 : /* }}} */
560 :
561 : /* {{{ Miscellaneous constants */
562 : static void php_register_misc_constants(TSRMLS_D)
563 17007 : {
564 17007 : zend_declare_class_constant_double(u_const_ce, "NO_NUMERIC_VALUE",
565 : sizeof("NO_NUMERIC_VALUE")-1, U_NO_NUMERIC_VALUE TSRMLS_CC);
566 :
567 : /* Min and max codepoint values */
568 17007 : REGISTER_U_CONST(UCHAR_MIN_VALUE);
569 17007 : REGISTER_U_CONST(UCHAR_MAX_VALUE);
570 :
571 : /* Property name constants */
572 17007 : REGISTER_U_CONST(U_SHORT_PROPERTY_NAME);
573 17007 : REGISTER_U_CONST(U_LONG_PROPERTY_NAME);
574 :
575 : /* Case folding constants */
576 17007 : REGISTER_U_CONST(U_FOLD_CASE_DEFAULT);
577 17007 : REGISTER_U_CONST(U_FOLD_CASE_EXCLUDE_SPECIAL_I);
578 17007 : }
579 : /* }}} */
580 :
581 : void php_register_unicode_constants(TSRMLS_D)
582 17007 : {
583 : zend_class_entry ce;
584 :
585 17007 : INIT_CLASS_ENTRY(ce, "U", NULL);
586 17007 : u_const_ce = zend_register_internal_class(&ce TSRMLS_CC);
587 17007 : u_const_ce->ce_flags = ZEND_ACC_FINAL_CLASS;
588 :
589 17007 : php_register_property_constants(TSRMLS_C);
590 17007 : php_register_general_category_constants(TSRMLS_C);
591 17007 : php_register_char_direction_constants(TSRMLS_C);
592 17007 : php_register_block_constants(TSRMLS_C);
593 17007 : php_register_east_asian_width_constants(TSRMLS_C);
594 17007 : php_register_decomposition_type_constants(TSRMLS_C);
595 17007 : php_register_joining_type_constants(TSRMLS_C);
596 17007 : php_register_joining_group_constants(TSRMLS_C);
597 17007 : php_register_grapheme_cluster_break_constants(TSRMLS_C);
598 17007 : php_register_word_break_constants(TSRMLS_C);
599 17007 : php_register_sentence_break_constants(TSRMLS_C);
600 17007 : php_register_line_break_constants(TSRMLS_C);
601 17007 : php_register_numeric_type_constants(TSRMLS_C);
602 17007 : php_register_hangul_syllable_constants(TSRMLS_C);
603 17007 : php_register_misc_constants(TSRMLS_C);
604 17007 : }
605 :
606 : /*
607 : * Local variables:
608 : * tab-width: 4
609 : * c-basic-offset: 4
610 : * End:
611 : * vim600: noet sw=4 ts=4 fdm=marker
612 : * vim<600: noet sw=4 ts=4
613 : */
|