ICU 51.2  51.2
uchar.h
Go to the documentation of this file.
1 /*
2 **********************************************************************
3 * Copyright (C) 1997-2013, 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.2"
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,
568 } UProperty;
569 
575 typedef enum UCharCategory
576 {
577  /*
578  * Note: UCharCategory constants and their API comments are parsed by preparseucd.py.
579  * It matches pairs of lines like
580  * / ** <Unicode 2-letter General_Category value> comment... * /
581  * U_<[A-Z_]+> = <integer>,
582  */
583 
648 } UCharCategory;
649 
664 #define U_GC_CN_MASK U_MASK(U_GENERAL_OTHER_TYPES)
665 
667 #define U_GC_LU_MASK U_MASK(U_UPPERCASE_LETTER)
668 
669 #define U_GC_LL_MASK U_MASK(U_LOWERCASE_LETTER)
670 
671 #define U_GC_LT_MASK U_MASK(U_TITLECASE_LETTER)
672 
673 #define U_GC_LM_MASK U_MASK(U_MODIFIER_LETTER)
674 
675 #define U_GC_LO_MASK U_MASK(U_OTHER_LETTER)
676 
678 #define U_GC_MN_MASK U_MASK(U_NON_SPACING_MARK)
679 
680 #define U_GC_ME_MASK U_MASK(U_ENCLOSING_MARK)
681 
682 #define U_GC_MC_MASK U_MASK(U_COMBINING_SPACING_MARK)
683 
685 #define U_GC_ND_MASK U_MASK(U_DECIMAL_DIGIT_NUMBER)
686 
687 #define U_GC_NL_MASK U_MASK(U_LETTER_NUMBER)
688 
689 #define U_GC_NO_MASK U_MASK(U_OTHER_NUMBER)
690 
692 #define U_GC_ZS_MASK U_MASK(U_SPACE_SEPARATOR)
693 
694 #define U_GC_ZL_MASK U_MASK(U_LINE_SEPARATOR)
695 
696 #define U_GC_ZP_MASK U_MASK(U_PARAGRAPH_SEPARATOR)
697 
699 #define U_GC_CC_MASK U_MASK(U_CONTROL_CHAR)
700 
701 #define U_GC_CF_MASK U_MASK(U_FORMAT_CHAR)
702 
703 #define U_GC_CO_MASK U_MASK(U_PRIVATE_USE_CHAR)
704 
705 #define U_GC_CS_MASK U_MASK(U_SURROGATE)
706 
708 #define U_GC_PD_MASK U_MASK(U_DASH_PUNCTUATION)
709 
710 #define U_GC_PS_MASK U_MASK(U_START_PUNCTUATION)
711 
712 #define U_GC_PE_MASK U_MASK(U_END_PUNCTUATION)
713 
714 #define U_GC_PC_MASK U_MASK(U_CONNECTOR_PUNCTUATION)
715 
716 #define U_GC_PO_MASK U_MASK(U_OTHER_PUNCTUATION)
717 
719 #define U_GC_SM_MASK U_MASK(U_MATH_SYMBOL)
720 
721 #define U_GC_SC_MASK U_MASK(U_CURRENCY_SYMBOL)
722 
723 #define U_GC_SK_MASK U_MASK(U_MODIFIER_SYMBOL)
724 
725 #define U_GC_SO_MASK U_MASK(U_OTHER_SYMBOL)
726 
728 #define U_GC_PI_MASK U_MASK(U_INITIAL_PUNCTUATION)
729 
730 #define U_GC_PF_MASK U_MASK(U_FINAL_PUNCTUATION)
731 
732 
734 #define U_GC_L_MASK \
735  (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
736 
738 #define U_GC_LC_MASK \
739  (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK)
740 
742 #define U_GC_M_MASK (U_GC_MN_MASK|U_GC_ME_MASK|U_GC_MC_MASK)
743 
745 #define U_GC_N_MASK (U_GC_ND_MASK|U_GC_NL_MASK|U_GC_NO_MASK)
746 
748 #define U_GC_Z_MASK (U_GC_ZS_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK)
749 
751 #define U_GC_C_MASK \
752  (U_GC_CN_MASK|U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CO_MASK|U_GC_CS_MASK)
753 
755 #define U_GC_P_MASK \
756  (U_GC_PD_MASK|U_GC_PS_MASK|U_GC_PE_MASK|U_GC_PC_MASK|U_GC_PO_MASK| \
757  U_GC_PI_MASK|U_GC_PF_MASK)
758 
760 #define U_GC_S_MASK (U_GC_SM_MASK|U_GC_SC_MASK|U_GC_SK_MASK|U_GC_SO_MASK)
761 
766 typedef enum UCharDirection {
767  /*
768  * Note: UCharDirection constants and their API comments are parsed by preparseucd.py.
769  * It matches pairs of lines like
770  * / ** <Unicode 1..3-letter Bidi_Class value> comment... * /
771  * U_<[A-Z_]+> = <integer>,
772  */
773 
815 
821  /*
822  * Note: UBlockCode constants are parsed by preparseucd.py.
823  * It matches lines like
824  * UBLOCK_<Unicode Block value name> = <integer>,
825  */
826 
828  UBLOCK_NO_BLOCK = 0, /*[none]*/ /* Special range indicating No_Block */
829 
831  UBLOCK_BASIC_LATIN = 1, /*[0000]*/
832 
835 
837  UBLOCK_LATIN_EXTENDED_A =3, /*[0100]*/
838 
840  UBLOCK_LATIN_EXTENDED_B =4, /*[0180]*/
841 
843  UBLOCK_IPA_EXTENSIONS =5, /*[0250]*/
844 
847 
850 
855  UBLOCK_GREEK =8, /*[0370]*/
856 
858  UBLOCK_CYRILLIC =9, /*[0400]*/
859 
861  UBLOCK_ARMENIAN =10, /*[0530]*/
862 
864  UBLOCK_HEBREW =11, /*[0590]*/
865 
867  UBLOCK_ARABIC =12, /*[0600]*/
868 
870  UBLOCK_SYRIAC =13, /*[0700]*/
871 
873  UBLOCK_THAANA =14, /*[0780]*/
874 
876  UBLOCK_DEVANAGARI =15, /*[0900]*/
877 
879  UBLOCK_BENGALI =16, /*[0980]*/
880 
882  UBLOCK_GURMUKHI =17, /*[0A00]*/
883 
885  UBLOCK_GUJARATI =18, /*[0A80]*/
886 
888  UBLOCK_ORIYA =19, /*[0B00]*/
889 
891  UBLOCK_TAMIL =20, /*[0B80]*/
892 
894  UBLOCK_TELUGU =21, /*[0C00]*/
895 
897  UBLOCK_KANNADA =22, /*[0C80]*/
898 
900  UBLOCK_MALAYALAM =23, /*[0D00]*/
901 
903  UBLOCK_SINHALA =24, /*[0D80]*/
904 
906  UBLOCK_THAI =25, /*[0E00]*/
907 
909  UBLOCK_LAO =26, /*[0E80]*/
910 
912  UBLOCK_TIBETAN =27, /*[0F00]*/
913 
915  UBLOCK_MYANMAR =28, /*[1000]*/
916 
918  UBLOCK_GEORGIAN =29, /*[10A0]*/
919 
921  UBLOCK_HANGUL_JAMO =30, /*[1100]*/
922 
924  UBLOCK_ETHIOPIC =31, /*[1200]*/
925 
927  UBLOCK_CHEROKEE =32, /*[13A0]*/
928 
931 
933  UBLOCK_OGHAM =34, /*[1680]*/
934 
936  UBLOCK_RUNIC =35, /*[16A0]*/
937 
939  UBLOCK_KHMER =36, /*[1780]*/
940 
942  UBLOCK_MONGOLIAN =37, /*[1800]*/
943 
946 
948  UBLOCK_GREEK_EXTENDED =39, /*[1F00]*/
949 
952 
955 
957  UBLOCK_CURRENCY_SYMBOLS =42, /*[20A0]*/
958 
964 
967 
969  UBLOCK_NUMBER_FORMS =45, /*[2150]*/
970 
972  UBLOCK_ARROWS =46, /*[2190]*/
973 
976 
979 
981  UBLOCK_CONTROL_PICTURES =49, /*[2400]*/
982 
985 
988 
990  UBLOCK_BOX_DRAWING =52, /*[2500]*/
991 
993  UBLOCK_BLOCK_ELEMENTS =53, /*[2580]*/
994 
996  UBLOCK_GEOMETRIC_SHAPES =54, /*[25A0]*/
997 
1000 
1002  UBLOCK_DINGBATS =56, /*[2700]*/
1003 
1005  UBLOCK_BRAILLE_PATTERNS =57, /*[2800]*/
1006 
1009 
1011  UBLOCK_KANGXI_RADICALS =59, /*[2F00]*/
1012 
1015 
1018 
1020  UBLOCK_HIRAGANA =62, /*[3040]*/
1021 
1023  UBLOCK_KATAKANA =63, /*[30A0]*/
1024 
1026  UBLOCK_BOPOMOFO =64, /*[3100]*/
1027 
1030 
1032  UBLOCK_KANBUN =66, /*[3190]*/
1033 
1036 
1039 
1042 
1045 
1048 
1050  UBLOCK_YI_SYLLABLES =72, /*[A000]*/
1051 
1053  UBLOCK_YI_RADICALS =73, /*[A490]*/
1054 
1056  UBLOCK_HANGUL_SYLLABLES =74, /*[AC00]*/
1057 
1059  UBLOCK_HIGH_SURROGATES =75, /*[D800]*/
1060 
1063 
1065  UBLOCK_LOW_SURROGATES =77, /*[DC00]*/
1066 
1076  UBLOCK_PRIVATE_USE_AREA =78, /*[E000]*/
1087 
1090 
1093 
1096 
1099 
1102 
1105 
1108 
1110  UBLOCK_SPECIALS =86, /*[FFF0]*/
1111 
1114 
1115  /* New blocks in Unicode 3.1 */
1116 
1118  UBLOCK_OLD_ITALIC = 88, /*[10300]*/
1120  UBLOCK_GOTHIC = 89, /*[10330]*/
1122  UBLOCK_DESERET = 90, /*[10400]*/
1126  UBLOCK_MUSICAL_SYMBOLS = 92, /*[1D100]*/
1134  UBLOCK_TAGS = 96, /*[E0000]*/
1135 
1136  /* New blocks in Unicode 3.2 */
1137 
1146  UBLOCK_TAGALOG = 98, /*[1700]*/
1148  UBLOCK_HANUNOO = 99, /*[1720]*/
1150  UBLOCK_BUHID = 100, /*[1740]*/
1152  UBLOCK_TAGBANWA = 101, /*[1760]*/
1166  UBLOCK_VARIATION_SELECTORS = 108, /*[FE00]*/
1171 
1172  /* New blocks in Unicode 4 */
1173 
1175  UBLOCK_LIMBU = 111, /*[1900]*/
1177  UBLOCK_TAI_LE = 112, /*[1950]*/
1179  UBLOCK_KHMER_SYMBOLS = 113, /*[19E0]*/
1181  UBLOCK_PHONETIC_EXTENSIONS = 114, /*[1D00]*/
1187  UBLOCK_LINEAR_B_SYLLABARY = 117, /*[10000]*/
1189  UBLOCK_LINEAR_B_IDEOGRAMS = 118, /*[10080]*/
1191  UBLOCK_AEGEAN_NUMBERS = 119, /*[10100]*/
1193  UBLOCK_UGARITIC = 120, /*[10380]*/
1195  UBLOCK_SHAVIAN = 121, /*[10450]*/
1197  UBLOCK_OSMANYA = 122, /*[10480]*/
1199  UBLOCK_CYPRIOT_SYLLABARY = 123, /*[10800]*/
1201  UBLOCK_TAI_XUAN_JING_SYMBOLS = 124, /*[1D300]*/
1204 
1205  /* New blocks in Unicode 4.1 */
1206 
1210  UBLOCK_ANCIENT_GREEK_NUMBERS = 127, /*[10140]*/
1212  UBLOCK_ARABIC_SUPPLEMENT = 128, /*[0750]*/
1214  UBLOCK_BUGINESE = 129, /*[1A00]*/
1216  UBLOCK_CJK_STROKES = 130, /*[31C0]*/
1220  UBLOCK_COPTIC = 132, /*[2C80]*/
1222  UBLOCK_ETHIOPIC_EXTENDED = 133, /*[2D80]*/
1224  UBLOCK_ETHIOPIC_SUPPLEMENT = 134, /*[1380]*/
1226  UBLOCK_GEORGIAN_SUPPLEMENT = 135, /*[2D00]*/
1228  UBLOCK_GLAGOLITIC = 136, /*[2C00]*/
1230  UBLOCK_KHAROSHTHI = 137, /*[10A00]*/
1234  UBLOCK_NEW_TAI_LUE = 139, /*[1980]*/
1236  UBLOCK_OLD_PERSIAN = 140, /*[103A0]*/
1242  UBLOCK_SYLOTI_NAGRI = 143, /*[A800]*/
1244  UBLOCK_TIFINAGH = 144, /*[2D30]*/
1246  UBLOCK_VERTICAL_FORMS = 145, /*[FE10]*/
1247 
1248  /* New blocks in Unicode 5.0 */
1249 
1251  UBLOCK_NKO = 146, /*[07C0]*/
1253  UBLOCK_BALINESE = 147, /*[1B00]*/
1255  UBLOCK_LATIN_EXTENDED_C = 148, /*[2C60]*/
1257  UBLOCK_LATIN_EXTENDED_D = 149, /*[A720]*/
1259  UBLOCK_PHAGS_PA = 150, /*[A840]*/
1261  UBLOCK_PHOENICIAN = 151, /*[10900]*/
1263  UBLOCK_CUNEIFORM = 152, /*[12000]*/
1267  UBLOCK_COUNTING_ROD_NUMERALS = 154, /*[1D360]*/
1268 
1269  /* New blocks in Unicode 5.1 */
1270 
1272  UBLOCK_SUNDANESE = 155, /*[1B80]*/
1274  UBLOCK_LEPCHA = 156, /*[1C00]*/
1276  UBLOCK_OL_CHIKI = 157, /*[1C50]*/
1278  UBLOCK_CYRILLIC_EXTENDED_A = 158, /*[2DE0]*/
1280  UBLOCK_VAI = 159, /*[A500]*/
1282  UBLOCK_CYRILLIC_EXTENDED_B = 160, /*[A640]*/
1284  UBLOCK_SAURASHTRA = 161, /*[A880]*/
1286  UBLOCK_KAYAH_LI = 162, /*[A900]*/
1288  UBLOCK_REJANG = 163, /*[A930]*/
1290  UBLOCK_CHAM = 164, /*[AA00]*/
1292  UBLOCK_ANCIENT_SYMBOLS = 165, /*[10190]*/
1294  UBLOCK_PHAISTOS_DISC = 166, /*[101D0]*/
1296  UBLOCK_LYCIAN = 167, /*[10280]*/
1298  UBLOCK_CARIAN = 168, /*[102A0]*/
1300  UBLOCK_LYDIAN = 169, /*[10920]*/
1302  UBLOCK_MAHJONG_TILES = 170, /*[1F000]*/
1304  UBLOCK_DOMINO_TILES = 171, /*[1F030]*/
1305 
1306  /* New blocks in Unicode 5.2 */
1307 
1309  UBLOCK_SAMARITAN = 172, /*[0800]*/
1313  UBLOCK_TAI_THAM = 174, /*[1A20]*/
1315  UBLOCK_VEDIC_EXTENSIONS = 175, /*[1CD0]*/
1317  UBLOCK_LISU = 176, /*[A4D0]*/
1319  UBLOCK_BAMUM = 177, /*[A6A0]*/
1323  UBLOCK_DEVANAGARI_EXTENDED = 179, /*[A8E0]*/
1327  UBLOCK_JAVANESE = 181, /*[A980]*/
1329  UBLOCK_MYANMAR_EXTENDED_A = 182, /*[AA60]*/
1331  UBLOCK_TAI_VIET = 183, /*[AA80]*/
1333  UBLOCK_MEETEI_MAYEK = 184, /*[ABC0]*/
1337  UBLOCK_IMPERIAL_ARAMAIC = 186, /*[10840]*/
1339  UBLOCK_OLD_SOUTH_ARABIAN = 187, /*[10A60]*/
1341  UBLOCK_AVESTAN = 188, /*[10B00]*/
1345  UBLOCK_INSCRIPTIONAL_PAHLAVI = 190, /*[10B60]*/
1347  UBLOCK_OLD_TURKIC = 191, /*[10C00]*/
1349  UBLOCK_RUMI_NUMERAL_SYMBOLS = 192, /*[10E60]*/
1351  UBLOCK_KAITHI = 193, /*[11080]*/
1353  UBLOCK_EGYPTIAN_HIEROGLYPHS = 194, /*[13000]*/
1360 
1361  /* New blocks in Unicode 6.0 */
1362 
1364  UBLOCK_MANDAIC = 198, /*[0840]*/
1366  UBLOCK_BATAK = 199, /*[1BC0]*/
1368  UBLOCK_ETHIOPIC_EXTENDED_A = 200, /*[AB00]*/
1370  UBLOCK_BRAHMI = 201, /*[11000]*/
1372  UBLOCK_BAMUM_SUPPLEMENT = 202, /*[16800]*/
1374  UBLOCK_KANA_SUPPLEMENT = 203, /*[1B000]*/
1376  UBLOCK_PLAYING_CARDS = 204, /*[1F0A0]*/
1380  UBLOCK_EMOTICONS = 206, /*[1F600]*/
1384  UBLOCK_ALCHEMICAL_SYMBOLS = 208, /*[1F700]*/
1387 
1388  /* New blocks in Unicode 6.1 */
1389 
1391  UBLOCK_ARABIC_EXTENDED_A = 210, /*[08A0]*/
1395  UBLOCK_CHAKMA = 212, /*[11100]*/
1399  UBLOCK_MEROITIC_CURSIVE = 214, /*[109A0]*/
1401  UBLOCK_MEROITIC_HIEROGLYPHS = 215, /*[10980]*/
1403  UBLOCK_MIAO = 216, /*[16F00]*/
1405  UBLOCK_SHARADA = 217, /*[11180]*/
1407  UBLOCK_SORA_SOMPENG = 218, /*[110D0]*/
1411  UBLOCK_TAKRI = 220, /*[11680]*/
1412 
1415 
1418 };
1419 
1421 typedef enum UBlockCode UBlockCode;
1422 
1430 typedef enum UEastAsianWidth {
1431  /*
1432  * Note: UEastAsianWidth constants are parsed by preparseucd.py.
1433  * It matches lines like
1434  * U_EA_<Unicode East_Asian_Width value name>
1435  */
1436 
1437  U_EA_NEUTRAL, /*[N]*/
1438  U_EA_AMBIGUOUS, /*[A]*/
1439  U_EA_HALFWIDTH, /*[H]*/
1440  U_EA_FULLWIDTH, /*[F]*/
1441  U_EA_NARROW, /*[Na]*/
1442  U_EA_WIDE, /*[W]*/
1443  U_EA_COUNT
1444 } UEastAsianWidth;
1445 
1457 typedef enum UCharNameChoice {
1460 #ifndef U_HIDE_DEPRECATED_API
1461 
1467 #endif /* U_HIDE_DEPRECATED_API */
1468 
1474 } UCharNameChoice;
1475 
1489 typedef enum UPropertyNameChoice {
1490  U_SHORT_PROPERTY_NAME,
1491  U_LONG_PROPERTY_NAME,
1492  U_PROPERTY_NAME_CHOICE_COUNT
1494 
1501 typedef enum UDecompositionType {
1502  /*
1503  * Note: UDecompositionType constants are parsed by preparseucd.py.
1504  * It matches lines like
1505  * U_DT_<Unicode Decomposition_Type value name>
1506  */
1507 
1508  U_DT_NONE, /*[none]*/
1509  U_DT_CANONICAL, /*[can]*/
1510  U_DT_COMPAT, /*[com]*/
1511  U_DT_CIRCLE, /*[enc]*/
1512  U_DT_FINAL, /*[fin]*/
1513  U_DT_FONT, /*[font]*/
1514  U_DT_FRACTION, /*[fra]*/
1515  U_DT_INITIAL, /*[init]*/
1516  U_DT_ISOLATED, /*[iso]*/
1517  U_DT_MEDIAL, /*[med]*/
1518  U_DT_NARROW, /*[nar]*/
1519  U_DT_NOBREAK, /*[nb]*/
1520  U_DT_SMALL, /*[sml]*/
1521  U_DT_SQUARE, /*[sqr]*/
1522  U_DT_SUB, /*[sub]*/
1523  U_DT_SUPER, /*[sup]*/
1524  U_DT_VERTICAL, /*[vert]*/
1525  U_DT_WIDE, /*[wide]*/
1526  U_DT_COUNT /* 18 */
1528 
1535 typedef enum UJoiningType {
1536  /*
1537  * Note: UJoiningType constants are parsed by preparseucd.py.
1538  * It matches lines like
1539  * U_JT_<Unicode Joining_Type value name>
1540  */
1541 
1542  U_JT_NON_JOINING, /*[U]*/
1543  U_JT_JOIN_CAUSING, /*[C]*/
1544  U_JT_DUAL_JOINING, /*[D]*/
1545  U_JT_LEFT_JOINING, /*[L]*/
1546  U_JT_RIGHT_JOINING, /*[R]*/
1547  U_JT_TRANSPARENT, /*[T]*/
1548  U_JT_COUNT /* 6 */
1549 } UJoiningType;
1550 
1557 typedef enum UJoiningGroup {
1558  /*
1559  * Note: UJoiningGroup constants are parsed by preparseucd.py.
1560  * It matches lines like
1561  * U_JG_<Unicode Joining_Group value name>
1562  */
1563 
1564  U_JG_NO_JOINING_GROUP,
1565  U_JG_AIN,
1566  U_JG_ALAPH,
1567  U_JG_ALEF,
1568  U_JG_BEH,
1569  U_JG_BETH,
1570  U_JG_DAL,
1571  U_JG_DALATH_RISH,
1572  U_JG_E,
1573  U_JG_FEH,
1574  U_JG_FINAL_SEMKATH,
1575  U_JG_GAF,
1576  U_JG_GAMAL,
1577  U_JG_HAH,
1579  U_JG_HAMZA_ON_HEH_GOAL=U_JG_TEH_MARBUTA_GOAL,
1580  U_JG_HE,
1581  U_JG_HEH,
1582  U_JG_HEH_GOAL,
1583  U_JG_HETH,
1584  U_JG_KAF,
1585  U_JG_KAPH,
1586  U_JG_KNOTTED_HEH,
1587  U_JG_LAM,
1588  U_JG_LAMADH,
1589  U_JG_MEEM,
1590  U_JG_MIM,
1591  U_JG_NOON,
1592  U_JG_NUN,
1593  U_JG_PE,
1594  U_JG_QAF,
1595  U_JG_QAPH,
1596  U_JG_REH,
1597  U_JG_REVERSED_PE,
1598  U_JG_SAD,
1599  U_JG_SADHE,
1600  U_JG_SEEN,
1601  U_JG_SEMKATH,
1602  U_JG_SHIN,
1603  U_JG_SWASH_KAF,
1604  U_JG_SYRIAC_WAW,
1605  U_JG_TAH,
1606  U_JG_TAW,
1607  U_JG_TEH_MARBUTA,
1608  U_JG_TETH,
1609  U_JG_WAW,
1610  U_JG_YEH,
1611  U_JG_YEH_BARREE,
1612  U_JG_YEH_WITH_TAIL,
1613  U_JG_YUDH,
1614  U_JG_YUDH_HE,
1615  U_JG_ZAIN,
1623  U_JG_COUNT
1624 } UJoiningGroup;
1625 
1633  /*
1634  * Note: UGraphemeClusterBreak constants are parsed by preparseucd.py.
1635  * It matches lines like
1636  * U_GCB_<Unicode Grapheme_Cluster_Break value name>
1637  */
1638 
1639  U_GCB_OTHER = 0, /*[XX]*/
1640  U_GCB_CONTROL = 1, /*[CN]*/
1641  U_GCB_CR = 2, /*[CR]*/
1642  U_GCB_EXTEND = 3, /*[EX]*/
1643  U_GCB_L = 4, /*[L]*/
1644  U_GCB_LF = 5, /*[LF]*/
1645  U_GCB_LV = 6, /*[LV]*/
1646  U_GCB_LVT = 7, /*[LVT]*/
1647  U_GCB_T = 8, /*[T]*/
1648  U_GCB_V = 9, /*[V]*/
1649  U_GCB_SPACING_MARK = 10, /*[SM]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
1650  U_GCB_PREPEND = 11, /*[PP]*/
1651  U_GCB_REGIONAL_INDICATOR = 12, /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
1652  U_GCB_COUNT = 13
1654 
1662 typedef enum UWordBreakValues {
1663  /*
1664  * Note: UWordBreakValues constants are parsed by preparseucd.py.
1665  * It matches lines like
1666  * U_WB_<Unicode Word_Break value name>
1667  */
1668 
1669  U_WB_OTHER = 0, /*[XX]*/
1670  U_WB_ALETTER = 1, /*[LE]*/
1671  U_WB_FORMAT = 2, /*[FO]*/
1672  U_WB_KATAKANA = 3, /*[KA]*/
1673  U_WB_MIDLETTER = 4, /*[ML]*/
1674  U_WB_MIDNUM = 5, /*[MN]*/
1675  U_WB_NUMERIC = 6, /*[NU]*/
1676  U_WB_EXTENDNUMLET = 7, /*[EX]*/
1677  U_WB_CR = 8, /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
1678  U_WB_EXTEND = 9, /*[Extend]*/
1679  U_WB_LF = 10, /*[LF]*/
1680  U_WB_MIDNUMLET =11, /*[MB]*/
1681  U_WB_NEWLINE =12, /*[NL]*/
1682  U_WB_REGIONAL_INDICATOR = 13, /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
1683  U_WB_COUNT = 14
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_REGIONAL_INDICATOR = 39,/*[RI]*/ /* new in Unicode 6.2/ICU 50 */
1772  U_LB_COUNT = 40
1773 } ULineBreak;
1774 
1781 typedef enum UNumericType {
1782  /*
1783  * Note: UNumericType constants are parsed by preparseucd.py.
1784  * It matches lines like
1785  * U_NT_<Unicode Numeric_Type value name>
1786  */
1787 
1788  U_NT_NONE, /*[None]*/
1789  U_NT_DECIMAL, /*[de]*/
1790  U_NT_DIGIT, /*[di]*/
1791  U_NT_NUMERIC, /*[nu]*/
1792  U_NT_COUNT
1793 } UNumericType;
1794 
1801 typedef enum UHangulSyllableType {
1802  /*
1803  * Note: UHangulSyllableType constants are parsed by preparseucd.py.
1804  * It matches lines like
1805  * U_HST_<Unicode Hangul_Syllable_Type value name>
1806  */
1807 
1808  U_HST_NOT_APPLICABLE, /*[NA]*/
1809  U_HST_LEADING_JAMO, /*[L]*/
1810  U_HST_VOWEL_JAMO, /*[V]*/
1811  U_HST_TRAILING_JAMO, /*[T]*/
1812  U_HST_LV_SYLLABLE, /*[LV]*/
1813  U_HST_LVT_SYLLABLE, /*[LVT]*/
1814  U_HST_COUNT
1816 
1843 U_STABLE UBool U_EXPORT2
1845 
1858 U_STABLE UBool U_EXPORT2
1860 
1873 U_STABLE UBool U_EXPORT2
1875 
1888 U_STABLE UBool U_EXPORT2
1890 
1909 U_STABLE UBool U_EXPORT2
1911 
1949 U_STABLE int32_t U_EXPORT2
1951 
1970 U_STABLE int32_t U_EXPORT2
1972 
1999 U_STABLE int32_t U_EXPORT2
2001 
2024 U_STABLE double U_EXPORT2
2026 
2034 #define U_NO_NUMERIC_VALUE ((double)-123456789.)
2035 
2059 U_STABLE UBool U_EXPORT2
2060 u_islower(UChar32 c);
2061 
2086 U_STABLE UBool U_EXPORT2
2087 u_isupper(UChar32 c);
2088 
2103 U_STABLE UBool U_EXPORT2
2104 u_istitle(UChar32 c);
2105 
2124 U_STABLE UBool U_EXPORT2
2125 u_isdigit(UChar32 c);
2126 
2145 U_STABLE UBool U_EXPORT2
2146 u_isalpha(UChar32 c);
2147 
2166 U_STABLE UBool U_EXPORT2
2167 u_isalnum(UChar32 c);
2168 
2189 U_STABLE UBool U_EXPORT2
2190 u_isxdigit(UChar32 c);
2191 
2205 U_STABLE UBool U_EXPORT2
2206 u_ispunct(UChar32 c);
2207 
2224 U_STABLE UBool U_EXPORT2
2225 u_isgraph(UChar32 c);
2226 
2253 U_STABLE UBool U_EXPORT2
2254 u_isblank(UChar32 c);
2255 
2278 U_STABLE UBool U_EXPORT2
2279 u_isdefined(UChar32 c);
2280 
2299 U_STABLE UBool U_EXPORT2
2300 u_isspace(UChar32 c);
2301 
2320 U_STABLE UBool U_EXPORT2
2322 
2360 U_STABLE UBool U_EXPORT2
2362 
2384 U_STABLE UBool U_EXPORT2
2385 u_iscntrl(UChar32 c);
2386 
2399 U_STABLE UBool U_EXPORT2
2401 
2417 U_STABLE UBool U_EXPORT2
2418 u_isprint(UChar32 c);
2419 
2438 U_STABLE UBool U_EXPORT2
2439 u_isbase(UChar32 c);
2440 
2457 U_STABLE UCharDirection U_EXPORT2
2459 
2475 U_STABLE UBool U_EXPORT2
2477 
2497 U_STABLE UChar32 U_EXPORT2
2499 
2511 U_STABLE int8_t U_EXPORT2
2512 u_charType(UChar32 c);
2513 
2527 #define U_GET_GC_MASK(c) U_MASK(u_charType(c))
2528 
2546 typedef UBool U_CALLCONV
2547 UCharEnumTypeRange(const void *context, UChar32 start, UChar32 limit, UCharCategory type);
2548 
2568 U_STABLE void U_EXPORT2
2569 u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
2570 
2571 #if !UCONFIG_NO_NORMALIZATION
2572 
2580 U_STABLE uint8_t U_EXPORT2
2582 
2583 #endif
2584 
2608 U_STABLE int32_t U_EXPORT2
2610 
2620 U_STABLE UBlockCode U_EXPORT2
2622 
2655 U_STABLE int32_t U_EXPORT2
2656 u_charName(UChar32 code, UCharNameChoice nameChoice,
2657  char *buffer, int32_t bufferLength,
2658  UErrorCode *pErrorCode);
2659 
2660 #ifndef U_HIDE_DEPRECATED_API
2661 
2679 U_STABLE int32_t U_EXPORT2
2681  char *dest, int32_t destCapacity,
2682  UErrorCode *pErrorCode);
2683 #endif /* U_HIDE_DEPRECATED_API */
2684 
2705 U_STABLE UChar32 U_EXPORT2
2706 u_charFromName(UCharNameChoice nameChoice,
2707  const char *name,
2708  UErrorCode *pErrorCode);
2709 
2727 typedef UBool U_CALLCONV UEnumCharNamesFn(void *context,
2728  UChar32 code,
2729  UCharNameChoice nameChoice,
2730  const char *name,
2731  int32_t length);
2732 
2754 U_STABLE void U_EXPORT2
2755 u_enumCharNames(UChar32 start, UChar32 limit,
2756  UEnumCharNamesFn *fn,
2757  void *context,
2758  UCharNameChoice nameChoice,
2759  UErrorCode *pErrorCode);
2760 
2792 U_STABLE const char* U_EXPORT2
2793 u_getPropertyName(UProperty property,
2794  UPropertyNameChoice nameChoice);
2795 
2815 U_STABLE UProperty U_EXPORT2
2816 u_getPropertyEnum(const char* alias);
2817 
2865 U_STABLE const char* U_EXPORT2
2867  int32_t value,
2868  UPropertyNameChoice nameChoice);
2869 
2901 U_STABLE int32_t U_EXPORT2
2903  const char* alias);
2904 
2922 U_STABLE UBool U_EXPORT2
2923 u_isIDStart(UChar32 c);
2924 
2946 U_STABLE UBool U_EXPORT2
2947 u_isIDPart(UChar32 c);
2948 
2969 U_STABLE UBool U_EXPORT2
2971 
2988 U_STABLE UBool U_EXPORT2
2990 
3009 U_STABLE UBool U_EXPORT2
3011 
3034 U_STABLE UChar32 U_EXPORT2
3035 u_tolower(UChar32 c);
3036 
3059 U_STABLE UChar32 U_EXPORT2
3060 u_toupper(UChar32 c);
3061 
3084 U_STABLE UChar32 U_EXPORT2
3085 u_totitle(UChar32 c);
3086 
3088 #define U_FOLD_CASE_DEFAULT 0
3089 
3106 #define U_FOLD_CASE_EXCLUDE_SPECIAL_I 1
3107 
3130 U_STABLE UChar32 U_EXPORT2
3131 u_foldCase(UChar32 c, uint32_t options);
3132 
3171 U_STABLE int32_t U_EXPORT2
3172 u_digit(UChar32 ch, int8_t radix);
3173 
3202 U_STABLE UChar32 U_EXPORT2
3203 u_forDigit(int32_t digit, int8_t radix);
3204 
3219 U_STABLE void U_EXPORT2
3220 u_charAge(UChar32 c, UVersionInfo versionArray);
3221 
3233 U_STABLE void U_EXPORT2
3234 u_getUnicodeVersion(UVersionInfo versionArray);
3235 
3236 #if !UCONFIG_NO_NORMALIZATION
3237 
3258 U_STABLE int32_t U_EXPORT2
3259 u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
3260 
3261 #endif
3262 
3263 
3265 
3266 #endif /*_UCHAR*/
3267 /*eof*/