ICU 73.2  73.2
uchar.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 **********************************************************************
00005 *   Copyright (C) 1997-2016, International Business Machines
00006 *   Corporation and others.  All Rights Reserved.
00007 **********************************************************************
00008 *
00009 * File UCHAR.H
00010 *
00011 * Modification History:
00012 *
00013 *   Date        Name        Description
00014 *   04/02/97    aliu        Creation.
00015 *   03/29/99    helena      Updated for C APIs.
00016 *   4/15/99     Madhu       Updated for C Implementation and Javadoc
00017 *   5/20/99     Madhu       Added the function u_getVersion()
00018 *   8/19/1999   srl         Upgraded scripts to Unicode 3.0
00019 *   8/27/1999   schererm    UCharDirection constants: U_...
00020 *   11/11/1999  weiv        added u_isalnum(), cleaned comments
00021 *   01/11/2000  helena      Renamed u_getVersion to u_getUnicodeVersion().
00022 ******************************************************************************
00023 */
00024 
00025 #ifndef UCHAR_H
00026 #define UCHAR_H
00027 
00028 #include "unicode/utypes.h"
00029 #include "unicode/stringoptions.h"
00030 #include "unicode/ucpmap.h"
00031 
00032 #if !defined(USET_DEFINED) && !defined(U_IN_DOXYGEN)
00033 
00034 #define USET_DEFINED
00035 
00044 typedef struct USet USet;
00045 
00046 #endif
00047 
00048 
00049 U_CDECL_BEGIN
00050 
00051 /*==========================================================================*/
00052 /* Unicode version number                                                   */
00053 /*==========================================================================*/
00063 #define U_UNICODE_VERSION "15.0"
00064 
00157 #define UCHAR_MIN_VALUE 0
00158 
00167 #define UCHAR_MAX_VALUE 0x10ffff
00168 
00173 #define U_MASK(x) ((uint32_t)1<<(x))
00174 
00195 typedef enum UProperty {
00196     /*
00197      * Note: UProperty constants are parsed by preparseucd.py.
00198      * It matches lines like
00199      *     UCHAR_<Unicode property name>=<integer>,
00200      */
00201 
00202     /*  Note: Place UCHAR_ALPHABETIC before UCHAR_BINARY_START so that
00203     debuggers display UCHAR_ALPHABETIC as the symbolic name for 0,
00204     rather than UCHAR_BINARY_START.  Likewise for other *_START
00205     identifiers. */
00206 
00209     UCHAR_ALPHABETIC=0,
00211     UCHAR_BINARY_START=UCHAR_ALPHABETIC,
00213     UCHAR_ASCII_HEX_DIGIT=1,
00217     UCHAR_BIDI_CONTROL=2,
00222     UCHAR_BIDI_MIRRORED=3,
00224     UCHAR_DASH=4,
00228     UCHAR_DEFAULT_IGNORABLE_CODE_POINT=5,
00231     UCHAR_DEPRECATED=6,
00234     UCHAR_DIACRITIC=7,
00238     UCHAR_EXTENDER=8,
00242     UCHAR_FULL_COMPOSITION_EXCLUSION=9,
00246     UCHAR_GRAPHEME_BASE=10,
00250     UCHAR_GRAPHEME_EXTEND=11,
00253     UCHAR_GRAPHEME_LINK=12,
00256     UCHAR_HEX_DIGIT=13,
00259     UCHAR_HYPHEN=14,
00264     UCHAR_ID_CONTINUE=15,
00268     UCHAR_ID_START=16,
00271     UCHAR_IDEOGRAPHIC=17,
00275     UCHAR_IDS_BINARY_OPERATOR=18,
00279     UCHAR_IDS_TRINARY_OPERATOR=19,
00282     UCHAR_JOIN_CONTROL=20,
00286     UCHAR_LOGICAL_ORDER_EXCEPTION=21,
00289     UCHAR_LOWERCASE=22,
00291     UCHAR_MATH=23,
00295     UCHAR_NONCHARACTER_CODE_POINT=24,
00297     UCHAR_QUOTATION_MARK=25,
00301     UCHAR_RADICAL=26,
00306     UCHAR_SOFT_DOTTED=27,
00310     UCHAR_TERMINAL_PUNCTUATION=28,
00314     UCHAR_UNIFIED_IDEOGRAPH=29,
00317     UCHAR_UPPERCASE=30,
00321     UCHAR_WHITE_SPACE=31,
00325     UCHAR_XID_CONTINUE=32,
00328     UCHAR_XID_START=33,
00332    UCHAR_CASE_SENSITIVE=34,
00337     UCHAR_S_TERM=35,
00343     UCHAR_VARIATION_SELECTOR=36,
00350     UCHAR_NFD_INERT=37,
00357     UCHAR_NFKD_INERT=38,
00364     UCHAR_NFC_INERT=39,
00371     UCHAR_NFKC_INERT=40,
00382     UCHAR_SEGMENT_STARTER=41,
00387     UCHAR_PATTERN_SYNTAX=42,
00392     UCHAR_PATTERN_WHITE_SPACE=43,
00397     UCHAR_POSIX_ALNUM=44,
00402     UCHAR_POSIX_BLANK=45,
00407     UCHAR_POSIX_GRAPH=46,
00412     UCHAR_POSIX_PRINT=47,
00417     UCHAR_POSIX_XDIGIT=48,
00419     UCHAR_CASED=49,
00421     UCHAR_CASE_IGNORABLE=50,
00423     UCHAR_CHANGES_WHEN_LOWERCASED=51,
00425     UCHAR_CHANGES_WHEN_UPPERCASED=52,
00427     UCHAR_CHANGES_WHEN_TITLECASED=53,
00429     UCHAR_CHANGES_WHEN_CASEFOLDED=54,
00431     UCHAR_CHANGES_WHEN_CASEMAPPED=55,
00433     UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED=56,
00440     UCHAR_EMOJI=57,
00447     UCHAR_EMOJI_PRESENTATION=58,
00454     UCHAR_EMOJI_MODIFIER=59,
00461     UCHAR_EMOJI_MODIFIER_BASE=60,
00468     UCHAR_EMOJI_COMPONENT=61,
00473     UCHAR_REGIONAL_INDICATOR=62,
00478     UCHAR_PREPENDED_CONCATENATION_MARK=63,
00485     UCHAR_EXTENDED_PICTOGRAPHIC=64,
00492     UCHAR_BASIC_EMOJI=65,
00499     UCHAR_EMOJI_KEYCAP_SEQUENCE=66,
00506     UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE=67,
00513     UCHAR_RGI_EMOJI_FLAG_SEQUENCE=68,
00520     UCHAR_RGI_EMOJI_TAG_SEQUENCE=69,
00527     UCHAR_RGI_EMOJI_ZWJ_SEQUENCE=70,
00534     UCHAR_RGI_EMOJI=71,
00535 #ifndef U_HIDE_DEPRECATED_API
00536 
00540     UCHAR_BINARY_LIMIT=72,
00541 #endif  // U_HIDE_DEPRECATED_API
00542 
00545     UCHAR_BIDI_CLASS=0x1000,
00547     UCHAR_INT_START=UCHAR_BIDI_CLASS,
00550     UCHAR_BLOCK=0x1001,
00553     UCHAR_CANONICAL_COMBINING_CLASS=0x1002,
00556     UCHAR_DECOMPOSITION_TYPE=0x1003,
00560     UCHAR_EAST_ASIAN_WIDTH=0x1004,
00563     UCHAR_GENERAL_CATEGORY=0x1005,
00566     UCHAR_JOINING_GROUP=0x1006,
00569     UCHAR_JOINING_TYPE=0x1007,
00572     UCHAR_LINE_BREAK=0x1008,
00575     UCHAR_NUMERIC_TYPE=0x1009,
00578     UCHAR_SCRIPT=0x100A,
00581     UCHAR_HANGUL_SYLLABLE_TYPE=0x100B,
00584     UCHAR_NFD_QUICK_CHECK=0x100C,
00587     UCHAR_NFKD_QUICK_CHECK=0x100D,
00590     UCHAR_NFC_QUICK_CHECK=0x100E,
00593     UCHAR_NFKC_QUICK_CHECK=0x100F,
00600     UCHAR_LEAD_CANONICAL_COMBINING_CLASS=0x1010,
00607     UCHAR_TRAIL_CANONICAL_COMBINING_CLASS=0x1011,
00612     UCHAR_GRAPHEME_CLUSTER_BREAK=0x1012,
00617     UCHAR_SENTENCE_BREAK=0x1013,
00622     UCHAR_WORD_BREAK=0x1014,
00627     UCHAR_BIDI_PAIRED_BRACKET_TYPE=0x1015,
00635     UCHAR_INDIC_POSITIONAL_CATEGORY=0x1016,
00642     UCHAR_INDIC_SYLLABIC_CATEGORY=0x1017,
00649     UCHAR_VERTICAL_ORIENTATION=0x1018,
00650 #ifndef U_HIDE_DEPRECATED_API
00651 
00655     UCHAR_INT_LIMIT=0x1019,
00656 #endif  // U_HIDE_DEPRECATED_API
00657 
00666     UCHAR_GENERAL_CATEGORY_MASK=0x2000,
00668     UCHAR_MASK_START=UCHAR_GENERAL_CATEGORY_MASK,
00669 #ifndef U_HIDE_DEPRECATED_API
00670 
00674     UCHAR_MASK_LIMIT=0x2001,
00675 #endif  // U_HIDE_DEPRECATED_API
00676 
00679     UCHAR_NUMERIC_VALUE=0x3000,
00681     UCHAR_DOUBLE_START=UCHAR_NUMERIC_VALUE,
00682 #ifndef U_HIDE_DEPRECATED_API
00683 
00687     UCHAR_DOUBLE_LIMIT=0x3001,
00688 #endif  // U_HIDE_DEPRECATED_API
00689 
00692     UCHAR_AGE=0x4000,
00694     UCHAR_STRING_START=UCHAR_AGE,
00697     UCHAR_BIDI_MIRRORING_GLYPH=0x4001,
00700     UCHAR_CASE_FOLDING=0x4002,
00701 #ifndef U_HIDE_DEPRECATED_API
00702 
00704     UCHAR_ISO_COMMENT=0x4003,
00705 #endif  /* U_HIDE_DEPRECATED_API */
00706 
00708     UCHAR_LOWERCASE_MAPPING=0x4004,
00711     UCHAR_NAME=0x4005,
00714     UCHAR_SIMPLE_CASE_FOLDING=0x4006,
00717     UCHAR_SIMPLE_LOWERCASE_MAPPING=0x4007,
00720     UCHAR_SIMPLE_TITLECASE_MAPPING=0x4008,
00723     UCHAR_SIMPLE_UPPERCASE_MAPPING=0x4009,
00726     UCHAR_TITLECASE_MAPPING=0x400A,
00727 #ifndef U_HIDE_DEPRECATED_API
00728 
00732     UCHAR_UNICODE_1_NAME=0x400B,
00733 #endif  /* U_HIDE_DEPRECATED_API */
00734 
00736     UCHAR_UPPERCASE_MAPPING=0x400C,
00739     UCHAR_BIDI_PAIRED_BRACKET=0x400D,
00740 #ifndef U_HIDE_DEPRECATED_API
00741 
00745     UCHAR_STRING_LIMIT=0x400E,
00746 #endif  // U_HIDE_DEPRECATED_API
00747 
00753     UCHAR_SCRIPT_EXTENSIONS=0x7000,
00755     UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
00756 #ifndef U_HIDE_DEPRECATED_API
00757 
00761     UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
00762 #endif  // U_HIDE_DEPRECATED_API
00763 
00765     UCHAR_INVALID_CODE = -1
00766 } UProperty;
00767 
00773 typedef enum UCharCategory
00774 {
00775     /*
00776      * Note: UCharCategory constants and their API comments are parsed by preparseucd.py.
00777      * It matches pairs of lines like
00778      *     / ** <Unicode 2-letter General_Category value> comment... * /
00779      *     U_<[A-Z_]+> = <integer>,
00780      */
00781 
00783     U_UNASSIGNED              = 0,
00785     U_GENERAL_OTHER_TYPES     = 0,
00787     U_UPPERCASE_LETTER        = 1,
00789     U_LOWERCASE_LETTER        = 2,
00791     U_TITLECASE_LETTER        = 3,
00793     U_MODIFIER_LETTER         = 4,
00795     U_OTHER_LETTER            = 5,
00797     U_NON_SPACING_MARK        = 6,
00799     U_ENCLOSING_MARK          = 7,
00801     U_COMBINING_SPACING_MARK  = 8,
00803     U_DECIMAL_DIGIT_NUMBER    = 9,
00805     U_LETTER_NUMBER           = 10,
00807     U_OTHER_NUMBER            = 11,
00809     U_SPACE_SEPARATOR         = 12,
00811     U_LINE_SEPARATOR          = 13,
00813     U_PARAGRAPH_SEPARATOR     = 14,
00815     U_CONTROL_CHAR            = 15,
00817     U_FORMAT_CHAR             = 16,
00819     U_PRIVATE_USE_CHAR        = 17,
00821     U_SURROGATE               = 18,
00823     U_DASH_PUNCTUATION        = 19,
00825     U_START_PUNCTUATION       = 20,
00827     U_END_PUNCTUATION         = 21,
00829     U_CONNECTOR_PUNCTUATION   = 22,
00831     U_OTHER_PUNCTUATION       = 23,
00833     U_MATH_SYMBOL             = 24,
00835     U_CURRENCY_SYMBOL         = 25,
00837     U_MODIFIER_SYMBOL         = 26,
00839     U_OTHER_SYMBOL            = 27,
00841     U_INITIAL_PUNCTUATION     = 28,
00843     U_FINAL_PUNCTUATION       = 29,
00851     U_CHAR_CATEGORY_COUNT
00852 } UCharCategory;
00853 
00868 #define U_GC_CN_MASK    U_MASK(U_GENERAL_OTHER_TYPES)
00869 
00871 #define U_GC_LU_MASK    U_MASK(U_UPPERCASE_LETTER)
00872 
00873 #define U_GC_LL_MASK    U_MASK(U_LOWERCASE_LETTER)
00874 
00875 #define U_GC_LT_MASK    U_MASK(U_TITLECASE_LETTER)
00876 
00877 #define U_GC_LM_MASK    U_MASK(U_MODIFIER_LETTER)
00878 
00879 #define U_GC_LO_MASK    U_MASK(U_OTHER_LETTER)
00880 
00882 #define U_GC_MN_MASK    U_MASK(U_NON_SPACING_MARK)
00883 
00884 #define U_GC_ME_MASK    U_MASK(U_ENCLOSING_MARK)
00885 
00886 #define U_GC_MC_MASK    U_MASK(U_COMBINING_SPACING_MARK)
00887 
00889 #define U_GC_ND_MASK    U_MASK(U_DECIMAL_DIGIT_NUMBER)
00890 
00891 #define U_GC_NL_MASK    U_MASK(U_LETTER_NUMBER)
00892 
00893 #define U_GC_NO_MASK    U_MASK(U_OTHER_NUMBER)
00894 
00896 #define U_GC_ZS_MASK    U_MASK(U_SPACE_SEPARATOR)
00897 
00898 #define U_GC_ZL_MASK    U_MASK(U_LINE_SEPARATOR)
00899 
00900 #define U_GC_ZP_MASK    U_MASK(U_PARAGRAPH_SEPARATOR)
00901 
00903 #define U_GC_CC_MASK    U_MASK(U_CONTROL_CHAR)
00904 
00905 #define U_GC_CF_MASK    U_MASK(U_FORMAT_CHAR)
00906 
00907 #define U_GC_CO_MASK    U_MASK(U_PRIVATE_USE_CHAR)
00908 
00909 #define U_GC_CS_MASK    U_MASK(U_SURROGATE)
00910 
00912 #define U_GC_PD_MASK    U_MASK(U_DASH_PUNCTUATION)
00913 
00914 #define U_GC_PS_MASK    U_MASK(U_START_PUNCTUATION)
00915 
00916 #define U_GC_PE_MASK    U_MASK(U_END_PUNCTUATION)
00917 
00918 #define U_GC_PC_MASK    U_MASK(U_CONNECTOR_PUNCTUATION)
00919 
00920 #define U_GC_PO_MASK    U_MASK(U_OTHER_PUNCTUATION)
00921 
00923 #define U_GC_SM_MASK    U_MASK(U_MATH_SYMBOL)
00924 
00925 #define U_GC_SC_MASK    U_MASK(U_CURRENCY_SYMBOL)
00926 
00927 #define U_GC_SK_MASK    U_MASK(U_MODIFIER_SYMBOL)
00928 
00929 #define U_GC_SO_MASK    U_MASK(U_OTHER_SYMBOL)
00930 
00932 #define U_GC_PI_MASK    U_MASK(U_INITIAL_PUNCTUATION)
00933 
00934 #define U_GC_PF_MASK    U_MASK(U_FINAL_PUNCTUATION)
00935 
00936 
00938 #define U_GC_L_MASK \
00939             (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
00940 
00942 #define U_GC_LC_MASK \
00943             (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK)
00944 
00946 #define U_GC_M_MASK (U_GC_MN_MASK|U_GC_ME_MASK|U_GC_MC_MASK)
00947 
00949 #define U_GC_N_MASK (U_GC_ND_MASK|U_GC_NL_MASK|U_GC_NO_MASK)
00950 
00952 #define U_GC_Z_MASK (U_GC_ZS_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK)
00953 
00955 #define U_GC_C_MASK \
00956             (U_GC_CN_MASK|U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CO_MASK|U_GC_CS_MASK)
00957 
00959 #define U_GC_P_MASK \
00960             (U_GC_PD_MASK|U_GC_PS_MASK|U_GC_PE_MASK|U_GC_PC_MASK|U_GC_PO_MASK| \
00961              U_GC_PI_MASK|U_GC_PF_MASK)
00962 
00964 #define U_GC_S_MASK (U_GC_SM_MASK|U_GC_SC_MASK|U_GC_SK_MASK|U_GC_SO_MASK)
00965 
00970 typedef enum UCharDirection {
00971     /*
00972      * Note: UCharDirection constants and their API comments are parsed by preparseucd.py.
00973      * It matches pairs of lines like
00974      *     / ** <Unicode 1..3-letter Bidi_Class value> comment... * /
00975      *     U_<[A-Z_]+> = <integer>,
00976      */
00977 
00979     U_LEFT_TO_RIGHT               = 0,
00981     U_RIGHT_TO_LEFT               = 1,
00983     U_EUROPEAN_NUMBER             = 2,
00985     U_EUROPEAN_NUMBER_SEPARATOR   = 3,
00987     U_EUROPEAN_NUMBER_TERMINATOR  = 4,
00989     U_ARABIC_NUMBER               = 5,
00991     U_COMMON_NUMBER_SEPARATOR     = 6,
00993     U_BLOCK_SEPARATOR             = 7,
00995     U_SEGMENT_SEPARATOR           = 8,
00997     U_WHITE_SPACE_NEUTRAL         = 9,
00999     U_OTHER_NEUTRAL               = 10,
01001     U_LEFT_TO_RIGHT_EMBEDDING     = 11,
01003     U_LEFT_TO_RIGHT_OVERRIDE      = 12,
01005     U_RIGHT_TO_LEFT_ARABIC        = 13,
01007     U_RIGHT_TO_LEFT_EMBEDDING     = 14,
01009     U_RIGHT_TO_LEFT_OVERRIDE      = 15,
01011     U_POP_DIRECTIONAL_FORMAT      = 16,
01013     U_DIR_NON_SPACING_MARK        = 17,
01015     U_BOUNDARY_NEUTRAL            = 18,
01017     U_FIRST_STRONG_ISOLATE        = 19,
01019     U_LEFT_TO_RIGHT_ISOLATE       = 20,
01021     U_RIGHT_TO_LEFT_ISOLATE       = 21,
01023     U_POP_DIRECTIONAL_ISOLATE     = 22,
01024 #ifndef U_HIDE_DEPRECATED_API
01025 
01031     U_CHAR_DIRECTION_COUNT
01032 #endif  // U_HIDE_DEPRECATED_API
01033 } UCharDirection;
01034 
01041 typedef enum UBidiPairedBracketType {
01042     /*
01043      * Note: UBidiPairedBracketType constants are parsed by preparseucd.py.
01044      * It matches lines like
01045      *     U_BPT_<Unicode Bidi_Paired_Bracket_Type value name>
01046      */
01047 
01049     U_BPT_NONE,
01051     U_BPT_OPEN,
01053     U_BPT_CLOSE,
01054 #ifndef U_HIDE_DEPRECATED_API
01055 
01061     U_BPT_COUNT /* 3 */
01062 #endif  // U_HIDE_DEPRECATED_API
01063 } UBidiPairedBracketType;
01064 
01069 enum UBlockCode {
01070     /*
01071      * Note: UBlockCode constants are parsed by preparseucd.py.
01072      * It matches lines like
01073      *     UBLOCK_<Unicode Block value name> = <integer>,
01074      */
01075 
01077     UBLOCK_NO_BLOCK = 0, /*[none]*/ /* Special range indicating No_Block */
01078 
01080     UBLOCK_BASIC_LATIN = 1, /*[0000]*/
01081 
01083     UBLOCK_LATIN_1_SUPPLEMENT=2, /*[0080]*/
01084 
01086     UBLOCK_LATIN_EXTENDED_A =3, /*[0100]*/
01087 
01089     UBLOCK_LATIN_EXTENDED_B =4, /*[0180]*/
01090 
01092     UBLOCK_IPA_EXTENSIONS =5, /*[0250]*/
01093 
01095     UBLOCK_SPACING_MODIFIER_LETTERS =6, /*[02B0]*/
01096 
01098     UBLOCK_COMBINING_DIACRITICAL_MARKS =7, /*[0300]*/
01099 
01104     UBLOCK_GREEK =8, /*[0370]*/
01105 
01107     UBLOCK_CYRILLIC =9, /*[0400]*/
01108 
01110     UBLOCK_ARMENIAN =10, /*[0530]*/
01111 
01113     UBLOCK_HEBREW =11, /*[0590]*/
01114 
01116     UBLOCK_ARABIC =12, /*[0600]*/
01117 
01119     UBLOCK_SYRIAC =13, /*[0700]*/
01120 
01122     UBLOCK_THAANA =14, /*[0780]*/
01123 
01125     UBLOCK_DEVANAGARI =15, /*[0900]*/
01126 
01128     UBLOCK_BENGALI =16, /*[0980]*/
01129 
01131     UBLOCK_GURMUKHI =17, /*[0A00]*/
01132 
01134     UBLOCK_GUJARATI =18, /*[0A80]*/
01135 
01137     UBLOCK_ORIYA =19, /*[0B00]*/
01138 
01140     UBLOCK_TAMIL =20, /*[0B80]*/
01141 
01143     UBLOCK_TELUGU =21, /*[0C00]*/
01144 
01146     UBLOCK_KANNADA =22, /*[0C80]*/
01147 
01149     UBLOCK_MALAYALAM =23, /*[0D00]*/
01150 
01152     UBLOCK_SINHALA =24, /*[0D80]*/
01153 
01155     UBLOCK_THAI =25, /*[0E00]*/
01156 
01158     UBLOCK_LAO =26, /*[0E80]*/
01159 
01161     UBLOCK_TIBETAN =27, /*[0F00]*/
01162 
01164     UBLOCK_MYANMAR =28, /*[1000]*/
01165 
01167     UBLOCK_GEORGIAN =29, /*[10A0]*/
01168 
01170     UBLOCK_HANGUL_JAMO =30, /*[1100]*/
01171 
01173     UBLOCK_ETHIOPIC =31, /*[1200]*/
01174 
01176     UBLOCK_CHEROKEE =32, /*[13A0]*/
01177 
01179     UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS =33, /*[1400]*/
01180 
01182     UBLOCK_OGHAM =34, /*[1680]*/
01183 
01185     UBLOCK_RUNIC =35, /*[16A0]*/
01186 
01188     UBLOCK_KHMER =36, /*[1780]*/
01189 
01191     UBLOCK_MONGOLIAN =37, /*[1800]*/
01192 
01194     UBLOCK_LATIN_EXTENDED_ADDITIONAL =38, /*[1E00]*/
01195 
01197     UBLOCK_GREEK_EXTENDED =39, /*[1F00]*/
01198 
01200     UBLOCK_GENERAL_PUNCTUATION =40, /*[2000]*/
01201 
01203     UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS =41, /*[2070]*/
01204 
01206     UBLOCK_CURRENCY_SYMBOLS =42, /*[20A0]*/
01207 
01212     UBLOCK_COMBINING_MARKS_FOR_SYMBOLS =43, /*[20D0]*/
01213 
01215     UBLOCK_LETTERLIKE_SYMBOLS =44, /*[2100]*/
01216 
01218     UBLOCK_NUMBER_FORMS =45, /*[2150]*/
01219 
01221     UBLOCK_ARROWS =46, /*[2190]*/
01222 
01224     UBLOCK_MATHEMATICAL_OPERATORS =47, /*[2200]*/
01225 
01227     UBLOCK_MISCELLANEOUS_TECHNICAL =48, /*[2300]*/
01228 
01230     UBLOCK_CONTROL_PICTURES =49, /*[2400]*/
01231 
01233     UBLOCK_OPTICAL_CHARACTER_RECOGNITION =50, /*[2440]*/
01234 
01236     UBLOCK_ENCLOSED_ALPHANUMERICS =51, /*[2460]*/
01237 
01239     UBLOCK_BOX_DRAWING =52, /*[2500]*/
01240 
01242     UBLOCK_BLOCK_ELEMENTS =53, /*[2580]*/
01243 
01245     UBLOCK_GEOMETRIC_SHAPES =54, /*[25A0]*/
01246 
01248     UBLOCK_MISCELLANEOUS_SYMBOLS =55, /*[2600]*/
01249 
01251     UBLOCK_DINGBATS =56, /*[2700]*/
01252 
01254     UBLOCK_BRAILLE_PATTERNS =57, /*[2800]*/
01255 
01257     UBLOCK_CJK_RADICALS_SUPPLEMENT =58, /*[2E80]*/
01258 
01260     UBLOCK_KANGXI_RADICALS =59, /*[2F00]*/
01261 
01263     UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS =60, /*[2FF0]*/
01264 
01266     UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION =61, /*[3000]*/
01267 
01269     UBLOCK_HIRAGANA =62, /*[3040]*/
01270 
01272     UBLOCK_KATAKANA =63, /*[30A0]*/
01273 
01275     UBLOCK_BOPOMOFO =64, /*[3100]*/
01276 
01278     UBLOCK_HANGUL_COMPATIBILITY_JAMO =65, /*[3130]*/
01279 
01281     UBLOCK_KANBUN =66, /*[3190]*/
01282 
01284     UBLOCK_BOPOMOFO_EXTENDED =67, /*[31A0]*/
01285 
01287     UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS =68, /*[3200]*/
01288 
01290     UBLOCK_CJK_COMPATIBILITY =69, /*[3300]*/
01291 
01293     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A =70, /*[3400]*/
01294 
01296     UBLOCK_CJK_UNIFIED_IDEOGRAPHS =71, /*[4E00]*/
01297 
01299     UBLOCK_YI_SYLLABLES =72, /*[A000]*/
01300 
01302     UBLOCK_YI_RADICALS =73, /*[A490]*/
01303 
01305     UBLOCK_HANGUL_SYLLABLES =74, /*[AC00]*/
01306 
01308     UBLOCK_HIGH_SURROGATES =75, /*[D800]*/
01309 
01311     UBLOCK_HIGH_PRIVATE_USE_SURROGATES =76, /*[DB80]*/
01312 
01314     UBLOCK_LOW_SURROGATES =77, /*[DC00]*/
01315 
01325     UBLOCK_PRIVATE_USE_AREA =78, /*[E000]*/
01335     UBLOCK_PRIVATE_USE = UBLOCK_PRIVATE_USE_AREA,
01336 
01338     UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS =79, /*[F900]*/
01339 
01341     UBLOCK_ALPHABETIC_PRESENTATION_FORMS =80, /*[FB00]*/
01342 
01344     UBLOCK_ARABIC_PRESENTATION_FORMS_A =81, /*[FB50]*/
01345 
01347     UBLOCK_COMBINING_HALF_MARKS =82, /*[FE20]*/
01348 
01350     UBLOCK_CJK_COMPATIBILITY_FORMS =83, /*[FE30]*/
01351 
01353     UBLOCK_SMALL_FORM_VARIANTS =84, /*[FE50]*/
01354 
01356     UBLOCK_ARABIC_PRESENTATION_FORMS_B =85, /*[FE70]*/
01357 
01359     UBLOCK_SPECIALS =86, /*[FFF0]*/
01360 
01362     UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS =87, /*[FF00]*/
01363 
01364     /* New blocks in Unicode 3.1 */
01365 
01367     UBLOCK_OLD_ITALIC = 88, /*[10300]*/
01369     UBLOCK_GOTHIC = 89, /*[10330]*/
01371     UBLOCK_DESERET = 90, /*[10400]*/
01373     UBLOCK_BYZANTINE_MUSICAL_SYMBOLS = 91, /*[1D000]*/
01375     UBLOCK_MUSICAL_SYMBOLS = 92, /*[1D100]*/
01377     UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 93, /*[1D400]*/
01379     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B  = 94, /*[20000]*/
01381     UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 95, /*[2F800]*/
01383     UBLOCK_TAGS = 96, /*[E0000]*/
01384 
01385     /* New blocks in Unicode 3.2 */
01386 
01388     UBLOCK_CYRILLIC_SUPPLEMENT = 97, /*[0500]*/
01393     UBLOCK_CYRILLIC_SUPPLEMENTARY = UBLOCK_CYRILLIC_SUPPLEMENT,
01395     UBLOCK_TAGALOG = 98, /*[1700]*/
01397     UBLOCK_HANUNOO = 99, /*[1720]*/
01399     UBLOCK_BUHID = 100, /*[1740]*/
01401     UBLOCK_TAGBANWA = 101, /*[1760]*/
01403     UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 102, /*[27C0]*/
01405     UBLOCK_SUPPLEMENTAL_ARROWS_A = 103, /*[27F0]*/
01407     UBLOCK_SUPPLEMENTAL_ARROWS_B = 104, /*[2900]*/
01409     UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 105, /*[2980]*/
01411     UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 106, /*[2A00]*/
01413     UBLOCK_KATAKANA_PHONETIC_EXTENSIONS = 107, /*[31F0]*/
01415     UBLOCK_VARIATION_SELECTORS = 108, /*[FE00]*/
01417     UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A = 109, /*[F0000]*/
01419     UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B = 110, /*[100000]*/
01420 
01421     /* New blocks in Unicode 4 */
01422 
01424     UBLOCK_LIMBU = 111, /*[1900]*/
01426     UBLOCK_TAI_LE = 112, /*[1950]*/
01428     UBLOCK_KHMER_SYMBOLS = 113, /*[19E0]*/
01430     UBLOCK_PHONETIC_EXTENSIONS = 114, /*[1D00]*/
01432     UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS = 115, /*[2B00]*/
01434     UBLOCK_YIJING_HEXAGRAM_SYMBOLS = 116, /*[4DC0]*/
01436     UBLOCK_LINEAR_B_SYLLABARY = 117, /*[10000]*/
01438     UBLOCK_LINEAR_B_IDEOGRAMS = 118, /*[10080]*/
01440     UBLOCK_AEGEAN_NUMBERS = 119, /*[10100]*/
01442     UBLOCK_UGARITIC = 120, /*[10380]*/
01444     UBLOCK_SHAVIAN = 121, /*[10450]*/
01446     UBLOCK_OSMANYA = 122, /*[10480]*/
01448     UBLOCK_CYPRIOT_SYLLABARY = 123, /*[10800]*/
01450     UBLOCK_TAI_XUAN_JING_SYMBOLS = 124, /*[1D300]*/
01452     UBLOCK_VARIATION_SELECTORS_SUPPLEMENT = 125, /*[E0100]*/
01453 
01454     /* New blocks in Unicode 4.1 */
01455 
01457     UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION = 126, /*[1D200]*/
01459     UBLOCK_ANCIENT_GREEK_NUMBERS = 127, /*[10140]*/
01461     UBLOCK_ARABIC_SUPPLEMENT = 128, /*[0750]*/
01463     UBLOCK_BUGINESE = 129, /*[1A00]*/
01465     UBLOCK_CJK_STROKES = 130, /*[31C0]*/
01467     UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 131, /*[1DC0]*/
01469     UBLOCK_COPTIC = 132, /*[2C80]*/
01471     UBLOCK_ETHIOPIC_EXTENDED = 133, /*[2D80]*/
01473     UBLOCK_ETHIOPIC_SUPPLEMENT = 134, /*[1380]*/
01475     UBLOCK_GEORGIAN_SUPPLEMENT = 135, /*[2D00]*/
01477     UBLOCK_GLAGOLITIC = 136, /*[2C00]*/
01479     UBLOCK_KHAROSHTHI = 137, /*[10A00]*/
01481     UBLOCK_MODIFIER_TONE_LETTERS = 138, /*[A700]*/
01483     UBLOCK_NEW_TAI_LUE = 139, /*[1980]*/
01485     UBLOCK_OLD_PERSIAN = 140, /*[103A0]*/
01487     UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT = 141, /*[1D80]*/
01489     UBLOCK_SUPPLEMENTAL_PUNCTUATION = 142, /*[2E00]*/
01491     UBLOCK_SYLOTI_NAGRI = 143, /*[A800]*/
01493     UBLOCK_TIFINAGH = 144, /*[2D30]*/
01495     UBLOCK_VERTICAL_FORMS = 145, /*[FE10]*/
01496 
01497     /* New blocks in Unicode 5.0 */
01498 
01500     UBLOCK_NKO = 146, /*[07C0]*/
01502     UBLOCK_BALINESE = 147, /*[1B00]*/
01504     UBLOCK_LATIN_EXTENDED_C = 148, /*[2C60]*/
01506     UBLOCK_LATIN_EXTENDED_D = 149, /*[A720]*/
01508     UBLOCK_PHAGS_PA = 150, /*[A840]*/
01510     UBLOCK_PHOENICIAN = 151, /*[10900]*/
01512     UBLOCK_CUNEIFORM = 152, /*[12000]*/
01514     UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION = 153, /*[12400]*/
01516     UBLOCK_COUNTING_ROD_NUMERALS = 154, /*[1D360]*/
01517 
01518     /* New blocks in Unicode 5.1 */
01519 
01521     UBLOCK_SUNDANESE = 155, /*[1B80]*/
01523     UBLOCK_LEPCHA = 156, /*[1C00]*/
01525     UBLOCK_OL_CHIKI = 157, /*[1C50]*/
01527     UBLOCK_CYRILLIC_EXTENDED_A = 158, /*[2DE0]*/
01529     UBLOCK_VAI = 159, /*[A500]*/
01531     UBLOCK_CYRILLIC_EXTENDED_B = 160, /*[A640]*/
01533     UBLOCK_SAURASHTRA = 161, /*[A880]*/
01535     UBLOCK_KAYAH_LI = 162, /*[A900]*/
01537     UBLOCK_REJANG = 163, /*[A930]*/
01539     UBLOCK_CHAM = 164, /*[AA00]*/
01541     UBLOCK_ANCIENT_SYMBOLS = 165, /*[10190]*/
01543     UBLOCK_PHAISTOS_DISC = 166, /*[101D0]*/
01545     UBLOCK_LYCIAN = 167, /*[10280]*/
01547     UBLOCK_CARIAN = 168, /*[102A0]*/
01549     UBLOCK_LYDIAN = 169, /*[10920]*/
01551     UBLOCK_MAHJONG_TILES = 170, /*[1F000]*/
01553     UBLOCK_DOMINO_TILES = 171, /*[1F030]*/
01554 
01555     /* New blocks in Unicode 5.2 */
01556 
01558     UBLOCK_SAMARITAN = 172, /*[0800]*/
01560     UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 173, /*[18B0]*/
01562     UBLOCK_TAI_THAM = 174, /*[1A20]*/
01564     UBLOCK_VEDIC_EXTENSIONS = 175, /*[1CD0]*/
01566     UBLOCK_LISU = 176, /*[A4D0]*/
01568     UBLOCK_BAMUM = 177, /*[A6A0]*/
01570     UBLOCK_COMMON_INDIC_NUMBER_FORMS = 178, /*[A830]*/
01572     UBLOCK_DEVANAGARI_EXTENDED = 179, /*[A8E0]*/
01574     UBLOCK_HANGUL_JAMO_EXTENDED_A = 180, /*[A960]*/
01576     UBLOCK_JAVANESE = 181, /*[A980]*/
01578     UBLOCK_MYANMAR_EXTENDED_A = 182, /*[AA60]*/
01580     UBLOCK_TAI_VIET = 183, /*[AA80]*/
01582     UBLOCK_MEETEI_MAYEK = 184, /*[ABC0]*/
01584     UBLOCK_HANGUL_JAMO_EXTENDED_B = 185, /*[D7B0]*/
01586     UBLOCK_IMPERIAL_ARAMAIC = 186, /*[10840]*/
01588     UBLOCK_OLD_SOUTH_ARABIAN = 187, /*[10A60]*/
01590     UBLOCK_AVESTAN = 188, /*[10B00]*/
01592     UBLOCK_INSCRIPTIONAL_PARTHIAN = 189, /*[10B40]*/
01594     UBLOCK_INSCRIPTIONAL_PAHLAVI = 190, /*[10B60]*/
01596     UBLOCK_OLD_TURKIC = 191, /*[10C00]*/
01598     UBLOCK_RUMI_NUMERAL_SYMBOLS = 192, /*[10E60]*/
01600     UBLOCK_KAITHI = 193, /*[11080]*/
01602     UBLOCK_EGYPTIAN_HIEROGLYPHS = 194, /*[13000]*/
01604     UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 195, /*[1F100]*/
01606     UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 196, /*[1F200]*/
01608     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 197, /*[2A700]*/
01609 
01610     /* New blocks in Unicode 6.0 */
01611 
01613     UBLOCK_MANDAIC = 198, /*[0840]*/
01615     UBLOCK_BATAK = 199, /*[1BC0]*/
01617     UBLOCK_ETHIOPIC_EXTENDED_A = 200, /*[AB00]*/
01619     UBLOCK_BRAHMI = 201, /*[11000]*/
01621     UBLOCK_BAMUM_SUPPLEMENT = 202, /*[16800]*/
01623     UBLOCK_KANA_SUPPLEMENT = 203, /*[1B000]*/
01625     UBLOCK_PLAYING_CARDS = 204, /*[1F0A0]*/
01627     UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 205, /*[1F300]*/
01629     UBLOCK_EMOTICONS = 206, /*[1F600]*/
01631     UBLOCK_TRANSPORT_AND_MAP_SYMBOLS = 207, /*[1F680]*/
01633     UBLOCK_ALCHEMICAL_SYMBOLS = 208, /*[1F700]*/
01635     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 209, /*[2B740]*/
01636 
01637     /* New blocks in Unicode 6.1 */
01638 
01640     UBLOCK_ARABIC_EXTENDED_A = 210, /*[08A0]*/
01642     UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 211, /*[1EE00]*/
01644     UBLOCK_CHAKMA = 212, /*[11100]*/
01646     UBLOCK_MEETEI_MAYEK_EXTENSIONS = 213, /*[AAE0]*/
01648     UBLOCK_MEROITIC_CURSIVE = 214, /*[109A0]*/
01650     UBLOCK_MEROITIC_HIEROGLYPHS = 215, /*[10980]*/
01652     UBLOCK_MIAO = 216, /*[16F00]*/
01654     UBLOCK_SHARADA = 217, /*[11180]*/
01656     UBLOCK_SORA_SOMPENG = 218, /*[110D0]*/
01658     UBLOCK_SUNDANESE_SUPPLEMENT = 219, /*[1CC0]*/
01660     UBLOCK_TAKRI = 220, /*[11680]*/
01661 
01662     /* New blocks in Unicode 7.0 */
01663 
01665     UBLOCK_BASSA_VAH = 221, /*[16AD0]*/
01667     UBLOCK_CAUCASIAN_ALBANIAN = 222, /*[10530]*/
01669     UBLOCK_COPTIC_EPACT_NUMBERS = 223, /*[102E0]*/
01671     UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED = 224, /*[1AB0]*/
01673     UBLOCK_DUPLOYAN = 225, /*[1BC00]*/
01675     UBLOCK_ELBASAN = 226, /*[10500]*/
01677     UBLOCK_GEOMETRIC_SHAPES_EXTENDED = 227, /*[1F780]*/
01679     UBLOCK_GRANTHA = 228, /*[11300]*/
01681     UBLOCK_KHOJKI = 229, /*[11200]*/
01683     UBLOCK_KHUDAWADI = 230, /*[112B0]*/
01685     UBLOCK_LATIN_EXTENDED_E = 231, /*[AB30]*/
01687     UBLOCK_LINEAR_A = 232, /*[10600]*/
01689     UBLOCK_MAHAJANI = 233, /*[11150]*/
01691     UBLOCK_MANICHAEAN = 234, /*[10AC0]*/
01693     UBLOCK_MENDE_KIKAKUI = 235, /*[1E800]*/
01695     UBLOCK_MODI = 236, /*[11600]*/
01697     UBLOCK_MRO = 237, /*[16A40]*/
01699     UBLOCK_MYANMAR_EXTENDED_B = 238, /*[A9E0]*/
01701     UBLOCK_NABATAEAN = 239, /*[10880]*/
01703     UBLOCK_OLD_NORTH_ARABIAN = 240, /*[10A80]*/
01705     UBLOCK_OLD_PERMIC = 241, /*[10350]*/
01707     UBLOCK_ORNAMENTAL_DINGBATS = 242, /*[1F650]*/
01709     UBLOCK_PAHAWH_HMONG = 243, /*[16B00]*/
01711     UBLOCK_PALMYRENE = 244, /*[10860]*/
01713     UBLOCK_PAU_CIN_HAU = 245, /*[11AC0]*/
01715     UBLOCK_PSALTER_PAHLAVI = 246, /*[10B80]*/
01717     UBLOCK_SHORTHAND_FORMAT_CONTROLS = 247, /*[1BCA0]*/
01719     UBLOCK_SIDDHAM = 248, /*[11580]*/
01721     UBLOCK_SINHALA_ARCHAIC_NUMBERS = 249, /*[111E0]*/
01723     UBLOCK_SUPPLEMENTAL_ARROWS_C = 250, /*[1F800]*/
01725     UBLOCK_TIRHUTA = 251, /*[11480]*/
01727     UBLOCK_WARANG_CITI = 252, /*[118A0]*/
01728 
01729     /* New blocks in Unicode 8.0 */
01730 
01732     UBLOCK_AHOM = 253, /*[11700]*/
01734     UBLOCK_ANATOLIAN_HIEROGLYPHS = 254, /*[14400]*/
01736     UBLOCK_CHEROKEE_SUPPLEMENT = 255, /*[AB70]*/
01738     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E = 256, /*[2B820]*/
01740     UBLOCK_EARLY_DYNASTIC_CUNEIFORM = 257, /*[12480]*/
01742     UBLOCK_HATRAN = 258, /*[108E0]*/
01744     UBLOCK_MULTANI = 259, /*[11280]*/
01746     UBLOCK_OLD_HUNGARIAN = 260, /*[10C80]*/
01748     UBLOCK_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS = 261, /*[1F900]*/
01750     UBLOCK_SUTTON_SIGNWRITING = 262, /*[1D800]*/
01751 
01752     /* New blocks in Unicode 9.0 */
01753 
01755     UBLOCK_ADLAM = 263, /*[1E900]*/
01757     UBLOCK_BHAIKSUKI = 264, /*[11C00]*/
01759     UBLOCK_CYRILLIC_EXTENDED_C = 265, /*[1C80]*/
01761     UBLOCK_GLAGOLITIC_SUPPLEMENT = 266, /*[1E000]*/
01763     UBLOCK_IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION = 267, /*[16FE0]*/
01765     UBLOCK_MARCHEN = 268, /*[11C70]*/
01767     UBLOCK_MONGOLIAN_SUPPLEMENT = 269, /*[11660]*/
01769     UBLOCK_NEWA = 270, /*[11400]*/
01771     UBLOCK_OSAGE = 271, /*[104B0]*/
01773     UBLOCK_TANGUT = 272, /*[17000]*/
01775     UBLOCK_TANGUT_COMPONENTS = 273, /*[18800]*/
01776 
01777     // New blocks in Unicode 10.0
01778 
01780     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F = 274, /*[2CEB0]*/
01782     UBLOCK_KANA_EXTENDED_A = 275, /*[1B100]*/
01784     UBLOCK_MASARAM_GONDI = 276, /*[11D00]*/
01786     UBLOCK_NUSHU = 277, /*[1B170]*/
01788     UBLOCK_SOYOMBO = 278, /*[11A50]*/
01790     UBLOCK_SYRIAC_SUPPLEMENT = 279, /*[0860]*/
01792     UBLOCK_ZANABAZAR_SQUARE = 280, /*[11A00]*/
01793 
01794     // New blocks in Unicode 11.0
01795 
01797     UBLOCK_CHESS_SYMBOLS = 281, /*[1FA00]*/
01799     UBLOCK_DOGRA = 282, /*[11800]*/
01801     UBLOCK_GEORGIAN_EXTENDED = 283, /*[1C90]*/
01803     UBLOCK_GUNJALA_GONDI = 284, /*[11D60]*/
01805     UBLOCK_HANIFI_ROHINGYA = 285, /*[10D00]*/
01807     UBLOCK_INDIC_SIYAQ_NUMBERS = 286, /*[1EC70]*/
01809     UBLOCK_MAKASAR = 287, /*[11EE0]*/
01811     UBLOCK_MAYAN_NUMERALS = 288, /*[1D2E0]*/
01813     UBLOCK_MEDEFAIDRIN = 289, /*[16E40]*/
01815     UBLOCK_OLD_SOGDIAN = 290, /*[10F00]*/
01817     UBLOCK_SOGDIAN = 291, /*[10F30]*/
01818 
01819     // New blocks in Unicode 12.0
01820 
01822     UBLOCK_EGYPTIAN_HIEROGLYPH_FORMAT_CONTROLS = 292, /*[13430]*/
01824     UBLOCK_ELYMAIC = 293, /*[10FE0]*/
01826     UBLOCK_NANDINAGARI = 294, /*[119A0]*/
01828     UBLOCK_NYIAKENG_PUACHUE_HMONG = 295, /*[1E100]*/
01830     UBLOCK_OTTOMAN_SIYAQ_NUMBERS = 296, /*[1ED00]*/
01832     UBLOCK_SMALL_KANA_EXTENSION = 297, /*[1B130]*/
01834     UBLOCK_SYMBOLS_AND_PICTOGRAPHS_EXTENDED_A = 298, /*[1FA70]*/
01836     UBLOCK_TAMIL_SUPPLEMENT = 299, /*[11FC0]*/
01838     UBLOCK_WANCHO = 300, /*[1E2C0]*/
01839 
01840     // New blocks in Unicode 13.0
01841 
01843     UBLOCK_CHORASMIAN = 301, /*[10FB0]*/
01845     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G = 302, /*[30000]*/
01847     UBLOCK_DIVES_AKURU = 303, /*[11900]*/
01849     UBLOCK_KHITAN_SMALL_SCRIPT = 304, /*[18B00]*/
01851     UBLOCK_LISU_SUPPLEMENT = 305, /*[11FB0]*/
01853     UBLOCK_SYMBOLS_FOR_LEGACY_COMPUTING = 306, /*[1FB00]*/
01855     UBLOCK_TANGUT_SUPPLEMENT = 307, /*[18D00]*/
01857     UBLOCK_YEZIDI = 308, /*[10E80]*/
01858 
01859     // New blocks in Unicode 14.0
01860 
01862     UBLOCK_ARABIC_EXTENDED_B = 309, /*[0870]*/
01864     UBLOCK_CYPRO_MINOAN = 310, /*[12F90]*/
01866     UBLOCK_ETHIOPIC_EXTENDED_B = 311, /*[1E7E0]*/
01868     UBLOCK_KANA_EXTENDED_B = 312, /*[1AFF0]*/
01870     UBLOCK_LATIN_EXTENDED_F = 313, /*[10780]*/
01872     UBLOCK_LATIN_EXTENDED_G = 314, /*[1DF00]*/
01874     UBLOCK_OLD_UYGHUR = 315, /*[10F70]*/
01876     UBLOCK_TANGSA = 316, /*[16A70]*/
01878     UBLOCK_TOTO = 317, /*[1E290]*/
01880     UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A = 318, /*[11AB0]*/
01882     UBLOCK_VITHKUQI = 319, /*[10570]*/
01884     UBLOCK_ZNAMENNY_MUSICAL_NOTATION = 320, /*[1CF00]*/
01885 
01886     // New blocks in Unicode 15.0
01887 
01889     UBLOCK_ARABIC_EXTENDED_C = 321, /*[10EC0]*/
01891     UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H = 322, /*[31350]*/
01893     UBLOCK_CYRILLIC_EXTENDED_D = 323, /*[1E030]*/
01895     UBLOCK_DEVANAGARI_EXTENDED_A = 324, /*[11B00]*/
01897     UBLOCK_KAKTOVIK_NUMERALS = 325, /*[1D2C0]*/
01899     UBLOCK_KAWI = 326, /*[11F00]*/
01901     UBLOCK_NAG_MUNDARI = 327, /*[1E4D0]*/
01902 
01903 #ifndef U_HIDE_DEPRECATED_API
01904 
01910     UBLOCK_COUNT = 328,
01911 #endif  // U_HIDE_DEPRECATED_API
01912 
01914     UBLOCK_INVALID_CODE=-1
01915 };
01916 
01918 typedef enum UBlockCode UBlockCode;
01919 
01927 typedef enum UEastAsianWidth {
01928     /*
01929      * Note: UEastAsianWidth constants are parsed by preparseucd.py.
01930      * It matches lines like
01931      *     U_EA_<Unicode East_Asian_Width value name>
01932      */
01933 
01934     U_EA_NEUTRAL,   /*[N]*/
01935     U_EA_AMBIGUOUS, /*[A]*/
01936     U_EA_HALFWIDTH, /*[H]*/
01937     U_EA_FULLWIDTH, /*[F]*/
01938     U_EA_NARROW,    /*[Na]*/
01939     U_EA_WIDE,      /*[W]*/
01940 #ifndef U_HIDE_DEPRECATED_API
01941 
01947     U_EA_COUNT
01948 #endif  // U_HIDE_DEPRECATED_API
01949 } UEastAsianWidth;
01950 
01962 typedef enum UCharNameChoice {
01964     U_UNICODE_CHAR_NAME,
01965 #ifndef U_HIDE_DEPRECATED_API
01966 
01971     U_UNICODE_10_CHAR_NAME,
01972 #endif  /* U_HIDE_DEPRECATED_API */
01973 
01974     U_EXTENDED_CHAR_NAME = U_UNICODE_CHAR_NAME+2,
01976     U_CHAR_NAME_ALIAS,
01977 #ifndef U_HIDE_DEPRECATED_API
01978 
01982     U_CHAR_NAME_CHOICE_COUNT
01983 #endif  // U_HIDE_DEPRECATED_API
01984 } UCharNameChoice;
01985 
01999 typedef enum UPropertyNameChoice {
02000     U_SHORT_PROPERTY_NAME,
02001     U_LONG_PROPERTY_NAME,
02002 #ifndef U_HIDE_DEPRECATED_API
02003 
02007     U_PROPERTY_NAME_CHOICE_COUNT
02008 #endif  // U_HIDE_DEPRECATED_API
02009 } UPropertyNameChoice;
02010 
02017 typedef enum UDecompositionType {
02018     /*
02019      * Note: UDecompositionType constants are parsed by preparseucd.py.
02020      * It matches lines like
02021      *     U_DT_<Unicode Decomposition_Type value name>
02022      */
02023 
02024     U_DT_NONE,              /*[none]*/
02025     U_DT_CANONICAL,         /*[can]*/
02026     U_DT_COMPAT,            /*[com]*/
02027     U_DT_CIRCLE,            /*[enc]*/
02028     U_DT_FINAL,             /*[fin]*/
02029     U_DT_FONT,              /*[font]*/
02030     U_DT_FRACTION,          /*[fra]*/
02031     U_DT_INITIAL,           /*[init]*/
02032     U_DT_ISOLATED,          /*[iso]*/
02033     U_DT_MEDIAL,            /*[med]*/
02034     U_DT_NARROW,            /*[nar]*/
02035     U_DT_NOBREAK,           /*[nb]*/
02036     U_DT_SMALL,             /*[sml]*/
02037     U_DT_SQUARE,            /*[sqr]*/
02038     U_DT_SUB,               /*[sub]*/
02039     U_DT_SUPER,             /*[sup]*/
02040     U_DT_VERTICAL,          /*[vert]*/
02041     U_DT_WIDE,              /*[wide]*/
02042 #ifndef U_HIDE_DEPRECATED_API
02043 
02049     U_DT_COUNT /* 18 */
02050 #endif  // U_HIDE_DEPRECATED_API
02051 } UDecompositionType;
02052 
02059 typedef enum UJoiningType {
02060     /*
02061      * Note: UJoiningType constants are parsed by preparseucd.py.
02062      * It matches lines like
02063      *     U_JT_<Unicode Joining_Type value name>
02064      */
02065 
02066     U_JT_NON_JOINING,       /*[U]*/
02067     U_JT_JOIN_CAUSING,      /*[C]*/
02068     U_JT_DUAL_JOINING,      /*[D]*/
02069     U_JT_LEFT_JOINING,      /*[L]*/
02070     U_JT_RIGHT_JOINING,     /*[R]*/
02071     U_JT_TRANSPARENT,       /*[T]*/
02072 #ifndef U_HIDE_DEPRECATED_API
02073 
02079     U_JT_COUNT /* 6 */
02080 #endif  // U_HIDE_DEPRECATED_API
02081 } UJoiningType;
02082 
02089 typedef enum UJoiningGroup {
02090     /*
02091      * Note: UJoiningGroup constants are parsed by preparseucd.py.
02092      * It matches lines like
02093      *     U_JG_<Unicode Joining_Group value name>
02094      */
02095 
02096     U_JG_NO_JOINING_GROUP,
02097     U_JG_AIN,
02098     U_JG_ALAPH,
02099     U_JG_ALEF,
02100     U_JG_BEH,
02101     U_JG_BETH,
02102     U_JG_DAL,
02103     U_JG_DALATH_RISH,
02104     U_JG_E,
02105     U_JG_FEH,
02106     U_JG_FINAL_SEMKATH,
02107     U_JG_GAF,
02108     U_JG_GAMAL,
02109     U_JG_HAH,
02110     U_JG_TEH_MARBUTA_GOAL,  
02111     U_JG_HAMZA_ON_HEH_GOAL=U_JG_TEH_MARBUTA_GOAL,
02112     U_JG_HE,
02113     U_JG_HEH,
02114     U_JG_HEH_GOAL,
02115     U_JG_HETH,
02116     U_JG_KAF,
02117     U_JG_KAPH,
02118     U_JG_KNOTTED_HEH,
02119     U_JG_LAM,
02120     U_JG_LAMADH,
02121     U_JG_MEEM,
02122     U_JG_MIM,
02123     U_JG_NOON,
02124     U_JG_NUN,
02125     U_JG_PE,
02126     U_JG_QAF,
02127     U_JG_QAPH,
02128     U_JG_REH,
02129     U_JG_REVERSED_PE,
02130     U_JG_SAD,
02131     U_JG_SADHE,
02132     U_JG_SEEN,
02133     U_JG_SEMKATH,
02134     U_JG_SHIN,
02135     U_JG_SWASH_KAF,
02136     U_JG_SYRIAC_WAW,
02137     U_JG_TAH,
02138     U_JG_TAW,
02139     U_JG_TEH_MARBUTA,
02140     U_JG_TETH,
02141     U_JG_WAW,
02142     U_JG_YEH,
02143     U_JG_YEH_BARREE,
02144     U_JG_YEH_WITH_TAIL,
02145     U_JG_YUDH,
02146     U_JG_YUDH_HE,
02147     U_JG_ZAIN,
02148     U_JG_FE,        
02149     U_JG_KHAPH,     
02150     U_JG_ZHAIN,     
02151     U_JG_BURUSHASKI_YEH_BARREE, 
02152     U_JG_FARSI_YEH, 
02153     U_JG_NYA,       
02154     U_JG_ROHINGYA_YEH,  
02155     U_JG_MANICHAEAN_ALEPH,  
02156     U_JG_MANICHAEAN_AYIN,  
02157     U_JG_MANICHAEAN_BETH,  
02158     U_JG_MANICHAEAN_DALETH,  
02159     U_JG_MANICHAEAN_DHAMEDH,  
02160     U_JG_MANICHAEAN_FIVE,  
02161     U_JG_MANICHAEAN_GIMEL,  
02162     U_JG_MANICHAEAN_HETH,  
02163     U_JG_MANICHAEAN_HUNDRED,  
02164     U_JG_MANICHAEAN_KAPH,  
02165     U_JG_MANICHAEAN_LAMEDH,  
02166     U_JG_MANICHAEAN_MEM,  
02167     U_JG_MANICHAEAN_NUN,  
02168     U_JG_MANICHAEAN_ONE,  
02169     U_JG_MANICHAEAN_PE,  
02170     U_JG_MANICHAEAN_QOPH,  
02171     U_JG_MANICHAEAN_RESH,  
02172     U_JG_MANICHAEAN_SADHE,  
02173     U_JG_MANICHAEAN_SAMEKH,  
02174     U_JG_MANICHAEAN_TAW,  
02175     U_JG_MANICHAEAN_TEN,  
02176     U_JG_MANICHAEAN_TETH,  
02177     U_JG_MANICHAEAN_THAMEDH,  
02178     U_JG_MANICHAEAN_TWENTY,  
02179     U_JG_MANICHAEAN_WAW,  
02180     U_JG_MANICHAEAN_YODH,  
02181     U_JG_MANICHAEAN_ZAYIN,  
02182     U_JG_STRAIGHT_WAW,  
02183     U_JG_AFRICAN_FEH,  
02184     U_JG_AFRICAN_NOON,  
02185     U_JG_AFRICAN_QAF,  
02187     U_JG_MALAYALAM_BHA,  
02188     U_JG_MALAYALAM_JA,  
02189     U_JG_MALAYALAM_LLA,  
02190     U_JG_MALAYALAM_LLLA,  
02191     U_JG_MALAYALAM_NGA,  
02192     U_JG_MALAYALAM_NNA,  
02193     U_JG_MALAYALAM_NNNA,  
02194     U_JG_MALAYALAM_NYA,  
02195     U_JG_MALAYALAM_RA,  
02196     U_JG_MALAYALAM_SSA,  
02197     U_JG_MALAYALAM_TTA,  
02199     U_JG_HANIFI_ROHINGYA_KINNA_YA,  
02200     U_JG_HANIFI_ROHINGYA_PA,  
02202     U_JG_THIN_YEH,  
02203     U_JG_VERTICAL_TAIL,  
02205 #ifndef U_HIDE_DEPRECATED_API
02206 
02212     U_JG_COUNT
02213 #endif  // U_HIDE_DEPRECATED_API
02214 } UJoiningGroup;
02215 
02222 typedef enum UGraphemeClusterBreak {
02223     /*
02224      * Note: UGraphemeClusterBreak constants are parsed by preparseucd.py.
02225      * It matches lines like
02226      *     U_GCB_<Unicode Grapheme_Cluster_Break value name>
02227      */
02228 
02229     U_GCB_OTHER = 0,            /*[XX]*/
02230     U_GCB_CONTROL = 1,          /*[CN]*/
02231     U_GCB_CR = 2,               /*[CR]*/
02232     U_GCB_EXTEND = 3,           /*[EX]*/
02233     U_GCB_L = 4,                /*[L]*/
02234     U_GCB_LF = 5,               /*[LF]*/
02235     U_GCB_LV = 6,               /*[LV]*/
02236     U_GCB_LVT = 7,              /*[LVT]*/
02237     U_GCB_T = 8,                /*[T]*/
02238     U_GCB_V = 9,                /*[V]*/
02240     U_GCB_SPACING_MARK = 10,    /*[SM]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
02242     U_GCB_PREPEND = 11,         /*[PP]*/
02244     U_GCB_REGIONAL_INDICATOR = 12,  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
02246     U_GCB_E_BASE = 13,          /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
02248     U_GCB_E_BASE_GAZ = 14,      /*[EBG]*/
02250     U_GCB_E_MODIFIER = 15,      /*[EM]*/
02252     U_GCB_GLUE_AFTER_ZWJ = 16,  /*[GAZ]*/
02254     U_GCB_ZWJ = 17,             /*[ZWJ]*/
02255 
02256 #ifndef U_HIDE_DEPRECATED_API
02257 
02263     U_GCB_COUNT = 18
02264 #endif  // U_HIDE_DEPRECATED_API
02265 } UGraphemeClusterBreak;
02266 
02274 typedef enum UWordBreakValues {
02275     /*
02276      * Note: UWordBreakValues constants are parsed by preparseucd.py.
02277      * It matches lines like
02278      *     U_WB_<Unicode Word_Break value name>
02279      */
02280 
02281     U_WB_OTHER = 0,             /*[XX]*/
02282     U_WB_ALETTER = 1,           /*[LE]*/
02283     U_WB_FORMAT = 2,            /*[FO]*/
02284     U_WB_KATAKANA = 3,          /*[KA]*/
02285     U_WB_MIDLETTER = 4,         /*[ML]*/
02286     U_WB_MIDNUM = 5,            /*[MN]*/
02287     U_WB_NUMERIC = 6,           /*[NU]*/
02288     U_WB_EXTENDNUMLET = 7,      /*[EX]*/
02290     U_WB_CR = 8,                /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
02292     U_WB_EXTEND = 9,            /*[Extend]*/
02294     U_WB_LF = 10,               /*[LF]*/
02296     U_WB_MIDNUMLET =11,         /*[MB]*/
02298     U_WB_NEWLINE =12,           /*[NL]*/
02300     U_WB_REGIONAL_INDICATOR = 13,   /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
02302     U_WB_HEBREW_LETTER = 14,    /*[HL]*/ /* from here on: new in Unicode 6.3/ICU 52 */
02304     U_WB_SINGLE_QUOTE = 15,     /*[SQ]*/
02306     U_WB_DOUBLE_QUOTE = 16,     /*[DQ]*/
02308     U_WB_E_BASE = 17,           /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
02310     U_WB_E_BASE_GAZ = 18,       /*[EBG]*/
02312     U_WB_E_MODIFIER = 19,       /*[EM]*/
02314     U_WB_GLUE_AFTER_ZWJ = 20,   /*[GAZ]*/
02316     U_WB_ZWJ = 21,              /*[ZWJ]*/
02318     U_WB_WSEGSPACE = 22,        /*[WSEGSPACE]*/
02319 
02320 #ifndef U_HIDE_DEPRECATED_API
02321 
02327     U_WB_COUNT = 23
02328 #endif  // U_HIDE_DEPRECATED_API
02329 } UWordBreakValues;
02330 
02337 typedef enum USentenceBreak {
02338     /*
02339      * Note: USentenceBreak constants are parsed by preparseucd.py.
02340      * It matches lines like
02341      *     U_SB_<Unicode Sentence_Break value name>
02342      */
02343 
02344     U_SB_OTHER = 0,             /*[XX]*/
02345     U_SB_ATERM = 1,             /*[AT]*/
02346     U_SB_CLOSE = 2,             /*[CL]*/
02347     U_SB_FORMAT = 3,            /*[FO]*/
02348     U_SB_LOWER = 4,             /*[LO]*/
02349     U_SB_NUMERIC = 5,           /*[NU]*/
02350     U_SB_OLETTER = 6,           /*[LE]*/
02351     U_SB_SEP = 7,               /*[SE]*/
02352     U_SB_SP = 8,                /*[SP]*/
02353     U_SB_STERM = 9,             /*[ST]*/
02354     U_SB_UPPER = 10,            /*[UP]*/
02355     U_SB_CR = 11,               /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
02356     U_SB_EXTEND = 12,           /*[EX]*/
02357     U_SB_LF = 13,               /*[LF]*/
02358     U_SB_SCONTINUE = 14,        /*[SC]*/
02359 #ifndef U_HIDE_DEPRECATED_API
02360 
02366     U_SB_COUNT = 15
02367 #endif  // U_HIDE_DEPRECATED_API
02368 } USentenceBreak;
02369 
02376 typedef enum ULineBreak {
02377     /*
02378      * Note: ULineBreak constants are parsed by preparseucd.py.
02379      * It matches lines like
02380      *     U_LB_<Unicode Line_Break value name>
02381      */
02382 
02383     U_LB_UNKNOWN = 0,           /*[XX]*/
02384     U_LB_AMBIGUOUS = 1,         /*[AI]*/
02385     U_LB_ALPHABETIC = 2,        /*[AL]*/
02386     U_LB_BREAK_BOTH = 3,        /*[B2]*/
02387     U_LB_BREAK_AFTER = 4,       /*[BA]*/
02388     U_LB_BREAK_BEFORE = 5,      /*[BB]*/
02389     U_LB_MANDATORY_BREAK = 6,   /*[BK]*/
02390     U_LB_CONTINGENT_BREAK = 7,  /*[CB]*/
02391     U_LB_CLOSE_PUNCTUATION = 8, /*[CL]*/
02392     U_LB_COMBINING_MARK = 9,    /*[CM]*/
02393     U_LB_CARRIAGE_RETURN = 10,   /*[CR]*/
02394     U_LB_EXCLAMATION = 11,       /*[EX]*/
02395     U_LB_GLUE = 12,              /*[GL]*/
02396     U_LB_HYPHEN = 13,            /*[HY]*/
02397     U_LB_IDEOGRAPHIC = 14,       /*[ID]*/
02399     U_LB_INSEPARABLE = 15,       /*[IN]*/
02400     U_LB_INSEPERABLE = U_LB_INSEPARABLE,
02401     U_LB_INFIX_NUMERIC = 16,     /*[IS]*/
02402     U_LB_LINE_FEED = 17,         /*[LF]*/
02403     U_LB_NONSTARTER = 18,        /*[NS]*/
02404     U_LB_NUMERIC = 19,           /*[NU]*/
02405     U_LB_OPEN_PUNCTUATION = 20,  /*[OP]*/
02406     U_LB_POSTFIX_NUMERIC = 21,   /*[PO]*/
02407     U_LB_PREFIX_NUMERIC = 22,    /*[PR]*/
02408     U_LB_QUOTATION = 23,         /*[QU]*/
02409     U_LB_COMPLEX_CONTEXT = 24,   /*[SA]*/
02410     U_LB_SURROGATE = 25,         /*[SG]*/
02411     U_LB_SPACE = 26,             /*[SP]*/
02412     U_LB_BREAK_SYMBOLS = 27,     /*[SY]*/
02413     U_LB_ZWSPACE = 28,           /*[ZW]*/
02415     U_LB_NEXT_LINE = 29,         /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
02417     U_LB_WORD_JOINER = 30,       /*[WJ]*/
02419     U_LB_H2 = 31,                /*[H2]*/ /* from here on: new in Unicode 4.1/ICU 3.4 */
02421     U_LB_H3 = 32,                /*[H3]*/
02423     U_LB_JL = 33,                /*[JL]*/
02425     U_LB_JT = 34,                /*[JT]*/
02427     U_LB_JV = 35,                /*[JV]*/
02429     U_LB_CLOSE_PARENTHESIS = 36, /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
02431     U_LB_CONDITIONAL_JAPANESE_STARTER = 37,/*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
02433     U_LB_HEBREW_LETTER = 38,     /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
02435     U_LB_REGIONAL_INDICATOR = 39,/*[RI]*/ /* new in Unicode 6.2/ICU 50 */
02437     U_LB_E_BASE = 40,            /*[EB]*/ /* from here on: new in Unicode 9.0/ICU 58 */
02439     U_LB_E_MODIFIER = 41,        /*[EM]*/
02441     U_LB_ZWJ = 42,               /*[ZWJ]*/
02442 #ifndef U_HIDE_DEPRECATED_API
02443 
02449     U_LB_COUNT = 43
02450 #endif  // U_HIDE_DEPRECATED_API
02451 } ULineBreak;
02452 
02459 typedef enum UNumericType {
02460     /*
02461      * Note: UNumericType constants are parsed by preparseucd.py.
02462      * It matches lines like
02463      *     U_NT_<Unicode Numeric_Type value name>
02464      */
02465 
02466     U_NT_NONE,              /*[None]*/
02467     U_NT_DECIMAL,           /*[de]*/
02468     U_NT_DIGIT,             /*[di]*/
02469     U_NT_NUMERIC,           /*[nu]*/
02470 #ifndef U_HIDE_DEPRECATED_API
02471 
02477     U_NT_COUNT
02478 #endif  // U_HIDE_DEPRECATED_API
02479 } UNumericType;
02480 
02487 typedef enum UHangulSyllableType {
02488     /*
02489      * Note: UHangulSyllableType constants are parsed by preparseucd.py.
02490      * It matches lines like
02491      *     U_HST_<Unicode Hangul_Syllable_Type value name>
02492      */
02493 
02494     U_HST_NOT_APPLICABLE,   /*[NA]*/
02495     U_HST_LEADING_JAMO,     /*[L]*/
02496     U_HST_VOWEL_JAMO,       /*[V]*/
02497     U_HST_TRAILING_JAMO,    /*[T]*/
02498     U_HST_LV_SYLLABLE,      /*[LV]*/
02499     U_HST_LVT_SYLLABLE,     /*[LVT]*/
02500 #ifndef U_HIDE_DEPRECATED_API
02501 
02507     U_HST_COUNT
02508 #endif  // U_HIDE_DEPRECATED_API
02509 } UHangulSyllableType;
02510 
02517 typedef enum UIndicPositionalCategory {
02518     /*
02519      * Note: UIndicPositionalCategory constants are parsed by preparseucd.py.
02520      * It matches lines like
02521      *     U_INPC_<Unicode Indic_Positional_Category value name>
02522      */
02523 
02525     U_INPC_NA,
02527     U_INPC_BOTTOM,
02529     U_INPC_BOTTOM_AND_LEFT,
02531     U_INPC_BOTTOM_AND_RIGHT,
02533     U_INPC_LEFT,
02535     U_INPC_LEFT_AND_RIGHT,
02537     U_INPC_OVERSTRUCK,
02539     U_INPC_RIGHT,
02541     U_INPC_TOP,
02543     U_INPC_TOP_AND_BOTTOM,
02545     U_INPC_TOP_AND_BOTTOM_AND_RIGHT,
02547     U_INPC_TOP_AND_LEFT,
02549     U_INPC_TOP_AND_LEFT_AND_RIGHT,
02551     U_INPC_TOP_AND_RIGHT,
02553     U_INPC_VISUAL_ORDER_LEFT,
02555     U_INPC_TOP_AND_BOTTOM_AND_LEFT,
02556 } UIndicPositionalCategory;
02557 
02564 typedef enum UIndicSyllabicCategory {
02565     /*
02566      * Note: UIndicSyllabicCategory constants are parsed by preparseucd.py.
02567      * It matches lines like
02568      *     U_INSC_<Unicode Indic_Syllabic_Category value name>
02569      */
02570 
02572     U_INSC_OTHER,
02574     U_INSC_AVAGRAHA,
02576     U_INSC_BINDU,
02578     U_INSC_BRAHMI_JOINING_NUMBER,
02580     U_INSC_CANTILLATION_MARK,
02582     U_INSC_CONSONANT,
02584     U_INSC_CONSONANT_DEAD,
02586     U_INSC_CONSONANT_FINAL,
02588     U_INSC_CONSONANT_HEAD_LETTER,
02590     U_INSC_CONSONANT_INITIAL_POSTFIXED,
02592     U_INSC_CONSONANT_KILLER,
02594     U_INSC_CONSONANT_MEDIAL,
02596     U_INSC_CONSONANT_PLACEHOLDER,
02598     U_INSC_CONSONANT_PRECEDING_REPHA,
02600     U_INSC_CONSONANT_PREFIXED,
02602     U_INSC_CONSONANT_SUBJOINED,
02604     U_INSC_CONSONANT_SUCCEEDING_REPHA,
02606     U_INSC_CONSONANT_WITH_STACKER,
02608     U_INSC_GEMINATION_MARK,
02610     U_INSC_INVISIBLE_STACKER,
02612     U_INSC_JOINER,
02614     U_INSC_MODIFYING_LETTER,
02616     U_INSC_NON_JOINER,
02618     U_INSC_NUKTA,
02620     U_INSC_NUMBER,
02622     U_INSC_NUMBER_JOINER,
02624     U_INSC_PURE_KILLER,
02626     U_INSC_REGISTER_SHIFTER,
02628     U_INSC_SYLLABLE_MODIFIER,
02630     U_INSC_TONE_LETTER,
02632     U_INSC_TONE_MARK,
02634     U_INSC_VIRAMA,
02636     U_INSC_VISARGA,
02638     U_INSC_VOWEL,
02640     U_INSC_VOWEL_DEPENDENT,
02642     U_INSC_VOWEL_INDEPENDENT,
02643 } UIndicSyllabicCategory;
02644 
02651 typedef enum UVerticalOrientation {
02652     /*
02653      * Note: UVerticalOrientation constants are parsed by preparseucd.py.
02654      * It matches lines like
02655      *     U_VO_<Unicode Vertical_Orientation value name>
02656      */
02657 
02659     U_VO_ROTATED,
02661     U_VO_TRANSFORMED_ROTATED,
02663     U_VO_TRANSFORMED_UPRIGHT,
02665     U_VO_UPRIGHT,
02666 } UVerticalOrientation;
02667 
02695 U_CAPI UBool U_EXPORT2
02696 u_hasBinaryProperty(UChar32 c, UProperty which);
02697 
02722 U_CAPI UBool U_EXPORT2
02723 u_stringHasBinaryProperty(const UChar *s, int32_t length, UProperty which);
02724 
02740 U_CAPI const USet * U_EXPORT2
02741 u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode);
02742 
02755 U_CAPI UBool U_EXPORT2
02756 u_isUAlphabetic(UChar32 c);
02757 
02770 U_CAPI UBool U_EXPORT2
02771 u_isULowercase(UChar32 c);
02772 
02785 U_CAPI UBool U_EXPORT2
02786 u_isUUppercase(UChar32 c);
02787 
02806 U_CAPI UBool U_EXPORT2
02807 u_isUWhiteSpace(UChar32 c);
02808 
02847 U_CAPI int32_t U_EXPORT2
02848 u_getIntPropertyValue(UChar32 c, UProperty which);
02849 
02868 U_CAPI int32_t U_EXPORT2
02869 u_getIntPropertyMinValue(UProperty which);
02870 
02897 U_CAPI int32_t U_EXPORT2
02898 u_getIntPropertyMaxValue(UProperty which);
02899 
02915 U_CAPI const UCPMap * U_EXPORT2
02916 u_getIntPropertyMap(UProperty property, UErrorCode *pErrorCode);
02917 
02940 U_CAPI double U_EXPORT2
02941 u_getNumericValue(UChar32 c);
02942 
02950 #define U_NO_NUMERIC_VALUE ((double)-123456789.)
02951 
02975 U_CAPI UBool U_EXPORT2
02976 u_islower(UChar32 c);
02977 
03002 U_CAPI UBool U_EXPORT2
03003 u_isupper(UChar32 c);
03004 
03019 U_CAPI UBool U_EXPORT2
03020 u_istitle(UChar32 c);
03021 
03040 U_CAPI UBool U_EXPORT2
03041 u_isdigit(UChar32 c);
03042 
03061 U_CAPI UBool U_EXPORT2
03062 u_isalpha(UChar32 c);
03063 
03082 U_CAPI UBool U_EXPORT2
03083 u_isalnum(UChar32 c);
03084 
03105 U_CAPI UBool U_EXPORT2
03106 u_isxdigit(UChar32 c);
03107 
03121 U_CAPI UBool U_EXPORT2
03122 u_ispunct(UChar32 c);
03123 
03140 U_CAPI UBool U_EXPORT2
03141 u_isgraph(UChar32 c);
03142 
03168 U_CAPI UBool U_EXPORT2
03169 u_isblank(UChar32 c);
03170 
03193 U_CAPI UBool U_EXPORT2
03194 u_isdefined(UChar32 c);
03195 
03214 U_CAPI UBool U_EXPORT2
03215 u_isspace(UChar32 c);
03216 
03235 U_CAPI UBool U_EXPORT2
03236 u_isJavaSpaceChar(UChar32 c);
03237 
03275 U_CAPI UBool U_EXPORT2
03276 u_isWhitespace(UChar32 c);
03277 
03299 U_CAPI UBool U_EXPORT2
03300 u_iscntrl(UChar32 c);
03301 
03314 U_CAPI UBool U_EXPORT2
03315 u_isISOControl(UChar32 c);
03316 
03332 U_CAPI UBool U_EXPORT2
03333 u_isprint(UChar32 c);
03334 
03352 U_CAPI UBool U_EXPORT2
03353 u_isbase(UChar32 c);
03354 
03371 U_CAPI UCharDirection U_EXPORT2
03372 u_charDirection(UChar32 c);
03373 
03389 U_CAPI UBool U_EXPORT2
03390 u_isMirrored(UChar32 c);
03391 
03411 U_CAPI UChar32 U_EXPORT2
03412 u_charMirror(UChar32 c);
03413 
03430 U_CAPI UChar32 U_EXPORT2
03431 u_getBidiPairedBracket(UChar32 c);
03432 
03444 U_CAPI int8_t U_EXPORT2
03445 u_charType(UChar32 c);
03446 
03460 #define U_GET_GC_MASK(c) U_MASK(u_charType(c))
03461 
03479 typedef UBool U_CALLCONV
03480 UCharEnumTypeRange(const void *context, UChar32 start, UChar32 limit, UCharCategory type);
03481 
03501 U_CAPI void U_EXPORT2
03502 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
03503 
03504 #if !UCONFIG_NO_NORMALIZATION
03505 
03513 U_CAPI uint8_t U_EXPORT2
03514 u_getCombiningClass(UChar32 c);
03515 
03516 #endif
03517 
03541 U_CAPI int32_t U_EXPORT2
03542 u_charDigitValue(UChar32 c);
03543 
03553 U_CAPI UBlockCode U_EXPORT2
03554 ublock_getCode(UChar32 c);
03555 
03588 U_CAPI int32_t U_EXPORT2
03589 u_charName(UChar32 code, UCharNameChoice nameChoice,
03590            char *buffer, int32_t bufferLength,
03591            UErrorCode *pErrorCode);
03592 
03593 #ifndef U_HIDE_DEPRECATED_API
03594 
03612 U_DEPRECATED int32_t U_EXPORT2
03613 u_getISOComment(UChar32 c,
03614                 char *dest, int32_t destCapacity,
03615                 UErrorCode *pErrorCode);
03616 #endif  /* U_HIDE_DEPRECATED_API */
03617 
03638 U_CAPI UChar32 U_EXPORT2
03639 u_charFromName(UCharNameChoice nameChoice,
03640                const char *name,
03641                UErrorCode *pErrorCode);
03642 
03660 typedef UBool U_CALLCONV UEnumCharNamesFn(void *context,
03661                                UChar32 code,
03662                                UCharNameChoice nameChoice,
03663                                const char *name,
03664                                int32_t length);
03665 
03687 U_CAPI void U_EXPORT2
03688 u_enumCharNames(UChar32 start, UChar32 limit,
03689                 UEnumCharNamesFn *fn,
03690                 void *context,
03691                 UCharNameChoice nameChoice,
03692                 UErrorCode *pErrorCode);
03693 
03725 U_CAPI const char* U_EXPORT2
03726 u_getPropertyName(UProperty property,
03727                   UPropertyNameChoice nameChoice);
03728 
03748 U_CAPI UProperty U_EXPORT2
03749 u_getPropertyEnum(const char* alias);
03750 
03798 U_CAPI const char* U_EXPORT2
03799 u_getPropertyValueName(UProperty property,
03800                        int32_t value,
03801                        UPropertyNameChoice nameChoice);
03802 
03834 U_CAPI int32_t U_EXPORT2
03835 u_getPropertyValueEnum(UProperty property,
03836                        const char* alias);
03837 
03852 U_CAPI UBool U_EXPORT2
03853 u_isIDStart(UChar32 c);
03854 
03869 U_CAPI UBool U_EXPORT2
03870 u_isIDPart(UChar32 c);
03871 
03892 U_CAPI UBool U_EXPORT2
03893 u_isIDIgnorable(UChar32 c);
03894 
03911 U_CAPI UBool U_EXPORT2
03912 u_isJavaIDStart(UChar32 c);
03913 
03932 U_CAPI UBool U_EXPORT2
03933 u_isJavaIDPart(UChar32 c);
03934 
03957 U_CAPI UChar32 U_EXPORT2
03958 u_tolower(UChar32 c);
03959 
03982 U_CAPI UChar32 U_EXPORT2
03983 u_toupper(UChar32 c);
03984 
04007 U_CAPI UChar32 U_EXPORT2
04008 u_totitle(UChar32 c);
04009 
04032 U_CAPI UChar32 U_EXPORT2
04033 u_foldCase(UChar32 c, uint32_t options);
04034 
04073 U_CAPI int32_t U_EXPORT2
04074 u_digit(UChar32 ch, int8_t radix);
04075 
04104 U_CAPI UChar32 U_EXPORT2
04105 u_forDigit(int32_t digit, int8_t radix);
04106 
04121 U_CAPI void U_EXPORT2
04122 u_charAge(UChar32 c, UVersionInfo versionArray);
04123 
04135 U_CAPI void U_EXPORT2
04136 u_getUnicodeVersion(UVersionInfo versionArray);
04137 
04138 #if !UCONFIG_NO_NORMALIZATION
04139 
04160 U_CAPI int32_t U_EXPORT2
04161 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
04162 
04163 #endif
04164 
04165 
04166 U_CDECL_END
04167 
04168 #endif /*_UCHAR*/
04169 /*eof*/