]> granicus.if.org Git - php/commitdiff
Register slightly under half a metric ton of constants.
authorAndrei Zmievski <andrei@php.net>
Fri, 5 May 2006 20:56:21 +0000 (20:56 +0000)
committerAndrei Zmievski <andrei@php.net>
Fri, 5 May 2006 20:56:21 +0000 (20:56 +0000)
ext/unicode/config.m4
ext/unicode/constants.c [new file with mode: 0644]
ext/unicode/php_unicode.h
ext/unicode/unicode.c

index 19dd5cb6b15c44f3ce9267aee3aa93bbb8dd301d..127d95095963618475e8a123e1b6891f620698bb 100644 (file)
@@ -4,4 +4,4 @@ dnl
 
 PHP_SUBST(UNICODE_SHARED_LIBADD)
 AC_DEFINE(HAVE_UNICODE, 1, [ ])
-PHP_NEW_EXTENSION(unicode, unicode.c locale.c unicode_iterators.c collator.c property.c, $ext_shared)
+PHP_NEW_EXTENSION(unicode, unicode.c locale.c unicode_iterators.c collator.c property.c constants.c, $ext_shared)
diff --git a/ext/unicode/constants.c b/ext/unicode/constants.c
new file mode 100644 (file)
index 0000000..15e036d
--- /dev/null
@@ -0,0 +1,613 @@
+/*
+  +----------------------------------------------------------------------+
+  | 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 <andrei@php.net>                            |
+  |          Wez Furlong <wez@php.net>                                   |
+  +----------------------------------------------------------------------+
+*/
+
+#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
+ */
index 45efaca5d18b13ffe27f5a9eba4aa20388faff9d..3fe387fb6758ad70ded3a838bb47cbb45b81e377 100644 (file)
@@ -33,7 +33,6 @@ extern "C" {
 #include <SAPI.h>
 #include <ext/standard/info.h>
 
-
 extern zend_module_entry unicode_module_entry;
 #define phpext_unicode_ptr &unicode_module_entry
 
@@ -55,7 +54,7 @@ PHP_MINFO_FUNCTION(unicode);
 
 /*
  * Because of ICU they are expanded to have _<version> suffix
- * We don't want that
+ * We don't want that.
  */
 #undef locale_get_default
 #undef locale_set_default
@@ -74,6 +73,9 @@ PHP_FUNCTION(collator_set_default);
 PHP_METHOD(collator, __construct);
 
 void php_init_collation(TSRMLS_D);
+void php_register_unicode_constants(TSRMLS_D);
+
+PHPAPI zend_class_entry *u_const_ce;
 
 #ifdef  __cplusplus
 } // extern "C" 
index 5aac8dac4e3d629515febcd36b334233c1182577..d5c769b97db090502e5deeb4925c8eeb99705cf5 100644 (file)
@@ -317,6 +317,7 @@ PHP_MINIT_FUNCTION(unicode)
 {
        php_register_unicode_iterators(TSRMLS_C);
        php_init_collation(TSRMLS_C);
+       php_register_unicode_constants(TSRMLS_C);
        
        return SUCCESS;
 }