/* +----------------------------------------------------------------------+ | PHP Version 6 | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andrei Zmievski | | Wez Furlong | +----------------------------------------------------------------------+ */ #include "php_unicode.h" PHPAPI zend_class_entry *u_const_ce; #define REGISTER_U_CONST(constant) \ php_register_u_constant(#constant, (long)constant TSRMLS_CC) static void php_register_u_constant(const char *name, long value TSRMLS_DC) { const char *p = name; if (*p == 'U') p++; if (*p == '_') p++; zend_declare_class_constant_long(u_const_ce, (char *)p, strlen(p), value TSRMLS_CC); } /* {{{ Character property constants */ static void php_register_property_constants(TSRMLS_D) { REGISTER_U_CONST(UCHAR_ALPHABETIC); REGISTER_U_CONST(UCHAR_ASCII_HEX_DIGIT); REGISTER_U_CONST(UCHAR_BIDI_CONTROL); REGISTER_U_CONST(UCHAR_BIDI_MIRRORED); REGISTER_U_CONST(UCHAR_DASH); REGISTER_U_CONST(UCHAR_DEFAULT_IGNORABLE_CODE_POINT); REGISTER_U_CONST(UCHAR_DEPRECATED); REGISTER_U_CONST(UCHAR_DIACRITIC); REGISTER_U_CONST(UCHAR_EXTENDER); REGISTER_U_CONST(UCHAR_FULL_COMPOSITION_EXCLUSION); REGISTER_U_CONST(UCHAR_GRAPHEME_BASE); REGISTER_U_CONST(UCHAR_GRAPHEME_EXTEND); REGISTER_U_CONST(UCHAR_GRAPHEME_LINK); REGISTER_U_CONST(UCHAR_HEX_DIGIT); REGISTER_U_CONST(UCHAR_HYPHEN); REGISTER_U_CONST(UCHAR_ID_CONTINUE); REGISTER_U_CONST(UCHAR_ID_START); REGISTER_U_CONST(UCHAR_IDEOGRAPHIC); REGISTER_U_CONST(UCHAR_IDS_BINARY_OPERATOR); REGISTER_U_CONST(UCHAR_IDS_TRINARY_OPERATOR); REGISTER_U_CONST(UCHAR_JOIN_CONTROL); REGISTER_U_CONST(UCHAR_LOGICAL_ORDER_EXCEPTION); REGISTER_U_CONST(UCHAR_LOWERCASE); REGISTER_U_CONST(UCHAR_MATH); REGISTER_U_CONST(UCHAR_NONCHARACTER_CODE_POINT); REGISTER_U_CONST(UCHAR_QUOTATION_MARK); REGISTER_U_CONST(UCHAR_RADICAL); REGISTER_U_CONST(UCHAR_SOFT_DOTTED); REGISTER_U_CONST(UCHAR_TERMINAL_PUNCTUATION); REGISTER_U_CONST(UCHAR_UNIFIED_IDEOGRAPH); REGISTER_U_CONST(UCHAR_UPPERCASE); REGISTER_U_CONST(UCHAR_WHITE_SPACE); REGISTER_U_CONST(UCHAR_XID_CONTINUE); REGISTER_U_CONST(UCHAR_XID_START); REGISTER_U_CONST(UCHAR_CASE_SENSITIVE); REGISTER_U_CONST(UCHAR_S_TERM); REGISTER_U_CONST(UCHAR_VARIATION_SELECTOR); REGISTER_U_CONST(UCHAR_NFD_INERT); REGISTER_U_CONST(UCHAR_NFKD_INERT); REGISTER_U_CONST(UCHAR_NFC_INERT); REGISTER_U_CONST(UCHAR_NFKC_INERT); REGISTER_U_CONST(UCHAR_SEGMENT_STARTER); REGISTER_U_CONST(UCHAR_PATTERN_SYNTAX); REGISTER_U_CONST(UCHAR_PATTERN_WHITE_SPACE); REGISTER_U_CONST(UCHAR_POSIX_ALNUM); REGISTER_U_CONST(UCHAR_POSIX_BLANK); REGISTER_U_CONST(UCHAR_POSIX_GRAPH); REGISTER_U_CONST(UCHAR_POSIX_PRINT); REGISTER_U_CONST(UCHAR_POSIX_XDIGIT); REGISTER_U_CONST(UCHAR_BIDI_CLASS); REGISTER_U_CONST(UCHAR_INT_START); REGISTER_U_CONST(UCHAR_BLOCK); REGISTER_U_CONST(UCHAR_CANONICAL_COMBINING_CLASS); REGISTER_U_CONST(UCHAR_DECOMPOSITION_TYPE); REGISTER_U_CONST(UCHAR_EAST_ASIAN_WIDTH); REGISTER_U_CONST(UCHAR_GENERAL_CATEGORY); REGISTER_U_CONST(UCHAR_JOINING_GROUP); REGISTER_U_CONST(UCHAR_JOINING_TYPE); REGISTER_U_CONST(UCHAR_LINE_BREAK); REGISTER_U_CONST(UCHAR_NUMERIC_TYPE); REGISTER_U_CONST(UCHAR_SCRIPT); REGISTER_U_CONST(UCHAR_HANGUL_SYLLABLE_TYPE); REGISTER_U_CONST(UCHAR_NFD_QUICK_CHECK); REGISTER_U_CONST(UCHAR_NFKD_QUICK_CHECK); REGISTER_U_CONST(UCHAR_NFC_QUICK_CHECK); REGISTER_U_CONST(UCHAR_NFKC_QUICK_CHECK); REGISTER_U_CONST(UCHAR_LEAD_CANONICAL_COMBINING_CLASS); REGISTER_U_CONST(UCHAR_TRAIL_CANONICAL_COMBINING_CLASS); REGISTER_U_CONST(UCHAR_GRAPHEME_CLUSTER_BREAK); REGISTER_U_CONST(UCHAR_SENTENCE_BREAK); REGISTER_U_CONST(UCHAR_WORD_BREAK); REGISTER_U_CONST(UCHAR_GENERAL_CATEGORY_MASK); REGISTER_U_CONST(UCHAR_NUMERIC_VALUE); REGISTER_U_CONST(UCHAR_AGE); REGISTER_U_CONST(UCHAR_BIDI_MIRRORING_GLYPH); REGISTER_U_CONST(UCHAR_CASE_FOLDING); REGISTER_U_CONST(UCHAR_ISO_COMMENT); REGISTER_U_CONST(UCHAR_LOWERCASE_MAPPING); REGISTER_U_CONST(UCHAR_NAME); REGISTER_U_CONST(UCHAR_SIMPLE_CASE_FOLDING); REGISTER_U_CONST(UCHAR_SIMPLE_LOWERCASE_MAPPING); REGISTER_U_CONST(UCHAR_SIMPLE_TITLECASE_MAPPING); REGISTER_U_CONST(UCHAR_SIMPLE_UPPERCASE_MAPPING); REGISTER_U_CONST(UCHAR_TITLECASE_MAPPING); REGISTER_U_CONST(UCHAR_UNICODE_1_NAME); REGISTER_U_CONST(UCHAR_UPPERCASE_MAPPING); REGISTER_U_CONST(UCHAR_INVALID_CODE); } /* }}} */ /* {{{ General category constants */ static void php_register_general_category_constants(TSRMLS_D) { REGISTER_U_CONST(U_UNASSIGNED); REGISTER_U_CONST(U_GENERAL_OTHER_TYPES); REGISTER_U_CONST(U_UPPERCASE_LETTER); REGISTER_U_CONST(U_LOWERCASE_LETTER); REGISTER_U_CONST(U_TITLECASE_LETTER); REGISTER_U_CONST(U_MODIFIER_LETTER); REGISTER_U_CONST(U_OTHER_LETTER); REGISTER_U_CONST(U_NON_SPACING_MARK); REGISTER_U_CONST(U_ENCLOSING_MARK); REGISTER_U_CONST(U_COMBINING_SPACING_MARK); REGISTER_U_CONST(U_DECIMAL_DIGIT_NUMBER); REGISTER_U_CONST(U_LETTER_NUMBER); REGISTER_U_CONST(U_OTHER_NUMBER); REGISTER_U_CONST(U_SPACE_SEPARATOR); REGISTER_U_CONST(U_LINE_SEPARATOR); REGISTER_U_CONST(U_PARAGRAPH_SEPARATOR); REGISTER_U_CONST(U_CONTROL_CHAR); REGISTER_U_CONST(U_FORMAT_CHAR); REGISTER_U_CONST(U_PRIVATE_USE_CHAR); REGISTER_U_CONST(U_SURROGATE); REGISTER_U_CONST(U_DASH_PUNCTUATION); REGISTER_U_CONST(U_START_PUNCTUATION); REGISTER_U_CONST(U_END_PUNCTUATION); REGISTER_U_CONST(U_CONNECTOR_PUNCTUATION); REGISTER_U_CONST(U_OTHER_PUNCTUATION); REGISTER_U_CONST(U_MATH_SYMBOL); REGISTER_U_CONST(U_CURRENCY_SYMBOL); REGISTER_U_CONST(U_MODIFIER_SYMBOL); REGISTER_U_CONST(U_OTHER_SYMBOL); REGISTER_U_CONST(U_INITIAL_PUNCTUATION); REGISTER_U_CONST(U_FINAL_PUNCTUATION); } /* }}} */ /* {{{ Character direction constants */ static void php_register_char_direction_constants(TSRMLS_D) { REGISTER_U_CONST(U_LEFT_TO_RIGHT); REGISTER_U_CONST(U_RIGHT_TO_LEFT); REGISTER_U_CONST(U_EUROPEAN_NUMBER); REGISTER_U_CONST(U_EUROPEAN_NUMBER_SEPARATOR); REGISTER_U_CONST(U_EUROPEAN_NUMBER_TERMINATOR); REGISTER_U_CONST(U_ARABIC_NUMBER); REGISTER_U_CONST(U_COMMON_NUMBER_SEPARATOR); REGISTER_U_CONST(U_BLOCK_SEPARATOR); REGISTER_U_CONST(U_SEGMENT_SEPARATOR); REGISTER_U_CONST(U_WHITE_SPACE_NEUTRAL); REGISTER_U_CONST(U_OTHER_NEUTRAL); REGISTER_U_CONST(U_LEFT_TO_RIGHT_EMBEDDING); REGISTER_U_CONST(U_LEFT_TO_RIGHT_OVERRIDE); REGISTER_U_CONST(U_RIGHT_TO_LEFT_ARABIC); REGISTER_U_CONST(U_RIGHT_TO_LEFT_EMBEDDING); REGISTER_U_CONST(U_RIGHT_TO_LEFT_OVERRIDE); REGISTER_U_CONST(U_POP_DIRECTIONAL_FORMAT); REGISTER_U_CONST(U_DIR_NON_SPACING_MARK); REGISTER_U_CONST(U_BOUNDARY_NEUTRAL); } /* }}} */ /* {{{ Unicode block constants */ static void php_register_block_constants(TSRMLS_D) { REGISTER_U_CONST(UBLOCK_NO_BLOCK); REGISTER_U_CONST(UBLOCK_BASIC_LATIN); REGISTER_U_CONST(UBLOCK_LATIN_1_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_A); REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_B); REGISTER_U_CONST(UBLOCK_IPA_EXTENSIONS); REGISTER_U_CONST(UBLOCK_SPACING_MODIFIER_LETTERS); REGISTER_U_CONST(UBLOCK_COMBINING_DIACRITICAL_MARKS); REGISTER_U_CONST(UBLOCK_GREEK); REGISTER_U_CONST(UBLOCK_CYRILLIC); REGISTER_U_CONST(UBLOCK_ARMENIAN); REGISTER_U_CONST(UBLOCK_HEBREW); REGISTER_U_CONST(UBLOCK_ARABIC); REGISTER_U_CONST(UBLOCK_SYRIAC); REGISTER_U_CONST(UBLOCK_THAANA); REGISTER_U_CONST(UBLOCK_DEVANAGARI); REGISTER_U_CONST(UBLOCK_BENGALI); REGISTER_U_CONST(UBLOCK_GURMUKHI); REGISTER_U_CONST(UBLOCK_GUJARATI); REGISTER_U_CONST(UBLOCK_ORIYA); REGISTER_U_CONST(UBLOCK_TAMIL); REGISTER_U_CONST(UBLOCK_TELUGU); REGISTER_U_CONST(UBLOCK_KANNADA); REGISTER_U_CONST(UBLOCK_MALAYALAM); REGISTER_U_CONST(UBLOCK_SINHALA); REGISTER_U_CONST(UBLOCK_THAI); REGISTER_U_CONST(UBLOCK_LAO); REGISTER_U_CONST(UBLOCK_TIBETAN); REGISTER_U_CONST(UBLOCK_MYANMAR); REGISTER_U_CONST(UBLOCK_GEORGIAN); REGISTER_U_CONST(UBLOCK_HANGUL_JAMO); REGISTER_U_CONST(UBLOCK_ETHIOPIC); REGISTER_U_CONST(UBLOCK_CHEROKEE); REGISTER_U_CONST(UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS); REGISTER_U_CONST(UBLOCK_OGHAM); REGISTER_U_CONST(UBLOCK_RUNIC); REGISTER_U_CONST(UBLOCK_KHMER); REGISTER_U_CONST(UBLOCK_MONGOLIAN); REGISTER_U_CONST(UBLOCK_LATIN_EXTENDED_ADDITIONAL); REGISTER_U_CONST(UBLOCK_GREEK_EXTENDED); REGISTER_U_CONST(UBLOCK_GENERAL_PUNCTUATION); REGISTER_U_CONST(UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS); REGISTER_U_CONST(UBLOCK_CURRENCY_SYMBOLS); REGISTER_U_CONST(UBLOCK_COMBINING_MARKS_FOR_SYMBOLS); REGISTER_U_CONST(UBLOCK_LETTERLIKE_SYMBOLS); REGISTER_U_CONST(UBLOCK_NUMBER_FORMS); REGISTER_U_CONST(UBLOCK_ARROWS); REGISTER_U_CONST(UBLOCK_MATHEMATICAL_OPERATORS); REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_TECHNICAL); REGISTER_U_CONST(UBLOCK_CONTROL_PICTURES); REGISTER_U_CONST(UBLOCK_OPTICAL_CHARACTER_RECOGNITION); REGISTER_U_CONST(UBLOCK_ENCLOSED_ALPHANUMERICS); REGISTER_U_CONST(UBLOCK_BOX_DRAWING); REGISTER_U_CONST(UBLOCK_BLOCK_ELEMENTS); REGISTER_U_CONST(UBLOCK_GEOMETRIC_SHAPES); REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_SYMBOLS); REGISTER_U_CONST(UBLOCK_DINGBATS); REGISTER_U_CONST(UBLOCK_BRAILLE_PATTERNS); REGISTER_U_CONST(UBLOCK_CJK_RADICALS_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_KANGXI_RADICALS); REGISTER_U_CONST(UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS); REGISTER_U_CONST(UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION); REGISTER_U_CONST(UBLOCK_HIRAGANA); REGISTER_U_CONST(UBLOCK_KATAKANA); REGISTER_U_CONST(UBLOCK_BOPOMOFO); REGISTER_U_CONST(UBLOCK_HANGUL_COMPATIBILITY_JAMO); REGISTER_U_CONST(UBLOCK_KANBUN); REGISTER_U_CONST(UBLOCK_BOPOMOFO_EXTENDED); REGISTER_U_CONST(UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS); REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY); REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A); REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS); REGISTER_U_CONST(UBLOCK_YI_SYLLABLES); REGISTER_U_CONST(UBLOCK_YI_RADICALS); REGISTER_U_CONST(UBLOCK_HANGUL_SYLLABLES); REGISTER_U_CONST(UBLOCK_HIGH_SURROGATES); REGISTER_U_CONST(UBLOCK_HIGH_PRIVATE_USE_SURROGATES); REGISTER_U_CONST(UBLOCK_LOW_SURROGATES); REGISTER_U_CONST(UBLOCK_PRIVATE_USE_AREA); REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS); REGISTER_U_CONST(UBLOCK_ALPHABETIC_PRESENTATION_FORMS); REGISTER_U_CONST(UBLOCK_ARABIC_PRESENTATION_FORMS_A); REGISTER_U_CONST(UBLOCK_COMBINING_HALF_MARKS); REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_FORMS); REGISTER_U_CONST(UBLOCK_SMALL_FORM_VARIANTS); REGISTER_U_CONST(UBLOCK_ARABIC_PRESENTATION_FORMS_B); REGISTER_U_CONST(UBLOCK_SPECIALS); REGISTER_U_CONST(UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS); REGISTER_U_CONST(UBLOCK_OLD_ITALIC); REGISTER_U_CONST(UBLOCK_GOTHIC); REGISTER_U_CONST(UBLOCK_DESERET); REGISTER_U_CONST(UBLOCK_BYZANTINE_MUSICAL_SYMBOLS); REGISTER_U_CONST(UBLOCK_MUSICAL_SYMBOLS); REGISTER_U_CONST(UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS); REGISTER_U_CONST(UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B); REGISTER_U_CONST(UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_TAGS); REGISTER_U_CONST(UBLOCK_CYRILLIC_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_TAGALOG); REGISTER_U_CONST(UBLOCK_HANUNOO); REGISTER_U_CONST(UBLOCK_BUHID); REGISTER_U_CONST(UBLOCK_TAGBANWA); REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A); REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_ARROWS_A); REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_ARROWS_B); REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B); REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS); REGISTER_U_CONST(UBLOCK_KATAKANA_PHONETIC_EXTENSIONS); REGISTER_U_CONST(UBLOCK_VARIATION_SELECTORS); REGISTER_U_CONST(UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A); REGISTER_U_CONST(UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B); REGISTER_U_CONST(UBLOCK_LIMBU); REGISTER_U_CONST(UBLOCK_TAI_LE); REGISTER_U_CONST(UBLOCK_KHMER_SYMBOLS); REGISTER_U_CONST(UBLOCK_PHONETIC_EXTENSIONS); REGISTER_U_CONST(UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS); REGISTER_U_CONST(UBLOCK_YIJING_HEXAGRAM_SYMBOLS); REGISTER_U_CONST(UBLOCK_LINEAR_B_SYLLABARY); REGISTER_U_CONST(UBLOCK_LINEAR_B_IDEOGRAMS); REGISTER_U_CONST(UBLOCK_AEGEAN_NUMBERS); REGISTER_U_CONST(UBLOCK_UGARITIC); REGISTER_U_CONST(UBLOCK_SHAVIAN); REGISTER_U_CONST(UBLOCK_OSMANYA); REGISTER_U_CONST(UBLOCK_CYPRIOT_SYLLABARY); REGISTER_U_CONST(UBLOCK_TAI_XUAN_JING_SYMBOLS); REGISTER_U_CONST(UBLOCK_VARIATION_SELECTORS_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION); REGISTER_U_CONST(UBLOCK_ANCIENT_GREEK_NUMBERS); REGISTER_U_CONST(UBLOCK_ARABIC_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_BUGINESE); REGISTER_U_CONST(UBLOCK_CJK_STROKES); REGISTER_U_CONST(UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_COPTIC); REGISTER_U_CONST(UBLOCK_ETHIOPIC_EXTENDED); REGISTER_U_CONST(UBLOCK_ETHIOPIC_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_GEORGIAN_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_GLAGOLITIC); REGISTER_U_CONST(UBLOCK_KHAROSHTHI); REGISTER_U_CONST(UBLOCK_MODIFIER_TONE_LETTERS); REGISTER_U_CONST(UBLOCK_NEW_TAI_LUE); REGISTER_U_CONST(UBLOCK_OLD_PERSIAN); REGISTER_U_CONST(UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT); REGISTER_U_CONST(UBLOCK_SUPPLEMENTAL_PUNCTUATION); REGISTER_U_CONST(UBLOCK_SYLOTI_NAGRI); REGISTER_U_CONST(UBLOCK_TIFINAGH); REGISTER_U_CONST(UBLOCK_VERTICAL_FORMS); } /* }}} */ /* {{{ East Asian width constants */ static void php_register_east_asian_width_constants(TSRMLS_D) { REGISTER_U_CONST(U_EA_NEUTRAL); REGISTER_U_CONST(U_EA_AMBIGUOUS); REGISTER_U_CONST(U_EA_HALFWIDTH); REGISTER_U_CONST(U_EA_FULLWIDTH); REGISTER_U_CONST(U_EA_NARROW); REGISTER_U_CONST(U_EA_WIDE); } /* }}} */ /* {{{ Decomposition type constants */ static void php_register_decomposition_type_constants(TSRMLS_D) { REGISTER_U_CONST(U_DT_NONE); REGISTER_U_CONST(U_DT_CANONICAL); REGISTER_U_CONST(U_DT_COMPAT); REGISTER_U_CONST(U_DT_CIRCLE); REGISTER_U_CONST(U_DT_FINAL); REGISTER_U_CONST(U_DT_FONT); REGISTER_U_CONST(U_DT_FRACTION); REGISTER_U_CONST(U_DT_INITIAL); REGISTER_U_CONST(U_DT_ISOLATED); REGISTER_U_CONST(U_DT_MEDIAL); REGISTER_U_CONST(U_DT_NARROW); REGISTER_U_CONST(U_DT_NOBREAK); REGISTER_U_CONST(U_DT_SMALL); REGISTER_U_CONST(U_DT_SQUARE); REGISTER_U_CONST(U_DT_SUB); REGISTER_U_CONST(U_DT_SUPER); REGISTER_U_CONST(U_DT_VERTICAL); REGISTER_U_CONST(U_DT_WIDE); } /* }}} */ /* {{{ Joining type constants */ static void php_register_joining_type_constants(TSRMLS_D) { REGISTER_U_CONST(U_JT_NON_JOINING); REGISTER_U_CONST(U_JT_JOIN_CAUSING); REGISTER_U_CONST(U_JT_DUAL_JOINING); REGISTER_U_CONST(U_JT_LEFT_JOINING); REGISTER_U_CONST(U_JT_RIGHT_JOINING); REGISTER_U_CONST(U_JT_TRANSPARENT); } /* }}} */ /* {{{ Joining group constants */ static void php_register_joining_group_constants(TSRMLS_D) { REGISTER_U_CONST(U_JG_NO_JOINING_GROUP); REGISTER_U_CONST(U_JG_AIN); REGISTER_U_CONST(U_JG_ALAPH); REGISTER_U_CONST(U_JG_ALEF); REGISTER_U_CONST(U_JG_BEH); REGISTER_U_CONST(U_JG_BETH); REGISTER_U_CONST(U_JG_DAL); REGISTER_U_CONST(U_JG_DALATH_RISH); REGISTER_U_CONST(U_JG_E); REGISTER_U_CONST(U_JG_FEH); REGISTER_U_CONST(U_JG_FINAL_SEMKATH); REGISTER_U_CONST(U_JG_GAF); REGISTER_U_CONST(U_JG_GAMAL); REGISTER_U_CONST(U_JG_HAH); REGISTER_U_CONST(U_JG_HAMZA_ON_HEH_GOAL); REGISTER_U_CONST(U_JG_HE); REGISTER_U_CONST(U_JG_HEH); REGISTER_U_CONST(U_JG_HEH_GOAL); REGISTER_U_CONST(U_JG_HETH); REGISTER_U_CONST(U_JG_KAF); REGISTER_U_CONST(U_JG_KAPH); REGISTER_U_CONST(U_JG_KNOTTED_HEH); REGISTER_U_CONST(U_JG_LAM); REGISTER_U_CONST(U_JG_LAMADH); REGISTER_U_CONST(U_JG_MEEM); REGISTER_U_CONST(U_JG_MIM); REGISTER_U_CONST(U_JG_NOON); REGISTER_U_CONST(U_JG_NUN); REGISTER_U_CONST(U_JG_PE); REGISTER_U_CONST(U_JG_QAF); REGISTER_U_CONST(U_JG_QAPH); REGISTER_U_CONST(U_JG_REH); REGISTER_U_CONST(U_JG_REVERSED_PE); REGISTER_U_CONST(U_JG_SAD); REGISTER_U_CONST(U_JG_SADHE); REGISTER_U_CONST(U_JG_SEEN); REGISTER_U_CONST(U_JG_SEMKATH); REGISTER_U_CONST(U_JG_SHIN); REGISTER_U_CONST(U_JG_SWASH_KAF); REGISTER_U_CONST(U_JG_SYRIAC_WAW); REGISTER_U_CONST(U_JG_TAH); REGISTER_U_CONST(U_JG_TAW); REGISTER_U_CONST(U_JG_TEH_MARBUTA); REGISTER_U_CONST(U_JG_TETH); REGISTER_U_CONST(U_JG_WAW); REGISTER_U_CONST(U_JG_YEH); REGISTER_U_CONST(U_JG_YEH_BARREE); REGISTER_U_CONST(U_JG_YEH_WITH_TAIL); REGISTER_U_CONST(U_JG_YUDH); REGISTER_U_CONST(U_JG_YUDH_HE); REGISTER_U_CONST(U_JG_ZAIN); REGISTER_U_CONST(U_JG_FE); REGISTER_U_CONST(U_JG_KHAPH); REGISTER_U_CONST(U_JG_ZHAIN); } /* }}} */ /* {{{ Grapheme cluster break constants */ static void php_register_grapheme_cluster_break_constants(TSRMLS_D) { REGISTER_U_CONST(U_GCB_OTHER); REGISTER_U_CONST(U_GCB_CONTROL); REGISTER_U_CONST(U_GCB_CR); REGISTER_U_CONST(U_GCB_EXTEND); REGISTER_U_CONST(U_GCB_L); REGISTER_U_CONST(U_GCB_LF); REGISTER_U_CONST(U_GCB_LV); REGISTER_U_CONST(U_GCB_LVT); REGISTER_U_CONST(U_GCB_T); REGISTER_U_CONST(U_GCB_V); } /* }}} */ /* {{{ Work break constants */ static void php_register_word_break_constants(TSRMLS_D) { REGISTER_U_CONST(U_WB_OTHER); REGISTER_U_CONST(U_WB_ALETTER); REGISTER_U_CONST(U_WB_FORMAT); REGISTER_U_CONST(U_WB_KATAKANA); REGISTER_U_CONST(U_WB_MIDLETTER); REGISTER_U_CONST(U_WB_MIDNUM); REGISTER_U_CONST(U_WB_NUMERIC); REGISTER_U_CONST(U_WB_EXTENDNUMLET); } /* }}} */ /* {{{ Sentence break constants */ static void php_register_sentence_break_constants(TSRMLS_D) { REGISTER_U_CONST(U_SB_OTHER); REGISTER_U_CONST(U_SB_ATERM); REGISTER_U_CONST(U_SB_CLOSE); REGISTER_U_CONST(U_SB_FORMAT); REGISTER_U_CONST(U_SB_LOWER); REGISTER_U_CONST(U_SB_NUMERIC); REGISTER_U_CONST(U_SB_OLETTER); REGISTER_U_CONST(U_SB_SEP); REGISTER_U_CONST(U_SB_SP); REGISTER_U_CONST(U_SB_STERM); REGISTER_U_CONST(U_SB_UPPER); } /* }}} */ /* {{{ Line break constants */ static void php_register_line_break_constants(TSRMLS_D) { REGISTER_U_CONST(U_LB_UNKNOWN); REGISTER_U_CONST(U_LB_AMBIGUOUS); REGISTER_U_CONST(U_LB_ALPHABETIC); REGISTER_U_CONST(U_LB_BREAK_BOTH); REGISTER_U_CONST(U_LB_BREAK_AFTER); REGISTER_U_CONST(U_LB_BREAK_BEFORE); REGISTER_U_CONST(U_LB_MANDATORY_BREAK); REGISTER_U_CONST(U_LB_CONTINGENT_BREAK); REGISTER_U_CONST(U_LB_CLOSE_PUNCTUATION); REGISTER_U_CONST(U_LB_COMBINING_MARK); REGISTER_U_CONST(U_LB_CARRIAGE_RETURN); REGISTER_U_CONST(U_LB_EXCLAMATION); REGISTER_U_CONST(U_LB_GLUE); REGISTER_U_CONST(U_LB_HYPHEN); REGISTER_U_CONST(U_LB_IDEOGRAPHIC); REGISTER_U_CONST(U_LB_INSEPARABLE); REGISTER_U_CONST(U_LB_INFIX_NUMERIC); REGISTER_U_CONST(U_LB_LINE_FEED); REGISTER_U_CONST(U_LB_NONSTARTER); REGISTER_U_CONST(U_LB_NUMERIC); REGISTER_U_CONST(U_LB_OPEN_PUNCTUATION); REGISTER_U_CONST(U_LB_POSTFIX_NUMERIC); REGISTER_U_CONST(U_LB_PREFIX_NUMERIC); REGISTER_U_CONST(U_LB_QUOTATION); REGISTER_U_CONST(U_LB_COMPLEX_CONTEXT); REGISTER_U_CONST(U_LB_SURROGATE); REGISTER_U_CONST(U_LB_SPACE); REGISTER_U_CONST(U_LB_BREAK_SYMBOLS); REGISTER_U_CONST(U_LB_ZWSPACE); REGISTER_U_CONST(U_LB_NEXT_LINE); REGISTER_U_CONST(U_LB_WORD_JOINER); REGISTER_U_CONST(U_LB_H2); REGISTER_U_CONST(U_LB_H3); REGISTER_U_CONST(U_LB_JL); REGISTER_U_CONST(U_LB_JT); REGISTER_U_CONST(U_LB_JV); } /* }}} */ /* {{{ Numeric type constants */ static void php_register_numeric_type_constants(TSRMLS_D) { REGISTER_U_CONST(U_NT_NONE); REGISTER_U_CONST(U_NT_DECIMAL); REGISTER_U_CONST(U_NT_DIGIT); REGISTER_U_CONST(U_NT_NUMERIC); } /* }}} */ /* {{{ Hangul syllable type constants */ static void php_register_hangul_syllable_constants(TSRMLS_D) { REGISTER_U_CONST(U_HST_NOT_APPLICABLE); REGISTER_U_CONST(U_HST_LEADING_JAMO); REGISTER_U_CONST(U_HST_VOWEL_JAMO); REGISTER_U_CONST(U_HST_TRAILING_JAMO); REGISTER_U_CONST(U_HST_LV_SYLLABLE); REGISTER_U_CONST(U_HST_LVT_SYLLABLE); } /* }}} */ /* {{{ Miscellaneous constants */ static void php_register_misc_constants(TSRMLS_D) { zend_declare_class_constant_double(u_const_ce, "NO_NUMERIC_VALUE", sizeof("NO_NUMERIC_VALUE")-1, U_NO_NUMERIC_VALUE TSRMLS_CC); /* Min and max codepoint values */ REGISTER_U_CONST(UCHAR_MIN_VALUE); REGISTER_U_CONST(UCHAR_MAX_VALUE); /* Property name constants */ REGISTER_U_CONST(U_SHORT_PROPERTY_NAME); REGISTER_U_CONST(U_LONG_PROPERTY_NAME); /* Case folding constants */ REGISTER_U_CONST(U_FOLD_CASE_DEFAULT); REGISTER_U_CONST(U_FOLD_CASE_EXCLUDE_SPECIAL_I); } /* }}} */ void php_register_unicode_constants(TSRMLS_D) { zend_class_entry ce; INIT_CLASS_ENTRY(ce, "U", NULL); u_const_ce = zend_register_internal_class(&ce TSRMLS_CC); u_const_ce->ce_flags = ZEND_ACC_FINAL_CLASS; php_register_property_constants(TSRMLS_C); php_register_general_category_constants(TSRMLS_C); php_register_char_direction_constants(TSRMLS_C); php_register_block_constants(TSRMLS_C); php_register_east_asian_width_constants(TSRMLS_C); php_register_decomposition_type_constants(TSRMLS_C); php_register_joining_type_constants(TSRMLS_C); php_register_joining_group_constants(TSRMLS_C); php_register_grapheme_cluster_break_constants(TSRMLS_C); php_register_word_break_constants(TSRMLS_C); php_register_sentence_break_constants(TSRMLS_C); php_register_line_break_constants(TSRMLS_C); php_register_numeric_type_constants(TSRMLS_C); php_register_hangul_syllable_constants(TSRMLS_C); php_register_misc_constants(TSRMLS_C); } /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: noet sw=4 ts=4 fdm=marker * vim<600: noet sw=4 ts=4 */