ICU 49.1.1  49.1.1
uchar.h
Go to the documentation of this file.
1 /*
2 **********************************************************************
3 * Copyright (C) 1997-2011, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 **********************************************************************
6 *
7 * File UCHAR.H
8 *
9 * Modification History:
10 *
11 * Date Name Description
12 * 04/02/97 aliu Creation.
13 * 03/29/99 helena Updated for C APIs.
14 * 4/15/99 Madhu Updated for C Implementation and Javadoc
15 * 5/20/99 Madhu Added the function u_getVersion()
16 * 8/19/1999 srl Upgraded scripts to Unicode 3.0
17 * 8/27/1999 schererm UCharDirection constants: U_...
18 * 11/11/1999 weiv added u_isalnum(), cleaned comments
19 * 01/11/2000 helena Renamed u_getVersion to u_getUnicodeVersion().
20 ******************************************************************************
21 */
22 
23 #ifndef UCHAR_H
24 #define UCHAR_H
25 
26 #include "unicode/utypes.h"
27 
29 
30 /*==========================================================================*/
31 /* Unicode version number */
32 /*==========================================================================*/
42 #define U_UNICODE_VERSION "6.1"
43 
124 #define UCHAR_MIN_VALUE 0
125 
134 #define UCHAR_MAX_VALUE 0x10ffff
135 
140 #define U_MASK(x) ((uint32_t)1<<(x))
141 
161 typedef enum UProperty {
162  /*
163  * Note: UProperty constants are parsed by preparseucd.py.
164  * It matches lines like
165  * UCHAR_<Unicode property name>=<integer>,
166  */
167 
168  /* Note: Place UCHAR_ALPHABETIC before UCHAR_BINARY_START so that
169  debuggers display UCHAR_ALPHABETIC as the symbolic name for 0,
170  rather than UCHAR_BINARY_START. Likewise for other *_START
171  identifiers. */
172 
402 
410  UCHAR_BLOCK=0x1001,
438  UCHAR_SCRIPT=0x100A,
485 
499 
507 
510  UCHAR_AGE=0x4000,
527  UCHAR_NAME=0x4005,
553 
554 #ifndef U_HIDE_DRAFT_API
555 
568 #endif /* U_HIDE_DRAFT_API */
569 
572 } UProperty;
573 
579 typedef enum UCharCategory
580 {
581  /*
582  * Note: UCharCategory constants and their API comments are parsed by preparseucd.py.
583  * It matches pairs of lines like
584  * / ** <Unicode 2-letter General_Category value> comment... * /
585  * U_<[A-Z_]+> = <integer>,
586  */
587 
652 } UCharCategory;
653 
668 #define U_GC_CN_MASK U_MASK(U_GENERAL_OTHER_TYPES)
669 
671 #define U_GC_LU_MASK U_MASK(U_UPPERCASE_LETTER)
672 
673 #define U_GC_LL_MASK U_MASK(U_LOWERCASE_LETTER)
674 
675 #define U_GC_LT_MASK U_MASK(U_TITLECASE_LETTER)
676 
677 #define U_GC_LM_MASK U_MASK(U_MODIFIER_LETTER)
678 
679 #define U_GC_LO_MASK U_MASK(U_OTHER_LETTER)
680 
682 #define U_GC_MN_MASK U_MASK(U_NON_SPACING_MARK)
683 
684 #define U_GC_ME_MASK U_MASK(U_ENCLOSING_MARK)
685 
686 #define U_GC_MC_MASK U_MASK(U_COMBINING_SPACING_MARK)
687 
689 #define U_GC_ND_MASK U_MASK(U_DECIMAL_DIGIT_NUMBER)
690 
691 #define U_GC_NL_MASK U_MASK(U_LETTER_NUMBER)
692 
693 #define U_GC_NO_MASK U_MASK(U_OTHER_NUMBER)
694 
696 #define U_GC_ZS_MASK U_MASK(U_SPACE_SEPARATOR)
697 
698 #define U_GC_ZL_MASK U_MASK(U_LINE_SEPARATOR)
699 
700 #define U_GC_ZP_MASK U_MASK(U_PARAGRAPH_SEPARATOR)
701 
703 #define U_GC_CC_MASK U_MASK(U_CONTROL_CHAR)
704 
705 #define U_GC_CF_MASK U_MASK(U_FORMAT_CHAR)
706 
707 #define U_GC_CO_MASK U_MASK(U_PRIVATE_USE_CHAR)
708 
709 #define U_GC_CS_MASK U_MASK(U_SURROGATE)
710 
712 #define U_GC_PD_MASK U_MASK(U_DASH_PUNCTUATION)
713 
714 #define U_GC_PS_MASK U_MASK(U_START_PUNCTUATION)
715 
716 #define U_GC_PE_MASK U_MASK(U_END_PUNCTUATION)
717 
718 #define U_GC_PC_MASK U_MASK(U_CONNECTOR_PUNCTUATION)
719 
720 #define U_GC_PO_MASK U_MASK(U_OTHER_PUNCTUATION)
721 
723 #define U_GC_SM_MASK U_MASK(U_MATH_SYMBOL)
724 
725 #define U_GC_SC_MASK U_MASK(U_CURRENCY_SYMBOL)
726 
727 #define U_GC_SK_MASK U_MASK(U_MODIFIER_SYMBOL)
728 
729 #define U_GC_SO_MASK U_MASK(U_OTHER_SYMBOL)
730 
732 #define U_GC_PI_MASK U_MASK(U_INITIAL_PUNCTUATION)
733 
734 #define U_GC_PF_MASK U_MASK(U_FINAL_PUNCTUATION)
735 
736 
738 #define U_GC_L_MASK \
739  (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
740 
742 #define U_GC_LC_MASK \
743  (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK)
744 
746 #define U_GC_M_MASK (U_GC_MN_MASK|U_GC_ME_MASK|U_GC_MC_MASK)
747 
749 #define U_GC_N_MASK (U_GC_ND_MASK|U_GC_NL_MASK|U_GC_NO_MASK)
750 
752 #define U_GC_Z_MASK (U_GC_ZS_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK)
753 
755 #define U_GC_C_MASK \
756  (U_GC_CN_MASK|U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CO_MASK|U_GC_CS_MASK)
757 
759 #define U_GC_P_MASK \
760  (U_GC_PD_MASK|U_GC_PS_MASK|U_GC_PE_MASK|U_GC_PC_MASK|U_GC_PO_MASK| \
761  U_GC_PI_MASK|U_GC_PF_MASK)
762 
764 #define U_GC_S_MASK (U_GC_SM_MASK|U_GC_SC_MASK|U_GC_SK_MASK|U_GC_SO_MASK)
765 
770 typedef enum UCharDirection {
771  /*
772  * Note: UCharDirection constants and their API comments are parsed by preparseucd.py.
773  * It matches pairs of lines like
774  * / ** <Unicode 1..3-letter Bidi_Class value> comment... * /
775  * U_<[A-Z_]+> = <integer>,
776  */
777 
819 
825  /*
826  * Note: UBlockCode constants are parsed by preparseucd.py.
827  * It matches lines like
828  * UBLOCK_<Unicode Block value name> = <integer>,
829  */
830 
832  UBLOCK_NO_BLOCK = 0, /*[none]*/ /* Special range indicating No_Block */
833 
835  UBLOCK_BASIC_LATIN = 1, /*[0000]*/
836 
839 
841  UBLOCK_LATIN_EXTENDED_A =3, /*[0100]*/
842 
844  UBLOCK_LATIN_EXTENDED_B =4, /*[0180]*/
845 
847  UBLOCK_IPA_EXTENSIONS =5, /*[0250]*/
848 
851 
854 
859  UBLOCK_GREEK =8, /*[0370]*/
860 
862  UBLOCK_CYRILLIC =9, /*[0400]*/
863 
865  UBLOCK_ARMENIAN =10, /*[0530]*/
866 
868  UBLOCK_HEBREW =11, /*[0590]*/
869 
871  UBLOCK_ARABIC =12, /*[0600]*/
872 
874  UBLOCK_SYRIAC =13, /*[0700]*/
875 
877  UBLOCK_THAANA =14, /*[0780]*/
878 
880  UBLOCK_DEVANAGARI =15, /*[0900]*/
881 
883  UBLOCK_BENGALI =16, /*[0980]*/
884 
886  UBLOCK_GURMUKHI =17, /*[0A00]*/
887 
889  UBLOCK_GUJARATI =18, /*[0A80]*/
890 
892  UBLOCK_ORIYA =19, /*[0B00]*/
893 
895  UBLOCK_TAMIL =20, /*[0B80]*/
896 
898  UBLOCK_TELUGU =21, /*[0C00]*/
899 
901  UBLOCK_KANNADA =22, /*[0C80]*/
902 
904  UBLOCK_MALAYALAM =23, /*[0D00]*/
905 
907  UBLOCK_SINHALA =24, /*[0D80]*/
908 
910  UBLOCK_THAI =25, /*[0E00]*/
911 
913  UBLOCK_LAO =26, /*[0E80]*/
914 
916  UBLOCK_TIBETAN =27, /*[0F00]*/
917 
919  UBLOCK_MYANMAR =28, /*[1000]*/
920 
922  UBLOCK_GEORGIAN =29, /*[10A0]*/
923 
925  UBLOCK_HANGUL_JAMO =30, /*[1100]*/
926 
928  UBLOCK_ETHIOPIC =31, /*[1200]*/
929 
931  UBLOCK_CHEROKEE =32, /*[13A0]*/
932 
935 
937  UBLOCK_OGHAM =34, /*[1680]*/
938 
940  UBLOCK_RUNIC =35, /*[16A0]*/
941 
943  UBLOCK_KHMER =36, /*[1780]*/
944 
946  UBLOCK_MONGOLIAN =37, /*[1800]*/
947 
950 
952  UBLOCK_GREEK_EXTENDED =39, /*[1F00]*/
953 
956 
959 
961  UBLOCK_CURRENCY_SYMBOLS =42, /*[20A0]*/
962 
968 
971 
973  UBLOCK_NUMBER_FORMS =45, /*[2150]*/
974 
976  UBLOCK_ARROWS =46, /*[2190]*/
977 
980 
983 
985  UBLOCK_CONTROL_PICTURES =49, /*[2400]*/
986 
989 
992 
994  UBLOCK_BOX_DRAWING =52, /*[2500]*/
995 
997  UBLOCK_BLOCK_ELEMENTS =53, /*[2580]*/
998 
1000  UBLOCK_GEOMETRIC_SHAPES =54, /*[25A0]*/
1001 
1004 
1006  UBLOCK_DINGBATS =56, /*[2700]*/
1007 
1009  UBLOCK_BRAILLE_PATTERNS =57, /*[2800]*/
1010 
1013 
1015  UBLOCK_KANGXI_RADICALS =59, /*[2F00]*/
1016 
1019 
1022 
1024  UBLOCK_HIRAGANA =62, /*[3040]*/
1025 
1027  UBLOCK_KATAKANA =63, /*[30A0]*/
1028 
1030  UBLOCK_BOPOMOFO =64, /*[3100]*/
1031 
1034 
1036  UBLOCK_KANBUN =66, /*[3190]*/
1037 
1040 
1043 
1046 
1049 
1052 
1054  UBLOCK_YI_SYLLABLES =72, /*[A000]*/
1055 
1057  UBLOCK_YI_RADICALS =73, /*[A490]*/
1058 
1060  UBLOCK_HANGUL_SYLLABLES =74, /*[AC00]*/
1061 
1063  UBLOCK_HIGH_SURROGATES =75, /*[D800]*/
1064 
1067 
1069  UBLOCK_LOW_SURROGATES =77, /*[DC00]*/
1070 
1080  UBLOCK_PRIVATE_USE_AREA =78, /*[E000]*/
1091 
1094 
1097 
1100 
1103 
1106 
1109 
1112 
1114  UBLOCK_SPECIALS =86, /*[FFF0]*/
1115 
1118 
1119  /* New blocks in Unicode 3.1 */
1120 
1122  UBLOCK_OLD_ITALIC = 88, /*[10300]*/
1124  UBLOCK_GOTHIC = 89, /*[10330]*/
1126  UBLOCK_DESERET = 90, /*[10400]*/
1130  UBLOCK_MUSICAL_SYMBOLS = 92, /*[1D100]*/
1138  UBLOCK_TAGS = 96, /*[E0000]*/
1139 
1140  /* New blocks in Unicode 3.2 */
1141 
1150  UBLOCK_TAGALOG = 98, /*[1700]*/
1152  UBLOCK_HANUNOO = 99, /*[1720]*/
1154  UBLOCK_BUHID = 100, /*[1740]*/
1156  UBLOCK_TAGBANWA = 101, /*[1760]*/
1170  UBLOCK_VARIATION_SELECTORS = 108, /*[FE00]*/
1175 
1176  /* New blocks in Unicode 4 */
1177 
1179  UBLOCK_LIMBU = 111, /*[1900]*/
1181  UBLOCK_TAI_LE = 112, /*[1950]*/
1183  UBLOCK_KHMER_SYMBOLS = 113, /*[19E0]*/
1185  UBLOCK_PHONETIC_EXTENSIONS = 114, /*[1D00]*/
1191  UBLOCK_LINEAR_B_SYLLABARY = 117, /*[10000]*/
1193  UBLOCK_LINEAR_B_IDEOGRAMS = 118, /*[10080]*/
1195  UBLOCK_AEGEAN_NUMBERS = 119, /*[10100]*/
1197  UBLOCK_UGARITIC = 120, /*[10380]*/
1199  UBLOCK_SHAVIAN = 121, /*[10450]*/
1201  UBLOCK_OSMANYA = 122, /*[10480]*/
1203  UBLOCK_CYPRIOT_SYLLABARY = 123, /*[10800]*/
1205  UBLOCK_TAI_XUAN_JING_SYMBOLS = 124, /*[1D300]*/
1208 
1209  /* New blocks in Unicode 4.1 */
1210 
1214  UBLOCK_ANCIENT_GREEK_NUMBERS = 127, /*[10140]*/
1216  UBLOCK_ARABIC_SUPPLEMENT = 128, /*[0750]*/
1218  UBLOCK_BUGINESE = 129, /*[1A00]*/
1220  UBLOCK_CJK_STROKES = 130, /*[31C0]*/
1224  UBLOCK_COPTIC = 132, /*[2C80]*/
1226  UBLOCK_ETHIOPIC_EXTENDED = 133, /*[2D80]*/
1228  UBLOCK_ETHIOPIC_SUPPLEMENT = 134, /*[1380]*/
1230  UBLOCK_GEORGIAN_SUPPLEMENT = 135, /*[2D00]*/
1232  UBLOCK_GLAGOLITIC = 136, /*[2C00]*/
1234  UBLOCK_KHAROSHTHI = 137, /*[10A00]*/
1238  UBLOCK_NEW_TAI_LUE = 139, /*[1980]*/
1240  UBLOCK_OLD_PERSIAN = 140, /*[103A0]*/
1246  UBLOCK_SYLOTI_NAGRI = 143, /*[A800]*/
1248  UBLOCK_TIFINAGH = 144, /*[2D30]*/
1250  UBLOCK_VERTICAL_FORMS = 145, /*[FE10]*/
1251 
1252  /* New blocks in Unicode 5.0 */
1253 
1255  UBLOCK_NKO = 146, /*[07C0]*/
1257  UBLOCK_BALINESE = 147, /*[1B00]*/
1259  UBLOCK_LATIN_EXTENDED_C = 148, /*[2C60]*/
1261  UBLOCK_LATIN_EXTENDED_D = 149, /*[A720]*/
1263  UBLOCK_PHAGS_PA = 150, /*[A840]*/
1265  UBLOCK_PHOENICIAN = 151, /*[10900]*/
1267  UBLOCK_CUNEIFORM = 152, /*[12000]*/
1271  UBLOCK_COUNTING_ROD_NUMERALS = 154, /*[1D360]*/
1272 
1273  /* New blocks in Unicode 5.1 */
1274 
1276  UBLOCK_SUNDANESE = 155, /*[1B80]*/
1278  UBLOCK_LEPCHA = 156, /*[1C00]*/
1280  UBLOCK_OL_CHIKI = 157, /*[1C50]*/
1282  UBLOCK_CYRILLIC_EXTENDED_A = 158, /*[2DE0]*/
1284  UBLOCK_VAI = 159, /*[A500]*/
1286  UBLOCK_CYRILLIC_EXTENDED_B = 160, /*[A640]*/
1288  UBLOCK_SAURASHTRA = 161, /*[A880]*/
1290  UBLOCK_KAYAH_LI = 162, /*[A900]*/
1292  UBLOCK_REJANG = 163, /*[A930]*/
1294  UBLOCK_CHAM = 164, /*[AA00]*/
1296  UBLOCK_ANCIENT_SYMBOLS = 165, /*[10190]*/
1298  UBLOCK_PHAISTOS_DISC = 166, /*[101D0]*/
1300  UBLOCK_LYCIAN = 167, /*[10280]*/
1302  UBLOCK_CARIAN = 168, /*[102A0]*/
1304  UBLOCK_LYDIAN = 169, /*[10920]*/
1306  UBLOCK_MAHJONG_TILES = 170, /*[1F000]*/
1308  UBLOCK_DOMINO_TILES = 171, /*[1F030]*/
1309 
1310  /* New blocks in Unicode 5.2 */
1311 
1313  UBLOCK_SAMARITAN = 172, /*[0800]*/
1317  UBLOCK_TAI_THAM = 174, /*[1A20]*/
1319  UBLOCK_VEDIC_EXTENSIONS = 175, /*[1CD0]*/
1321  UBLOCK_LISU = 176, /*[A4D0]*/
1323  UBLOCK_BAMUM = 177, /*[A6A0]*/
1327  UBLOCK_DEVANAGARI_EXTENDED = 179, /*[A8E0]*/
1331  UBLOCK_JAVANESE = 181, /*[A980]*/
1333  UBLOCK_MYANMAR_EXTENDED_A = 182, /*[AA60]*/
1335  UBLOCK_TAI_VIET = 183, /*[AA80]*/
1337  UBLOCK_MEETEI_MAYEK = 184, /*[ABC0]*/
1341  UBLOCK_IMPERIAL_ARAMAIC = 186, /*[10840]*/
1343  UBLOCK_OLD_SOUTH_ARABIAN = 187, /*[10A60]*/
1345  UBLOCK_AVESTAN = 188, /*[10B00]*/
1349  UBLOCK_INSCRIPTIONAL_PAHLAVI = 190, /*[10B60]*/
1351  UBLOCK_OLD_TURKIC = 191, /*[10C00]*/
1353  UBLOCK_RUMI_NUMERAL_SYMBOLS = 192, /*[10E60]*/
1355  UBLOCK_KAITHI = 193, /*[11080]*/
1357  UBLOCK_EGYPTIAN_HIEROGLYPHS = 194, /*[13000]*/
1364 
1365  /* New blocks in Unicode 6.0 */
1366 
1368  UBLOCK_MANDAIC = 198, /*[0840]*/
1370  UBLOCK_BATAK = 199, /*[1BC0]*/
1372  UBLOCK_ETHIOPIC_EXTENDED_A = 200, /*[AB00]*/
1374  UBLOCK_BRAHMI = 201, /*[11000]*/
1376  UBLOCK_BAMUM_SUPPLEMENT = 202, /*[16800]*/
1378  UBLOCK_KANA_SUPPLEMENT = 203, /*[1B000]*/
1380  UBLOCK_PLAYING_CARDS = 204, /*[1F0A0]*/
1384  UBLOCK_EMOTICONS = 206, /*[1F600]*/
1388  UBLOCK_ALCHEMICAL_SYMBOLS = 208, /*[1F700]*/
1391 
1392  /* New blocks in Unicode 6.1 */
1393 
1395  UBLOCK_ARABIC_EXTENDED_A = 210, /*[08A0]*/
1399  UBLOCK_CHAKMA = 212, /*[11100]*/
1403  UBLOCK_MEROITIC_CURSIVE = 214, /*[109A0]*/
1405  UBLOCK_MEROITIC_HIEROGLYPHS = 215, /*[10980]*/
1407  UBLOCK_MIAO = 216, /*[16F00]*/
1409  UBLOCK_SHARADA = 217, /*[11180]*/
1411  UBLOCK_SORA_SOMPENG = 218, /*[110D0]*/
1415  UBLOCK_TAKRI = 220, /*[11680]*/
1416 
1419 
1422 };
1423 
1425 typedef enum UBlockCode UBlockCode;
1426 
1434 typedef enum UEastAsianWidth {
1435  /*
1436  * Note: UEastAsianWidth constants are parsed by preparseucd.py.
1437  * It matches lines like
1438  * U_EA_<Unicode East_Asian_Width value name>
1439  */
1440 
1441  U_EA_NEUTRAL, /*[N]*/
1442  U_EA_AMBIGUOUS, /*[A]*/
1443  U_EA_HALFWIDTH, /*[H]*/
1444  U_EA_FULLWIDTH, /*[F]*/
1445  U_EA_NARROW, /*[Na]*/
1446  U_EA_WIDE, /*[W]*/
1447  U_EA_COUNT
1448 } UEastAsianWidth;
1449 
1461 typedef enum UCharNameChoice {
1476 } UCharNameChoice;
1477 
1491 typedef enum UPropertyNameChoice {
1492  U_SHORT_PROPERTY_NAME,
1493  U_LONG_PROPERTY_NAME,
1494  U_PROPERTY_NAME_CHOICE_COUNT
1496 
1503 typedef enum UDecompositionType {
1504  /*
1505  * Note: UDecompositionType constants are parsed by preparseucd.py.
1506  * It matches lines like
1507  * U_DT_<Unicode Decomposition_Type value name>
1508  */
1509 
1510  U_DT_NONE, /*[none]*/
1511  U_DT_CANONICAL, /*[can]*/
1512  U_DT_COMPAT, /*[com]*/
1513  U_DT_CIRCLE, /*[enc]*/
1514  U_DT_FINAL, /*[fin]*/
1515  U_DT_FONT, /*[font]*/
1516  U_DT_FRACTION, /*[fra]*/
1517  U_DT_INITIAL, /*[init]*/
1518  U_DT_ISOLATED, /*[iso]*/
1519  U_DT_MEDIAL, /*[med]*/
1520  U_DT_NARROW, /*[nar]*/
1521  U_DT_NOBREAK, /*[nb]*/
1522  U_DT_SMALL, /*[sml]*/
1523  U_DT_SQUARE, /*[sqr]*/
1524  U_DT_SUB, /*[sub]*/
1525  U_DT_SUPER, /*[sup]*/
1526  U_DT_VERTICAL, /*[vert]*/
1527  U_DT_WIDE, /*[wide]*/
1528  U_DT_COUNT /* 18 */
1530 
1537 typedef enum UJoiningType {
1538  /*
1539  * Note: UJoiningType constants are parsed by preparseucd.py.
1540  * It matches lines like
1541  * U_JT_<Unicode Joining_Type value name>
1542  */
1543 
1544  U_JT_NON_JOINING, /*[U]*/
1545  U_JT_JOIN_CAUSING, /*[C]*/
1546  U_JT_DUAL_JOINING, /*[D]*/
1547  U_JT_LEFT_JOINING, /*[L]*/
1548  U_JT_RIGHT_JOINING, /*[R]*/
1549  U_JT_TRANSPARENT, /*[T]*/
1550  U_JT_COUNT /* 6 */
1551 } UJoiningType;
1552 
1559 typedef enum UJoiningGroup {
1560  /*
1561  * Note: UJoiningGroup constants are parsed by preparseucd.py.
1562  * It matches lines like
1563  * U_JG_<Unicode Joining_Group value name>
1564  */
1565 
1566  U_JG_NO_JOINING_GROUP,
1567  U_JG_AIN,
1568  U_JG_ALAPH,
1569  U_JG_ALEF,
1570  U_JG_BEH,
1571  U_JG_BETH,
1572  U_JG_DAL,
1573  U_JG_DALATH_RISH,
1574  U_JG_E,
1575  U_JG_FEH,
1576  U_JG_FINAL_SEMKATH,
1577  U_JG_GAF,
1578  U_JG_GAMAL,
1579  U_JG_HAH,
1581  U_JG_HAMZA_ON_HEH_GOAL=U_JG_TEH_MARBUTA_GOAL,
1582  U_JG_HE,
1583  U_JG_HEH,
1584  U_JG_HEH_GOAL,
1585  U_JG_HETH,
1586  U_JG_KAF,
1587  U_JG_KAPH,
1588  U_JG_KNOTTED_HEH,
1589  U_JG_LAM,
1590  U_JG_LAMADH,
1591  U_JG_MEEM,
1592  U_JG_MIM,
1593  U_JG_NOON,
1594  U_JG_NUN,
1595  U_JG_PE,
1596  U_JG_QAF,
1597  U_JG_QAPH,
1598  U_JG_REH,
1599  U_JG_REVERSED_PE,
1600  U_JG_SAD,
1601  U_JG_SADHE,
1602  U_JG_SEEN,
1603  U_JG_SEMKATH,
1604  U_JG_SHIN,
1605  U_JG_SWASH_KAF,
1606  U_JG_SYRIAC_WAW,
1607  U_JG_TAH,
1608  U_JG_TAW,
1609  U_JG_TEH_MARBUTA,
1610  U_JG_TETH,
1611  U_JG_WAW,
1612  U_JG_YEH,
1613  U_JG_YEH_BARREE,
1614  U_JG_YEH_WITH_TAIL,
1615  U_JG_YUDH,
1616  U_JG_YUDH_HE,
1617  U_JG_ZAIN,
1625  U_JG_COUNT
1626 } UJoiningGroup;
1627 
1635  /*
1636  * Note: UGraphemeClusterBreak constants are parsed by preparseucd.py.
1637  * It matches lines like
1638  * U_GCB_<Unicode Grapheme_Cluster_Break value name>
1639  */
1640 
1641  U_GCB_OTHER = 0, /*[XX]*/
1642  U_GCB_CONTROL = 1, /*[CN]*/
1643  U_GCB_CR = 2, /*[CR]*/
1644  U_GCB_EXTEND = 3, /*[EX]*/
1645  U_GCB_L = 4, /*[L]*/
1646  U_GCB_LF = 5, /*[LF]*/
1647  U_GCB_LV = 6, /*[LV]*/
1648  U_GCB_LVT = 7, /*[LVT]*/
1649  U_GCB_T = 8, /*[T]*/
1650  U_GCB_V = 9, /*[V]*/
1651  U_GCB_SPACING_MARK = 10, /*[SM]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
1652  U_GCB_PREPEND = 11, /*[PP]*/
1653  U_GCB_COUNT = 12
1655 
1663 typedef enum UWordBreakValues {
1664  /*
1665  * Note: UWordBreakValues constants are parsed by preparseucd.py.
1666  * It matches lines like
1667  * U_WB_<Unicode Word_Break value name>
1668  */
1669 
1670  U_WB_OTHER = 0, /*[XX]*/
1671  U_WB_ALETTER = 1, /*[LE]*/
1672  U_WB_FORMAT = 2, /*[FO]*/
1673  U_WB_KATAKANA = 3, /*[KA]*/
1674  U_WB_MIDLETTER = 4, /*[ML]*/
1675  U_WB_MIDNUM = 5, /*[MN]*/
1676  U_WB_NUMERIC = 6, /*[NU]*/
1677  U_WB_EXTENDNUMLET = 7, /*[EX]*/
1678  U_WB_CR = 8, /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
1679  U_WB_EXTEND = 9, /*[Extend]*/
1680  U_WB_LF = 10, /*[LF]*/
1681  U_WB_MIDNUMLET =11, /*[MB]*/
1682  U_WB_NEWLINE =12, /*[NL]*/
1683  U_WB_COUNT = 13
1685 
1692 typedef enum USentenceBreak {
1693  /*
1694  * Note: USentenceBreak constants are parsed by preparseucd.py.
1695  * It matches lines like
1696  * U_SB_<Unicode Sentence_Break value name>
1697  */
1698 
1699  U_SB_OTHER = 0, /*[XX]*/
1700  U_SB_ATERM = 1, /*[AT]*/
1701  U_SB_CLOSE = 2, /*[CL]*/
1702  U_SB_FORMAT = 3, /*[FO]*/
1703  U_SB_LOWER = 4, /*[LO]*/
1704  U_SB_NUMERIC = 5, /*[NU]*/
1705  U_SB_OLETTER = 6, /*[LE]*/
1706  U_SB_SEP = 7, /*[SE]*/
1707  U_SB_SP = 8, /*[SP]*/
1708  U_SB_STERM = 9, /*[ST]*/
1709  U_SB_UPPER = 10, /*[UP]*/
1710  U_SB_CR = 11, /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
1711  U_SB_EXTEND = 12, /*[EX]*/
1712  U_SB_LF = 13, /*[LF]*/
1713  U_SB_SCONTINUE = 14, /*[SC]*/
1714  U_SB_COUNT = 15
1715 } USentenceBreak;
1716 
1723 typedef enum ULineBreak {
1724  /*
1725  * Note: ULineBreak constants are parsed by preparseucd.py.
1726  * It matches lines like
1727  * U_LB_<Unicode Line_Break value name>
1728  */
1729 
1730  U_LB_UNKNOWN = 0, /*[XX]*/
1731  U_LB_AMBIGUOUS = 1, /*[AI]*/
1732  U_LB_ALPHABETIC = 2, /*[AL]*/
1733  U_LB_BREAK_BOTH = 3, /*[B2]*/
1734  U_LB_BREAK_AFTER = 4, /*[BA]*/
1735  U_LB_BREAK_BEFORE = 5, /*[BB]*/
1736  U_LB_MANDATORY_BREAK = 6, /*[BK]*/
1737  U_LB_CONTINGENT_BREAK = 7, /*[CB]*/
1738  U_LB_CLOSE_PUNCTUATION = 8, /*[CL]*/
1739  U_LB_COMBINING_MARK = 9, /*[CM]*/
1740  U_LB_CARRIAGE_RETURN = 10, /*[CR]*/
1741  U_LB_EXCLAMATION = 11, /*[EX]*/
1742  U_LB_GLUE = 12, /*[GL]*/
1743  U_LB_HYPHEN = 13, /*[HY]*/
1744  U_LB_IDEOGRAPHIC = 14, /*[ID]*/
1746  U_LB_INSEPARABLE = 15, /*[IN]*/
1747  U_LB_INSEPERABLE = U_LB_INSEPARABLE,
1748  U_LB_INFIX_NUMERIC = 16, /*[IS]*/
1749  U_LB_LINE_FEED = 17, /*[LF]*/
1750  U_LB_NONSTARTER = 18, /*[NS]*/
1751  U_LB_NUMERIC = 19, /*[NU]*/
1752  U_LB_OPEN_PUNCTUATION = 20, /*[OP]*/
1753  U_LB_POSTFIX_NUMERIC = 21, /*[PO]*/
1754  U_LB_PREFIX_NUMERIC = 22, /*[PR]*/
1755  U_LB_QUOTATION = 23, /*[QU]*/
1756  U_LB_COMPLEX_CONTEXT = 24, /*[SA]*/
1757  U_LB_SURROGATE = 25, /*[SG]*/
1758  U_LB_SPACE = 26, /*[SP]*/
1759  U_LB_BREAK_SYMBOLS = 27, /*[SY]*/
1760  U_LB_ZWSPACE = 28, /*[ZW]*/
1761  U_LB_NEXT_LINE = 29, /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
1762  U_LB_WORD_JOINER = 30, /*[WJ]*/
1763  U_LB_H2 = 31, /*[H2]*/ /* from here on: new in Unicode 4.1/ICU 3.4 */
1764  U_LB_H3 = 32, /*[H3]*/
1765  U_LB_JL = 33, /*[JL]*/
1766  U_LB_JT = 34, /*[JT]*/
1767  U_LB_JV = 35, /*[JV]*/
1768  U_LB_CLOSE_PARENTHESIS = 36, /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
1769  U_LB_CONDITIONAL_JAPANESE_STARTER = 37,/*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
1770  U_LB_HEBREW_LETTER = 38, /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
1771  U_LB_COUNT = 39
1772 } ULineBreak;
1773 
1780 typedef enum UNumericType {
1781  /*
1782  * Note: UNumericType constants are parsed by preparseucd.py.
1783  * It matches lines like
1784  * U_NT_<Unicode Numeric_Type value name>
1785  */
1786 
1787  U_NT_NONE, /*[None]*/
1788  U_NT_DECIMAL, /*[de]*/
1789  U_NT_DIGIT, /*[di]*/
1790  U_NT_NUMERIC, /*[nu]*/
1791  U_NT_COUNT
1792 } UNumericType;
1793 
1800 typedef enum UHangulSyllableType {
1801  /*
1802  * Note: UHangulSyllableType constants are parsed by preparseucd.py.
1803  * It matches lines like
1804  * U_HST_<Unicode Hangul_Syllable_Type value name>
1805  */
1806 
1807  U_HST_NOT_APPLICABLE, /*[NA]*/
1808  U_HST_LEADING_JAMO, /*[L]*/
1809  U_HST_VOWEL_JAMO, /*[V]*/
1810  U_HST_TRAILING_JAMO, /*[T]*/
1811  U_HST_LV_SYLLABLE, /*[LV]*/
1812  U_HST_LVT_SYLLABLE, /*[LVT]*/
1813  U_HST_COUNT
1815 
1842 U_STABLE UBool U_EXPORT2
1844 
1857 U_STABLE UBool U_EXPORT2
1859 
1872 U_STABLE UBool U_EXPORT2
1874 
1887 U_STABLE UBool U_EXPORT2
1889 
1908 U_STABLE UBool U_EXPORT2
1910 
1948 U_STABLE int32_t U_EXPORT2
1950 
1969 U_STABLE int32_t U_EXPORT2
1971 
1998 U_STABLE int32_t U_EXPORT2
2000 
2023 U_STABLE double U_EXPORT2
2025 
2033 #define U_NO_NUMERIC_VALUE ((double)-123456789.)
2034 
2058 U_STABLE UBool U_EXPORT2
2059 u_islower(UChar32 c);
2060 
2085 U_STABLE UBool U_EXPORT2
2086 u_isupper(UChar32 c);
2087 
2102 U_STABLE UBool U_EXPORT2
2103 u_istitle(UChar32 c);
2104 
2123 U_STABLE UBool U_EXPORT2
2124 u_isdigit(UChar32 c);
2125 
2144 U_STABLE UBool U_EXPORT2
2145 u_isalpha(UChar32 c);
2146 
2165 U_STABLE UBool U_EXPORT2
2166 u_isalnum(UChar32 c);
2167 
2188 U_STABLE UBool U_EXPORT2
2189 u_isxdigit(UChar32 c);
2190 
2204 U_STABLE UBool U_EXPORT2
2205 u_ispunct(UChar32 c);
2206 
2223 U_STABLE UBool U_EXPORT2
2224 u_isgraph(UChar32 c);
2225 
2252 U_STABLE UBool U_EXPORT2
2253 u_isblank(UChar32 c);
2254 
2277 U_STABLE UBool U_EXPORT2
2278 u_isdefined(UChar32 c);
2279 
2298 U_STABLE UBool U_EXPORT2
2299 u_isspace(UChar32 c);
2300 
2319 U_STABLE UBool U_EXPORT2
2321 
2359 U_STABLE UBool U_EXPORT2
2361 
2383 U_STABLE UBool U_EXPORT2
2384 u_iscntrl(UChar32 c);
2385 
2398 U_STABLE UBool U_EXPORT2
2400 
2416 U_STABLE UBool U_EXPORT2
2417 u_isprint(UChar32 c);
2418 
2437 U_STABLE UBool U_EXPORT2
2438 u_isbase(UChar32 c);
2439 
2456 U_STABLE UCharDirection U_EXPORT2
2458 
2474 U_STABLE UBool U_EXPORT2
2476 
2496 U_STABLE UChar32 U_EXPORT2
2498 
2510 U_STABLE int8_t U_EXPORT2
2511 u_charType(UChar32 c);
2512 
2526 #define U_GET_GC_MASK(c) U_MASK(u_charType(c))
2527 
2545 typedef UBool U_CALLCONV
2546 UCharEnumTypeRange(const void *context, UChar32 start, UChar32 limit, UCharCategory type);
2547 
2567 U_STABLE void U_EXPORT2
2568 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
2569 
2570 #if !UCONFIG_NO_NORMALIZATION
2571 
2579 U_STABLE uint8_t U_EXPORT2
2581 
2582 #endif
2583 
2607 U_STABLE int32_t U_EXPORT2
2609 
2619 U_STABLE UBlockCode U_EXPORT2
2621 
2654 U_STABLE int32_t U_EXPORT2
2655 u_charName(UChar32 code, UCharNameChoice nameChoice,
2656  char *buffer, int32_t bufferLength,
2657  UErrorCode *pErrorCode);
2658 
2677 U_STABLE int32_t U_EXPORT2
2679  char *dest, int32_t destCapacity,
2680  UErrorCode *pErrorCode);
2681 
2702 U_STABLE UChar32 U_EXPORT2
2703 u_charFromName(UCharNameChoice nameChoice,
2704  const char *name,
2705  UErrorCode *pErrorCode);
2706 
2724 typedef UBool U_CALLCONV UEnumCharNamesFn(void *context,
2725  UChar32 code,
2726  UCharNameChoice nameChoice,
2727  const char *name,
2728  int32_t length);
2729 
2751 U_STABLE void U_EXPORT2
2752 u_enumCharNames(UChar32 start, UChar32 limit,
2753  UEnumCharNamesFn *fn,
2754  void *context,
2755  UCharNameChoice nameChoice,
2756  UErrorCode *pErrorCode);
2757 
2789 U_STABLE const char* U_EXPORT2
2790 u_getPropertyName(UProperty property,
2791  UPropertyNameChoice nameChoice);
2792 
2812 U_STABLE UProperty U_EXPORT2
2813 u_getPropertyEnum(const char* alias);
2814 
2862 U_STABLE const char* U_EXPORT2
2864  int32_t value,
2865  UPropertyNameChoice nameChoice);
2866 
2898 U_STABLE int32_t U_EXPORT2
2900  const char* alias);
2901 
2919 U_STABLE UBool U_EXPORT2
2920 u_isIDStart(UChar32 c);
2921 
2943 U_STABLE UBool U_EXPORT2
2944 u_isIDPart(UChar32 c);
2945 
2966 U_STABLE UBool U_EXPORT2
2968 
2985 U_STABLE UBool U_EXPORT2
2987 
3006 U_STABLE UBool U_EXPORT2
3008 
3031 U_STABLE UChar32 U_EXPORT2
3032 u_tolower(UChar32 c);
3033 
3056 U_STABLE UChar32 U_EXPORT2
3057 u_toupper(UChar32 c);
3058 
3081 U_STABLE UChar32 U_EXPORT2
3082 u_totitle(UChar32 c);
3083 
3085 #define U_FOLD_CASE_DEFAULT 0
3086 
3103 #define U_FOLD_CASE_EXCLUDE_SPECIAL_I 1
3104 
3127 U_STABLE UChar32 U_EXPORT2
3128 u_foldCase(UChar32 c, uint32_t options);
3129 
3168 U_STABLE int32_t U_EXPORT2
3169 u_digit(UChar32 ch, int8_t radix);
3170 
3199 U_STABLE UChar32 U_EXPORT2
3200 u_forDigit(int32_t digit, int8_t radix);
3201 
3216 U_STABLE void U_EXPORT2
3217 u_charAge(UChar32 c, UVersionInfo versionArray);
3218 
3230 U_STABLE void U_EXPORT2
3231 u_getUnicodeVersion(UVersionInfo versionArray);
3232 
3233 #if !UCONFIG_NO_NORMALIZATION
3234 
3255 U_STABLE int32_t U_EXPORT2
3256 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
3257 
3258 #endif
3259 
3260 
3262 
3263 #endif /*_UCHAR*/
3264 /*eof*/