File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / xmlunicode.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:29 2014 UTC (10 years ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    1: /*
    2:  * xmlunicode.c: this module implements the Unicode character APIs
    3:  *
    4:  * This file is automatically generated from the
    5:  * UCS description files of the Unicode Character Database
    6:  * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html
    7:  * using the genUnicode.py Python script.
    8:  *
    9:  * Generation date: Mon Mar 27 11:09:52 2006
   10:  * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt
   11:  * Daniel Veillard <veillard@redhat.com>
   12:  */
   13: 
   14: #define IN_LIBXML
   15: #include "libxml.h"
   16: 
   17: #ifdef LIBXML_UNICODE_ENABLED
   18: 
   19: #include <string.h>
   20: #include <libxml/xmlversion.h>
   21: #include <libxml/xmlunicode.h>
   22: #include <libxml/chvalid.h>
   23: 
   24: typedef int (xmlIntFunc)(int);	/* just to keep one's mind untwisted */
   25: 
   26: typedef struct {
   27:     const char *rangename;
   28:     xmlIntFunc *func;
   29: } xmlUnicodeRange;
   30: 
   31: typedef struct {
   32:     xmlUnicodeRange *table;
   33:     int		    numentries;
   34: } xmlUnicodeNameTable;
   35: 
   36: 
   37: static xmlIntFunc *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname);
   38: 
   39: static xmlUnicodeRange xmlUnicodeBlocks[] = {
   40:   {"AegeanNumbers", xmlUCSIsAegeanNumbers},
   41:   {"AlphabeticPresentationForms", xmlUCSIsAlphabeticPresentationForms},
   42:   {"Arabic", xmlUCSIsArabic},
   43:   {"ArabicPresentationForms-A", xmlUCSIsArabicPresentationFormsA},
   44:   {"ArabicPresentationForms-B", xmlUCSIsArabicPresentationFormsB},
   45:   {"Armenian", xmlUCSIsArmenian},
   46:   {"Arrows", xmlUCSIsArrows},
   47:   {"BasicLatin", xmlUCSIsBasicLatin},
   48:   {"Bengali", xmlUCSIsBengali},
   49:   {"BlockElements", xmlUCSIsBlockElements},
   50:   {"Bopomofo", xmlUCSIsBopomofo},
   51:   {"BopomofoExtended", xmlUCSIsBopomofoExtended},
   52:   {"BoxDrawing", xmlUCSIsBoxDrawing},
   53:   {"BraillePatterns", xmlUCSIsBraillePatterns},
   54:   {"Buhid", xmlUCSIsBuhid},
   55:   {"ByzantineMusicalSymbols", xmlUCSIsByzantineMusicalSymbols},
   56:   {"CJKCompatibility", xmlUCSIsCJKCompatibility},
   57:   {"CJKCompatibilityForms", xmlUCSIsCJKCompatibilityForms},
   58:   {"CJKCompatibilityIdeographs", xmlUCSIsCJKCompatibilityIdeographs},
   59:   {"CJKCompatibilityIdeographsSupplement", xmlUCSIsCJKCompatibilityIdeographsSupplement},
   60:   {"CJKRadicalsSupplement", xmlUCSIsCJKRadicalsSupplement},
   61:   {"CJKSymbolsandPunctuation", xmlUCSIsCJKSymbolsandPunctuation},
   62:   {"CJKUnifiedIdeographs", xmlUCSIsCJKUnifiedIdeographs},
   63:   {"CJKUnifiedIdeographsExtensionA", xmlUCSIsCJKUnifiedIdeographsExtensionA},
   64:   {"CJKUnifiedIdeographsExtensionB", xmlUCSIsCJKUnifiedIdeographsExtensionB},
   65:   {"Cherokee", xmlUCSIsCherokee},
   66:   {"CombiningDiacriticalMarks", xmlUCSIsCombiningDiacriticalMarks},
   67:   {"CombiningDiacriticalMarksforSymbols", xmlUCSIsCombiningDiacriticalMarksforSymbols},
   68:   {"CombiningHalfMarks", xmlUCSIsCombiningHalfMarks},
   69:   {"CombiningMarksforSymbols", xmlUCSIsCombiningMarksforSymbols},
   70:   {"ControlPictures", xmlUCSIsControlPictures},
   71:   {"CurrencySymbols", xmlUCSIsCurrencySymbols},
   72:   {"CypriotSyllabary", xmlUCSIsCypriotSyllabary},
   73:   {"Cyrillic", xmlUCSIsCyrillic},
   74:   {"CyrillicSupplement", xmlUCSIsCyrillicSupplement},
   75:   {"Deseret", xmlUCSIsDeseret},
   76:   {"Devanagari", xmlUCSIsDevanagari},
   77:   {"Dingbats", xmlUCSIsDingbats},
   78:   {"EnclosedAlphanumerics", xmlUCSIsEnclosedAlphanumerics},
   79:   {"EnclosedCJKLettersandMonths", xmlUCSIsEnclosedCJKLettersandMonths},
   80:   {"Ethiopic", xmlUCSIsEthiopic},
   81:   {"GeneralPunctuation", xmlUCSIsGeneralPunctuation},
   82:   {"GeometricShapes", xmlUCSIsGeometricShapes},
   83:   {"Georgian", xmlUCSIsGeorgian},
   84:   {"Gothic", xmlUCSIsGothic},
   85:   {"Greek", xmlUCSIsGreek},
   86:   {"GreekExtended", xmlUCSIsGreekExtended},
   87:   {"GreekandCoptic", xmlUCSIsGreekandCoptic},
   88:   {"Gujarati", xmlUCSIsGujarati},
   89:   {"Gurmukhi", xmlUCSIsGurmukhi},
   90:   {"HalfwidthandFullwidthForms", xmlUCSIsHalfwidthandFullwidthForms},
   91:   {"HangulCompatibilityJamo", xmlUCSIsHangulCompatibilityJamo},
   92:   {"HangulJamo", xmlUCSIsHangulJamo},
   93:   {"HangulSyllables", xmlUCSIsHangulSyllables},
   94:   {"Hanunoo", xmlUCSIsHanunoo},
   95:   {"Hebrew", xmlUCSIsHebrew},
   96:   {"HighPrivateUseSurrogates", xmlUCSIsHighPrivateUseSurrogates},
   97:   {"HighSurrogates", xmlUCSIsHighSurrogates},
   98:   {"Hiragana", xmlUCSIsHiragana},
   99:   {"IPAExtensions", xmlUCSIsIPAExtensions},
  100:   {"IdeographicDescriptionCharacters", xmlUCSIsIdeographicDescriptionCharacters},
  101:   {"Kanbun", xmlUCSIsKanbun},
  102:   {"KangxiRadicals", xmlUCSIsKangxiRadicals},
  103:   {"Kannada", xmlUCSIsKannada},
  104:   {"Katakana", xmlUCSIsKatakana},
  105:   {"KatakanaPhoneticExtensions", xmlUCSIsKatakanaPhoneticExtensions},
  106:   {"Khmer", xmlUCSIsKhmer},
  107:   {"KhmerSymbols", xmlUCSIsKhmerSymbols},
  108:   {"Lao", xmlUCSIsLao},
  109:   {"Latin-1Supplement", xmlUCSIsLatin1Supplement},
  110:   {"LatinExtended-A", xmlUCSIsLatinExtendedA},
  111:   {"LatinExtended-B", xmlUCSIsLatinExtendedB},
  112:   {"LatinExtendedAdditional", xmlUCSIsLatinExtendedAdditional},
  113:   {"LetterlikeSymbols", xmlUCSIsLetterlikeSymbols},
  114:   {"Limbu", xmlUCSIsLimbu},
  115:   {"LinearBIdeograms", xmlUCSIsLinearBIdeograms},
  116:   {"LinearBSyllabary", xmlUCSIsLinearBSyllabary},
  117:   {"LowSurrogates", xmlUCSIsLowSurrogates},
  118:   {"Malayalam", xmlUCSIsMalayalam},
  119:   {"MathematicalAlphanumericSymbols", xmlUCSIsMathematicalAlphanumericSymbols},
  120:   {"MathematicalOperators", xmlUCSIsMathematicalOperators},
  121:   {"MiscellaneousMathematicalSymbols-A", xmlUCSIsMiscellaneousMathematicalSymbolsA},
  122:   {"MiscellaneousMathematicalSymbols-B", xmlUCSIsMiscellaneousMathematicalSymbolsB},
  123:   {"MiscellaneousSymbols", xmlUCSIsMiscellaneousSymbols},
  124:   {"MiscellaneousSymbolsandArrows", xmlUCSIsMiscellaneousSymbolsandArrows},
  125:   {"MiscellaneousTechnical", xmlUCSIsMiscellaneousTechnical},
  126:   {"Mongolian", xmlUCSIsMongolian},
  127:   {"MusicalSymbols", xmlUCSIsMusicalSymbols},
  128:   {"Myanmar", xmlUCSIsMyanmar},
  129:   {"NumberForms", xmlUCSIsNumberForms},
  130:   {"Ogham", xmlUCSIsOgham},
  131:   {"OldItalic", xmlUCSIsOldItalic},
  132:   {"OpticalCharacterRecognition", xmlUCSIsOpticalCharacterRecognition},
  133:   {"Oriya", xmlUCSIsOriya},
  134:   {"Osmanya", xmlUCSIsOsmanya},
  135:   {"PhoneticExtensions", xmlUCSIsPhoneticExtensions},
  136:   {"PrivateUse", xmlUCSIsPrivateUse},
  137:   {"PrivateUseArea", xmlUCSIsPrivateUseArea},
  138:   {"Runic", xmlUCSIsRunic},
  139:   {"Shavian", xmlUCSIsShavian},
  140:   {"Sinhala", xmlUCSIsSinhala},
  141:   {"SmallFormVariants", xmlUCSIsSmallFormVariants},
  142:   {"SpacingModifierLetters", xmlUCSIsSpacingModifierLetters},
  143:   {"Specials", xmlUCSIsSpecials},
  144:   {"SuperscriptsandSubscripts", xmlUCSIsSuperscriptsandSubscripts},
  145:   {"SupplementalArrows-A", xmlUCSIsSupplementalArrowsA},
  146:   {"SupplementalArrows-B", xmlUCSIsSupplementalArrowsB},
  147:   {"SupplementalMathematicalOperators", xmlUCSIsSupplementalMathematicalOperators},
  148:   {"SupplementaryPrivateUseArea-A", xmlUCSIsSupplementaryPrivateUseAreaA},
  149:   {"SupplementaryPrivateUseArea-B", xmlUCSIsSupplementaryPrivateUseAreaB},
  150:   {"Syriac", xmlUCSIsSyriac},
  151:   {"Tagalog", xmlUCSIsTagalog},
  152:   {"Tagbanwa", xmlUCSIsTagbanwa},
  153:   {"Tags", xmlUCSIsTags},
  154:   {"TaiLe", xmlUCSIsTaiLe},
  155:   {"TaiXuanJingSymbols", xmlUCSIsTaiXuanJingSymbols},
  156:   {"Tamil", xmlUCSIsTamil},
  157:   {"Telugu", xmlUCSIsTelugu},
  158:   {"Thaana", xmlUCSIsThaana},
  159:   {"Thai", xmlUCSIsThai},
  160:   {"Tibetan", xmlUCSIsTibetan},
  161:   {"Ugaritic", xmlUCSIsUgaritic},
  162:   {"UnifiedCanadianAboriginalSyllabics", xmlUCSIsUnifiedCanadianAboriginalSyllabics},
  163:   {"VariationSelectors", xmlUCSIsVariationSelectors},
  164:   {"VariationSelectorsSupplement", xmlUCSIsVariationSelectorsSupplement},
  165:   {"YiRadicals", xmlUCSIsYiRadicals},
  166:   {"YiSyllables", xmlUCSIsYiSyllables},
  167:   {"YijingHexagramSymbols", xmlUCSIsYijingHexagramSymbols}};
  168: 
  169: static xmlUnicodeRange xmlUnicodeCats[] = {
  170:   {"C", xmlUCSIsCatC},
  171:   {"Cc", xmlUCSIsCatCc},
  172:   {"Cf", xmlUCSIsCatCf},
  173:   {"Co", xmlUCSIsCatCo},
  174:   {"Cs", xmlUCSIsCatCs},
  175:   {"L", xmlUCSIsCatL},
  176:   {"Ll", xmlUCSIsCatLl},
  177:   {"Lm", xmlUCSIsCatLm},
  178:   {"Lo", xmlUCSIsCatLo},
  179:   {"Lt", xmlUCSIsCatLt},
  180:   {"Lu", xmlUCSIsCatLu},
  181:   {"M", xmlUCSIsCatM},
  182:   {"Mc", xmlUCSIsCatMc},
  183:   {"Me", xmlUCSIsCatMe},
  184:   {"Mn", xmlUCSIsCatMn},
  185:   {"N", xmlUCSIsCatN},
  186:   {"Nd", xmlUCSIsCatNd},
  187:   {"Nl", xmlUCSIsCatNl},
  188:   {"No", xmlUCSIsCatNo},
  189:   {"P", xmlUCSIsCatP},
  190:   {"Pc", xmlUCSIsCatPc},
  191:   {"Pd", xmlUCSIsCatPd},
  192:   {"Pe", xmlUCSIsCatPe},
  193:   {"Pf", xmlUCSIsCatPf},
  194:   {"Pi", xmlUCSIsCatPi},
  195:   {"Po", xmlUCSIsCatPo},
  196:   {"Ps", xmlUCSIsCatPs},
  197:   {"S", xmlUCSIsCatS},
  198:   {"Sc", xmlUCSIsCatSc},
  199:   {"Sk", xmlUCSIsCatSk},
  200:   {"Sm", xmlUCSIsCatSm},
  201:   {"So", xmlUCSIsCatSo},
  202:   {"Z", xmlUCSIsCatZ},
  203:   {"Zl", xmlUCSIsCatZl},
  204:   {"Zp", xmlUCSIsCatZp},
  205:   {"Zs", xmlUCSIsCatZs}};
  206: 
  207: static const xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f},
  208:     {0xad, 0xad}, {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f},
  209:     {0x17b4, 0x17b5}, {0x200b, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063},
  210:     {0x206a, 0x206f}, {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00},
  211:     {0xdfff, 0xe000}, {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} };
  212: static const xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
  213:     {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
  214:     {0x100000, 0x100000}, {0x10fffd, 0x10fffd} };
  215: static xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL};
  216: 
  217: static const xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
  218:     {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200b, 0x200f},
  219:     {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
  220:     {0xfff9, 0xfffb} };
  221: static const xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
  222:     {0xe0020, 0xe007f} };
  223: static xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL};
  224: 
  225: static const xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a},
  226:     {0xaa, 0xaa}, {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6},
  227:     {0xf8, 0x236}, {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4},
  228:     {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a},
  229:     {0x38c, 0x38c}, {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5},
  230:     {0x3f7, 0x3fb}, {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5},
  231:     {0x4f8, 0x4f9}, {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559},
  232:     {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
  233:     {0x640, 0x64a}, {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5},
  234:     {0x6e5, 0x6e6}, {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff},
  235:     {0x710, 0x710}, {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5},
  236:     {0x7b1, 0x7b1}, {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950},
  237:     {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8},
  238:     {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd},
  239:     {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
  240:     {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
  241:     {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
  242:     {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8},
  243:     {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd},
  244:     {0xad0, 0xad0}, {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
  245:     {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39},
  246:     {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71},
  247:     {0xb83, 0xb83}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95},
  248:     {0xb99, 0xb9a}, {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4},
  249:     {0xba8, 0xbaa}, {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c},
  250:     {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39},
  251:     {0xc60, 0xc61}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8},
  252:     {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde},
  253:     {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28},
  254:     {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1},
  255:     {0xdb3, 0xdbb}, {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30},
  256:     {0xe32, 0xe33}, {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84},
  257:     {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97},
  258:     {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7},
  259:     {0xeaa, 0xeab}, {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd},
  260:     {0xec0, 0xec4}, {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00},
  261:     {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021},
  262:     {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5},
  263:     {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
  264:     {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
  265:     {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
  266:     {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
  267:     {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
  268:     {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
  269:     {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
  270:     {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
  271:     {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
  272:     {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
  273:     {0x1780, 0x17b3}, {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877},
  274:     {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
  275:     {0x1d00, 0x1d6b}, {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15},
  276:     {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57},
  277:     {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d},
  278:     {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4},
  279:     {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec},
  280:     {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f},
  281:     {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115},
  282:     {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128},
  283:     {0x212a, 0x212d}, {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f},
  284:     {0x2145, 0x2149}, {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c},
  285:     {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff},
  286:     {0x3105, 0x312c}, {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff},
  287:     {0x3400, 0x3400}, {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5},
  288:     {0xa000, 0xa48c}, {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d},
  289:     {0xfa30, 0xfa6a}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d},
  290:     {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e},
  291:     {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d},
  292:     {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74},
  293:     {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe},
  294:     {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} };
  295: static const xmlChLRange xmlLL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
  296:     {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
  297:     {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
  298:     {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10400, 0x1049d},
  299:     {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
  300:     {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
  301:     {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d49e, 0x1d49f},
  302:     {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6}, {0x1d4a9, 0x1d4ac},
  303:     {0x1d4ae, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
  304:     {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
  305:     {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e},
  306:     {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
  307:     {0x1d552, 0x1d6a3}, {0x1d6a8, 0x1d6c0}, {0x1d6c2, 0x1d6da},
  308:     {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734},
  309:     {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788},
  310:     {0x1d78a, 0x1d7a8}, {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9},
  311:     {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
  312: static xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL};
  313: 
  314: static const xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa},
  315:     {0xb5, 0xb5}, {0xba, 0xba}, {0xdf, 0xf6}, {0xf8, 0xff}, {0x101, 0x101},
  316:     {0x103, 0x103}, {0x105, 0x105}, {0x107, 0x107}, {0x109, 0x109},
  317:     {0x10b, 0x10b}, {0x10d, 0x10d}, {0x10f, 0x10f}, {0x111, 0x111},
  318:     {0x113, 0x113}, {0x115, 0x115}, {0x117, 0x117}, {0x119, 0x119},
  319:     {0x11b, 0x11b}, {0x11d, 0x11d}, {0x11f, 0x11f}, {0x121, 0x121},
  320:     {0x123, 0x123}, {0x125, 0x125}, {0x127, 0x127}, {0x129, 0x129},
  321:     {0x12b, 0x12b}, {0x12d, 0x12d}, {0x12f, 0x12f}, {0x131, 0x131},
  322:     {0x133, 0x133}, {0x135, 0x135}, {0x137, 0x138}, {0x13a, 0x13a},
  323:     {0x13c, 0x13c}, {0x13e, 0x13e}, {0x140, 0x140}, {0x142, 0x142},
  324:     {0x144, 0x144}, {0x146, 0x146}, {0x148, 0x149}, {0x14b, 0x14b},
  325:     {0x14d, 0x14d}, {0x14f, 0x14f}, {0x151, 0x151}, {0x153, 0x153},
  326:     {0x155, 0x155}, {0x157, 0x157}, {0x159, 0x159}, {0x15b, 0x15b},
  327:     {0x15d, 0x15d}, {0x15f, 0x15f}, {0x161, 0x161}, {0x163, 0x163},
  328:     {0x165, 0x165}, {0x167, 0x167}, {0x169, 0x169}, {0x16b, 0x16b},
  329:     {0x16d, 0x16d}, {0x16f, 0x16f}, {0x171, 0x171}, {0x173, 0x173},
  330:     {0x175, 0x175}, {0x177, 0x177}, {0x17a, 0x17a}, {0x17c, 0x17c},
  331:     {0x17e, 0x180}, {0x183, 0x183}, {0x185, 0x185}, {0x188, 0x188},
  332:     {0x18c, 0x18d}, {0x192, 0x192}, {0x195, 0x195}, {0x199, 0x19b},
  333:     {0x19e, 0x19e}, {0x1a1, 0x1a1}, {0x1a3, 0x1a3}, {0x1a5, 0x1a5},
  334:     {0x1a8, 0x1a8}, {0x1aa, 0x1ab}, {0x1ad, 0x1ad}, {0x1b0, 0x1b0},
  335:     {0x1b4, 0x1b4}, {0x1b6, 0x1b6}, {0x1b9, 0x1ba}, {0x1bd, 0x1bf},
  336:     {0x1c6, 0x1c6}, {0x1c9, 0x1c9}, {0x1cc, 0x1cc}, {0x1ce, 0x1ce},
  337:     {0x1d0, 0x1d0}, {0x1d2, 0x1d2}, {0x1d4, 0x1d4}, {0x1d6, 0x1d6},
  338:     {0x1d8, 0x1d8}, {0x1da, 0x1da}, {0x1dc, 0x1dd}, {0x1df, 0x1df},
  339:     {0x1e1, 0x1e1}, {0x1e3, 0x1e3}, {0x1e5, 0x1e5}, {0x1e7, 0x1e7},
  340:     {0x1e9, 0x1e9}, {0x1eb, 0x1eb}, {0x1ed, 0x1ed}, {0x1ef, 0x1f0},
  341:     {0x1f3, 0x1f3}, {0x1f5, 0x1f5}, {0x1f9, 0x1f9}, {0x1fb, 0x1fb},
  342:     {0x1fd, 0x1fd}, {0x1ff, 0x1ff}, {0x201, 0x201}, {0x203, 0x203},
  343:     {0x205, 0x205}, {0x207, 0x207}, {0x209, 0x209}, {0x20b, 0x20b},
  344:     {0x20d, 0x20d}, {0x20f, 0x20f}, {0x211, 0x211}, {0x213, 0x213},
  345:     {0x215, 0x215}, {0x217, 0x217}, {0x219, 0x219}, {0x21b, 0x21b},
  346:     {0x21d, 0x21d}, {0x21f, 0x21f}, {0x221, 0x221}, {0x223, 0x223},
  347:     {0x225, 0x225}, {0x227, 0x227}, {0x229, 0x229}, {0x22b, 0x22b},
  348:     {0x22d, 0x22d}, {0x22f, 0x22f}, {0x231, 0x231}, {0x233, 0x236},
  349:     {0x250, 0x2af}, {0x390, 0x390}, {0x3ac, 0x3ce}, {0x3d0, 0x3d1},
  350:     {0x3d5, 0x3d7}, {0x3d9, 0x3d9}, {0x3db, 0x3db}, {0x3dd, 0x3dd},
  351:     {0x3df, 0x3df}, {0x3e1, 0x3e1}, {0x3e3, 0x3e3}, {0x3e5, 0x3e5},
  352:     {0x3e7, 0x3e7}, {0x3e9, 0x3e9}, {0x3eb, 0x3eb}, {0x3ed, 0x3ed},
  353:     {0x3ef, 0x3f3}, {0x3f5, 0x3f5}, {0x3f8, 0x3f8}, {0x3fb, 0x3fb},
  354:     {0x430, 0x45f}, {0x461, 0x461}, {0x463, 0x463}, {0x465, 0x465},
  355:     {0x467, 0x467}, {0x469, 0x469}, {0x46b, 0x46b}, {0x46d, 0x46d},
  356:     {0x46f, 0x46f}, {0x471, 0x471}, {0x473, 0x473}, {0x475, 0x475},
  357:     {0x477, 0x477}, {0x479, 0x479}, {0x47b, 0x47b}, {0x47d, 0x47d},
  358:     {0x47f, 0x47f}, {0x481, 0x481}, {0x48b, 0x48b}, {0x48d, 0x48d},
  359:     {0x48f, 0x48f}, {0x491, 0x491}, {0x493, 0x493}, {0x495, 0x495},
  360:     {0x497, 0x497}, {0x499, 0x499}, {0x49b, 0x49b}, {0x49d, 0x49d},
  361:     {0x49f, 0x49f}, {0x4a1, 0x4a1}, {0x4a3, 0x4a3}, {0x4a5, 0x4a5},
  362:     {0x4a7, 0x4a7}, {0x4a9, 0x4a9}, {0x4ab, 0x4ab}, {0x4ad, 0x4ad},
  363:     {0x4af, 0x4af}, {0x4b1, 0x4b1}, {0x4b3, 0x4b3}, {0x4b5, 0x4b5},
  364:     {0x4b7, 0x4b7}, {0x4b9, 0x4b9}, {0x4bb, 0x4bb}, {0x4bd, 0x4bd},
  365:     {0x4bf, 0x4bf}, {0x4c2, 0x4c2}, {0x4c4, 0x4c4}, {0x4c6, 0x4c6},
  366:     {0x4c8, 0x4c8}, {0x4ca, 0x4ca}, {0x4cc, 0x4cc}, {0x4ce, 0x4ce},
  367:     {0x4d1, 0x4d1}, {0x4d3, 0x4d3}, {0x4d5, 0x4d5}, {0x4d7, 0x4d7},
  368:     {0x4d9, 0x4d9}, {0x4db, 0x4db}, {0x4dd, 0x4dd}, {0x4df, 0x4df},
  369:     {0x4e1, 0x4e1}, {0x4e3, 0x4e3}, {0x4e5, 0x4e5}, {0x4e7, 0x4e7},
  370:     {0x4e9, 0x4e9}, {0x4eb, 0x4eb}, {0x4ed, 0x4ed}, {0x4ef, 0x4ef},
  371:     {0x4f1, 0x4f1}, {0x4f3, 0x4f3}, {0x4f5, 0x4f5}, {0x4f9, 0x4f9},
  372:     {0x501, 0x501}, {0x503, 0x503}, {0x505, 0x505}, {0x507, 0x507},
  373:     {0x509, 0x509}, {0x50b, 0x50b}, {0x50d, 0x50d}, {0x50f, 0x50f},
  374:     {0x561, 0x587}, {0x1d00, 0x1d2b}, {0x1d62, 0x1d6b}, {0x1e01, 0x1e01},
  375:     {0x1e03, 0x1e03}, {0x1e05, 0x1e05}, {0x1e07, 0x1e07}, {0x1e09, 0x1e09},
  376:     {0x1e0b, 0x1e0b}, {0x1e0d, 0x1e0d}, {0x1e0f, 0x1e0f}, {0x1e11, 0x1e11},
  377:     {0x1e13, 0x1e13}, {0x1e15, 0x1e15}, {0x1e17, 0x1e17}, {0x1e19, 0x1e19},
  378:     {0x1e1b, 0x1e1b}, {0x1e1d, 0x1e1d}, {0x1e1f, 0x1e1f}, {0x1e21, 0x1e21},
  379:     {0x1e23, 0x1e23}, {0x1e25, 0x1e25}, {0x1e27, 0x1e27}, {0x1e29, 0x1e29},
  380:     {0x1e2b, 0x1e2b}, {0x1e2d, 0x1e2d}, {0x1e2f, 0x1e2f}, {0x1e31, 0x1e31},
  381:     {0x1e33, 0x1e33}, {0x1e35, 0x1e35}, {0x1e37, 0x1e37}, {0x1e39, 0x1e39},
  382:     {0x1e3b, 0x1e3b}, {0x1e3d, 0x1e3d}, {0x1e3f, 0x1e3f}, {0x1e41, 0x1e41},
  383:     {0x1e43, 0x1e43}, {0x1e45, 0x1e45}, {0x1e47, 0x1e47}, {0x1e49, 0x1e49},
  384:     {0x1e4b, 0x1e4b}, {0x1e4d, 0x1e4d}, {0x1e4f, 0x1e4f}, {0x1e51, 0x1e51},
  385:     {0x1e53, 0x1e53}, {0x1e55, 0x1e55}, {0x1e57, 0x1e57}, {0x1e59, 0x1e59},
  386:     {0x1e5b, 0x1e5b}, {0x1e5d, 0x1e5d}, {0x1e5f, 0x1e5f}, {0x1e61, 0x1e61},
  387:     {0x1e63, 0x1e63}, {0x1e65, 0x1e65}, {0x1e67, 0x1e67}, {0x1e69, 0x1e69},
  388:     {0x1e6b, 0x1e6b}, {0x1e6d, 0x1e6d}, {0x1e6f, 0x1e6f}, {0x1e71, 0x1e71},
  389:     {0x1e73, 0x1e73}, {0x1e75, 0x1e75}, {0x1e77, 0x1e77}, {0x1e79, 0x1e79},
  390:     {0x1e7b, 0x1e7b}, {0x1e7d, 0x1e7d}, {0x1e7f, 0x1e7f}, {0x1e81, 0x1e81},
  391:     {0x1e83, 0x1e83}, {0x1e85, 0x1e85}, {0x1e87, 0x1e87}, {0x1e89, 0x1e89},
  392:     {0x1e8b, 0x1e8b}, {0x1e8d, 0x1e8d}, {0x1e8f, 0x1e8f}, {0x1e91, 0x1e91},
  393:     {0x1e93, 0x1e93}, {0x1e95, 0x1e9b}, {0x1ea1, 0x1ea1}, {0x1ea3, 0x1ea3},
  394:     {0x1ea5, 0x1ea5}, {0x1ea7, 0x1ea7}, {0x1ea9, 0x1ea9}, {0x1eab, 0x1eab},
  395:     {0x1ead, 0x1ead}, {0x1eaf, 0x1eaf}, {0x1eb1, 0x1eb1}, {0x1eb3, 0x1eb3},
  396:     {0x1eb5, 0x1eb5}, {0x1eb7, 0x1eb7}, {0x1eb9, 0x1eb9}, {0x1ebb, 0x1ebb},
  397:     {0x1ebd, 0x1ebd}, {0x1ebf, 0x1ebf}, {0x1ec1, 0x1ec1}, {0x1ec3, 0x1ec3},
  398:     {0x1ec5, 0x1ec5}, {0x1ec7, 0x1ec7}, {0x1ec9, 0x1ec9}, {0x1ecb, 0x1ecb},
  399:     {0x1ecd, 0x1ecd}, {0x1ecf, 0x1ecf}, {0x1ed1, 0x1ed1}, {0x1ed3, 0x1ed3},
  400:     {0x1ed5, 0x1ed5}, {0x1ed7, 0x1ed7}, {0x1ed9, 0x1ed9}, {0x1edb, 0x1edb},
  401:     {0x1edd, 0x1edd}, {0x1edf, 0x1edf}, {0x1ee1, 0x1ee1}, {0x1ee3, 0x1ee3},
  402:     {0x1ee5, 0x1ee5}, {0x1ee7, 0x1ee7}, {0x1ee9, 0x1ee9}, {0x1eeb, 0x1eeb},
  403:     {0x1eed, 0x1eed}, {0x1eef, 0x1eef}, {0x1ef1, 0x1ef1}, {0x1ef3, 0x1ef3},
  404:     {0x1ef5, 0x1ef5}, {0x1ef7, 0x1ef7}, {0x1ef9, 0x1ef9}, {0x1f00, 0x1f07},
  405:     {0x1f10, 0x1f15}, {0x1f20, 0x1f27}, {0x1f30, 0x1f37}, {0x1f40, 0x1f45},
  406:     {0x1f50, 0x1f57}, {0x1f60, 0x1f67}, {0x1f70, 0x1f7d}, {0x1f80, 0x1f87},
  407:     {0x1f90, 0x1f97}, {0x1fa0, 0x1fa7}, {0x1fb0, 0x1fb4}, {0x1fb6, 0x1fb7},
  408:     {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fc7}, {0x1fd0, 0x1fd3},
  409:     {0x1fd6, 0x1fd7}, {0x1fe0, 0x1fe7}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ff7},
  410:     {0x2071, 0x2071}, {0x207f, 0x207f}, {0x210a, 0x210a}, {0x210e, 0x210f},
  411:     {0x2113, 0x2113}, {0x212f, 0x212f}, {0x2134, 0x2134}, {0x2139, 0x2139},
  412:     {0x213d, 0x213d}, {0x2146, 0x2149}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17},
  413:     {0xff41, 0xff5a} };
  414: static const xmlChLRange xmlLlL[] = {{0x10428, 0x1044f}, {0x1d41a, 0x1d433},
  415:     {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b},
  416:     {0x1d4b6, 0x1d4b9}, {0x1d4bb, 0x1d4bb}, {0x1d4bd, 0x1d4c3},
  417:     {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, {0x1d51e, 0x1d537},
  418:     {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3},
  419:     {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f},
  420:     {0x1d68a, 0x1d6a3}, {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1},
  421:     {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, {0x1d736, 0x1d74e},
  422:     {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f},
  423:     {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9} };
  424: static xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL};
  425: 
  426: static const xmlChSRange xmlLmS[] = {{0x2b0, 0x2c1}, {0x2c6, 0x2d1},
  427:     {0x2e0, 0x2e4}, {0x2ee, 0x2ee}, {0x37a, 0x37a}, {0x559, 0x559},
  428:     {0x640, 0x640}, {0x6e5, 0x6e6}, {0xe46, 0xe46}, {0xec6, 0xec6},
  429:     {0x17d7, 0x17d7}, {0x1843, 0x1843}, {0x1d2c, 0x1d61}, {0x3005, 0x3005},
  430:     {0x3031, 0x3035}, {0x303b, 0x303b}, {0x309d, 0x309e}, {0x30fc, 0x30fe},
  431:     {0xff70, 0xff70}, {0xff9e, 0xff9f} };
  432: static xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL};
  433: 
  434: static const xmlChSRange xmlLoS[] = {{0x1bb, 0x1bb}, {0x1c0, 0x1c3},
  435:     {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x641, 0x64a},
  436:     {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6ee, 0x6ef},
  437:     {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710}, {0x712, 0x72f},
  438:     {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1}, {0x904, 0x939},
  439:     {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961}, {0x985, 0x98c},
  440:     {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2},
  441:     {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd}, {0x9df, 0x9e1},
  442:     {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10}, {0xa13, 0xa28},
  443:     {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36}, {0xa38, 0xa39},
  444:     {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74}, {0xa85, 0xa8d},
  445:     {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3},
  446:     {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0}, {0xae0, 0xae1},
  447:     {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28}, {0xb2a, 0xb30},
  448:     {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d}, {0xb5c, 0xb5d},
  449:     {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83}, {0xb85, 0xb8a},
  450:     {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
  451:     {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
  452:     {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
  453:     {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
  454:     {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
  455:     {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c},
  456:     {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61},
  457:     {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdbd, 0xdbd},
  458:     {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45},
  459:     {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a},
  460:     {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3},
  461:     {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeb0},
  462:     {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xedc, 0xedd},
  463:     {0xf00, 0xf00}, {0xf40, 0xf47}, {0xf49, 0xf6a}, {0xf88, 0xf8b},
  464:     {0x1000, 0x1021}, {0x1023, 0x1027}, {0x1029, 0x102a}, {0x1050, 0x1055},
  465:     {0x10d0, 0x10f8}, {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9},
  466:     {0x1200, 0x1206}, {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d},
  467:     {0x1250, 0x1256}, {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286},
  468:     {0x1288, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0},
  469:     {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5},
  470:     {0x12c8, 0x12ce}, {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e},
  471:     {0x1310, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346},
  472:     {0x1348, 0x135a}, {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676},
  473:     {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711},
  474:     {0x1720, 0x1731}, {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770},
  475:     {0x1780, 0x17b3}, {0x17dc, 0x17dc}, {0x1820, 0x1842}, {0x1844, 0x1877},
  476:     {0x1880, 0x18a8}, {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974},
  477:     {0x2135, 0x2138}, {0x3006, 0x3006}, {0x303c, 0x303c}, {0x3041, 0x3096},
  478:     {0x309f, 0x309f}, {0x30a1, 0x30fa}, {0x30ff, 0x30ff}, {0x3105, 0x312c},
  479:     {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
  480:     {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
  481:     {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
  482:     {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c},
  483:     {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41}, {0xfb43, 0xfb44}, {0xfb46, 0xfbb1},
  484:     {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb},
  485:     {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, {0xff66, 0xff6f}, {0xff71, 0xff9d},
  486:     {0xffa0, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7},
  487:     {0xffda, 0xffdc} };
  488: static const xmlChLRange xmlLoL[] = {{0x10000, 0x1000b}, {0x1000d, 0x10026},
  489:     {0x10028, 0x1003a}, {0x1003c, 0x1003d}, {0x1003f, 0x1004d},
  490:     {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10300, 0x1031e},
  491:     {0x10330, 0x10349}, {0x10380, 0x1039d}, {0x10450, 0x1049d},
  492:     {0x10800, 0x10805}, {0x10808, 0x10808}, {0x1080a, 0x10835},
  493:     {0x10837, 0x10838}, {0x1083c, 0x1083c}, {0x1083f, 0x1083f},
  494:     {0x20000, 0x20000}, {0x2a6d6, 0x2a6d6}, {0x2f800, 0x2fa1d} };
  495: static xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL};
  496: 
  497: static const xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
  498:     {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
  499:     {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} };
  500: static xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL};
  501: 
  502: static const xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6},
  503:     {0xd8, 0xde}, {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104},
  504:     {0x106, 0x106}, {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c},
  505:     {0x10e, 0x10e}, {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114},
  506:     {0x116, 0x116}, {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c},
  507:     {0x11e, 0x11e}, {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124},
  508:     {0x126, 0x126}, {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c},
  509:     {0x12e, 0x12e}, {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134},
  510:     {0x136, 0x136}, {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d},
  511:     {0x13f, 0x13f}, {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145},
  512:     {0x147, 0x147}, {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e},
  513:     {0x150, 0x150}, {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156},
  514:     {0x158, 0x158}, {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e},
  515:     {0x160, 0x160}, {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166},
  516:     {0x168, 0x168}, {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e},
  517:     {0x170, 0x170}, {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176},
  518:     {0x178, 0x179}, {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182},
  519:     {0x184, 0x184}, {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191},
  520:     {0x193, 0x194}, {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0},
  521:     {0x1a2, 0x1a2}, {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9},
  522:     {0x1ac, 0x1ac}, {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5},
  523:     {0x1b7, 0x1b8}, {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7},
  524:     {0x1ca, 0x1ca}, {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1},
  525:     {0x1d3, 0x1d3}, {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9},
  526:     {0x1db, 0x1db}, {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2},
  527:     {0x1e4, 0x1e4}, {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea},
  528:     {0x1ec, 0x1ec}, {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4},
  529:     {0x1f6, 0x1f8}, {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe},
  530:     {0x200, 0x200}, {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206},
  531:     {0x208, 0x208}, {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e},
  532:     {0x210, 0x210}, {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216},
  533:     {0x218, 0x218}, {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e},
  534:     {0x220, 0x220}, {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226},
  535:     {0x228, 0x228}, {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e},
  536:     {0x230, 0x230}, {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a},
  537:     {0x38c, 0x38c}, {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab},
  538:     {0x3d2, 0x3d4}, {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc},
  539:     {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4},
  540:     {0x3e6, 0x3e6}, {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec},
  541:     {0x3ee, 0x3ee}, {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa},
  542:     {0x400, 0x42f}, {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464},
  543:     {0x466, 0x466}, {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c},
  544:     {0x46e, 0x46e}, {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474},
  545:     {0x476, 0x476}, {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c},
  546:     {0x47e, 0x47e}, {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c},
  547:     {0x48e, 0x48e}, {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494},
  548:     {0x496, 0x496}, {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c},
  549:     {0x49e, 0x49e}, {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4},
  550:     {0x4a6, 0x4a6}, {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac},
  551:     {0x4ae, 0x4ae}, {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4},
  552:     {0x4b6, 0x4b6}, {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc},
  553:     {0x4be, 0x4be}, {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5},
  554:     {0x4c7, 0x4c7}, {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd},
  555:     {0x4d0, 0x4d0}, {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6},
  556:     {0x4d8, 0x4d8}, {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de},
  557:     {0x4e0, 0x4e0}, {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6},
  558:     {0x4e8, 0x4e8}, {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee},
  559:     {0x4f0, 0x4f0}, {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8},
  560:     {0x500, 0x500}, {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506},
  561:     {0x508, 0x508}, {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e},
  562:     {0x531, 0x556}, {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02},
  563:     {0x1e04, 0x1e04}, {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a},
  564:     {0x1e0c, 0x1e0c}, {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12},
  565:     {0x1e14, 0x1e14}, {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a},
  566:     {0x1e1c, 0x1e1c}, {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22},
  567:     {0x1e24, 0x1e24}, {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a},
  568:     {0x1e2c, 0x1e2c}, {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32},
  569:     {0x1e34, 0x1e34}, {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a},
  570:     {0x1e3c, 0x1e3c}, {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42},
  571:     {0x1e44, 0x1e44}, {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a},
  572:     {0x1e4c, 0x1e4c}, {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52},
  573:     {0x1e54, 0x1e54}, {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a},
  574:     {0x1e5c, 0x1e5c}, {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62},
  575:     {0x1e64, 0x1e64}, {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a},
  576:     {0x1e6c, 0x1e6c}, {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72},
  577:     {0x1e74, 0x1e74}, {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a},
  578:     {0x1e7c, 0x1e7c}, {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82},
  579:     {0x1e84, 0x1e84}, {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a},
  580:     {0x1e8c, 0x1e8c}, {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92},
  581:     {0x1e94, 0x1e94}, {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4},
  582:     {0x1ea6, 0x1ea6}, {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac},
  583:     {0x1eae, 0x1eae}, {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4},
  584:     {0x1eb6, 0x1eb6}, {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc},
  585:     {0x1ebe, 0x1ebe}, {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4},
  586:     {0x1ec6, 0x1ec6}, {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc},
  587:     {0x1ece, 0x1ece}, {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4},
  588:     {0x1ed6, 0x1ed6}, {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc},
  589:     {0x1ede, 0x1ede}, {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4},
  590:     {0x1ee6, 0x1ee6}, {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec},
  591:     {0x1eee, 0x1eee}, {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4},
  592:     {0x1ef6, 0x1ef6}, {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d},
  593:     {0x1f28, 0x1f2f}, {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59},
  594:     {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f},
  595:     {0x1fb8, 0x1fbb}, {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec},
  596:     {0x1ff8, 0x1ffb}, {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d},
  597:     {0x2110, 0x2112}, {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124},
  598:     {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131},
  599:     {0x2133, 0x2133}, {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} };
  600: static const xmlChLRange xmlLuL[] = {{0x10400, 0x10427}, {0x1d400, 0x1d419},
  601:     {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d49c, 0x1d49c},
  602:     {0x1d49e, 0x1d49f}, {0x1d4a2, 0x1d4a2}, {0x1d4a5, 0x1d4a6},
  603:     {0x1d4a9, 0x1d4ac}, {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9},
  604:     {0x1d504, 0x1d505}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514},
  605:     {0x1d516, 0x1d51c}, {0x1d538, 0x1d539}, {0x1d53b, 0x1d53e},
  606:     {0x1d540, 0x1d544}, {0x1d546, 0x1d546}, {0x1d54a, 0x1d550},
  607:     {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed},
  608:     {0x1d608, 0x1d621}, {0x1d63c, 0x1d655}, {0x1d670, 0x1d689},
  609:     {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, {0x1d71c, 0x1d734},
  610:     {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8} };
  611: static xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL};
  612: 
  613: static const xmlChSRange xmlMS[] = {{0x300, 0x357}, {0x35d, 0x36f},
  614:     {0x483, 0x486}, {0x488, 0x489}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
  615:     {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
  616:     {0x610, 0x615}, {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc},
  617:     {0x6de, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711},
  618:     {0x730, 0x74a}, {0x7a6, 0x7b0}, {0x901, 0x903}, {0x93c, 0x93c},
  619:     {0x93e, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x983},
  620:     {0x9bc, 0x9bc}, {0x9be, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
  621:     {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa01, 0xa03}, {0xa3c, 0xa3c},
  622:     {0xa3e, 0xa42}, {0xa47, 0xa48}, {0xa4b, 0xa4d}, {0xa70, 0xa71},
  623:     {0xa81, 0xa83}, {0xabc, 0xabc}, {0xabe, 0xac5}, {0xac7, 0xac9},
  624:     {0xacb, 0xacd}, {0xae2, 0xae3}, {0xb01, 0xb03}, {0xb3c, 0xb3c},
  625:     {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, {0xb56, 0xb57},
  626:     {0xb82, 0xb82}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd},
  627:     {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, {0xc46, 0xc48},
  628:     {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, {0xcbc, 0xcbc},
  629:     {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
  630:     {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
  631:     {0xd57, 0xd57}, {0xd82, 0xd83}, {0xdca, 0xdca}, {0xdcf, 0xdd4},
  632:     {0xdd6, 0xdd6}, {0xdd8, 0xddf}, {0xdf2, 0xdf3}, {0xe31, 0xe31},
  633:     {0xe34, 0xe3a}, {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9},
  634:     {0xebb, 0xebc}, {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35},
  635:     {0xf37, 0xf37}, {0xf39, 0xf39}, {0xf3e, 0xf3f}, {0xf71, 0xf84},
  636:     {0xf86, 0xf87}, {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6},
  637:     {0x102c, 0x1032}, {0x1036, 0x1039}, {0x1056, 0x1059}, {0x1712, 0x1714},
  638:     {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17b6, 0x17d3},
  639:     {0x17dd, 0x17dd}, {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x192b},
  640:     {0x1930, 0x193b}, {0x20d0, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a},
  641:     {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
  642: static const xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
  643:     {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
  644:     {0xe0100, 0xe01ef} };
  645: static xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML};
  646: 
  647: static const xmlChSRange xmlMcS[] = {{0x903, 0x903}, {0x93e, 0x940},
  648:     {0x949, 0x94c}, {0x982, 0x983}, {0x9be, 0x9c0}, {0x9c7, 0x9c8},
  649:     {0x9cb, 0x9cc}, {0x9d7, 0x9d7}, {0xa03, 0xa03}, {0xa3e, 0xa40},
  650:     {0xa83, 0xa83}, {0xabe, 0xac0}, {0xac9, 0xac9}, {0xacb, 0xacc},
  651:     {0xb02, 0xb03}, {0xb3e, 0xb3e}, {0xb40, 0xb40}, {0xb47, 0xb48},
  652:     {0xb4b, 0xb4c}, {0xb57, 0xb57}, {0xbbe, 0xbbf}, {0xbc1, 0xbc2},
  653:     {0xbc6, 0xbc8}, {0xbca, 0xbcc}, {0xbd7, 0xbd7}, {0xc01, 0xc03},
  654:     {0xc41, 0xc44}, {0xc82, 0xc83}, {0xcbe, 0xcbe}, {0xcc0, 0xcc4},
  655:     {0xcc7, 0xcc8}, {0xcca, 0xccb}, {0xcd5, 0xcd6}, {0xd02, 0xd03},
  656:     {0xd3e, 0xd40}, {0xd46, 0xd48}, {0xd4a, 0xd4c}, {0xd57, 0xd57},
  657:     {0xd82, 0xd83}, {0xdcf, 0xdd1}, {0xdd8, 0xddf}, {0xdf2, 0xdf3},
  658:     {0xf3e, 0xf3f}, {0xf7f, 0xf7f}, {0x102c, 0x102c}, {0x1031, 0x1031},
  659:     {0x1038, 0x1038}, {0x1056, 0x1057}, {0x17b6, 0x17b6}, {0x17be, 0x17c5},
  660:     {0x17c7, 0x17c8}, {0x1923, 0x1926}, {0x1929, 0x192b}, {0x1930, 0x1931},
  661:     {0x1933, 0x1938} };
  662: static const xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} };
  663: static xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL};
  664: 
  665: static const xmlChSRange xmlMnS[] = {{0x300, 0x357}, {0x35d, 0x36f},
  666:     {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, {0x5bb, 0x5bd},
  667:     {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, {0x610, 0x615},
  668:     {0x64b, 0x658}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6df, 0x6e4},
  669:     {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x711, 0x711}, {0x730, 0x74a},
  670:     {0x7a6, 0x7b0}, {0x901, 0x902}, {0x93c, 0x93c}, {0x941, 0x948},
  671:     {0x94d, 0x94d}, {0x951, 0x954}, {0x962, 0x963}, {0x981, 0x981},
  672:     {0x9bc, 0x9bc}, {0x9c1, 0x9c4}, {0x9cd, 0x9cd}, {0x9e2, 0x9e3},
  673:     {0xa01, 0xa02}, {0xa3c, 0xa3c}, {0xa41, 0xa42}, {0xa47, 0xa48},
  674:     {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa82}, {0xabc, 0xabc},
  675:     {0xac1, 0xac5}, {0xac7, 0xac8}, {0xacd, 0xacd}, {0xae2, 0xae3},
  676:     {0xb01, 0xb01}, {0xb3c, 0xb3c}, {0xb3f, 0xb3f}, {0xb41, 0xb43},
  677:     {0xb4d, 0xb4d}, {0xb56, 0xb56}, {0xb82, 0xb82}, {0xbc0, 0xbc0},
  678:     {0xbcd, 0xbcd}, {0xc3e, 0xc40}, {0xc46, 0xc48}, {0xc4a, 0xc4d},
  679:     {0xc55, 0xc56}, {0xcbc, 0xcbc}, {0xcbf, 0xcbf}, {0xcc6, 0xcc6},
  680:     {0xccc, 0xccd}, {0xd41, 0xd43}, {0xd4d, 0xd4d}, {0xdca, 0xdca},
  681:     {0xdd2, 0xdd4}, {0xdd6, 0xdd6}, {0xe31, 0xe31}, {0xe34, 0xe3a},
  682:     {0xe47, 0xe4e}, {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc},
  683:     {0xec8, 0xecd}, {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37},
  684:     {0xf39, 0xf39}, {0xf71, 0xf7e}, {0xf80, 0xf84}, {0xf86, 0xf87},
  685:     {0xf90, 0xf97}, {0xf99, 0xfbc}, {0xfc6, 0xfc6}, {0x102d, 0x1030},
  686:     {0x1032, 0x1032}, {0x1036, 0x1037}, {0x1039, 0x1039}, {0x1058, 0x1059},
  687:     {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773},
  688:     {0x17b7, 0x17bd}, {0x17c6, 0x17c6}, {0x17c9, 0x17d3}, {0x17dd, 0x17dd},
  689:     {0x180b, 0x180d}, {0x18a9, 0x18a9}, {0x1920, 0x1922}, {0x1927, 0x1928},
  690:     {0x1932, 0x1932}, {0x1939, 0x193b}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1},
  691:     {0x20e5, 0x20ea}, {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e},
  692:     {0xfe00, 0xfe0f}, {0xfe20, 0xfe23} };
  693: static const xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
  694:     {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} };
  695: static xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL};
  696: 
  697: static const xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3},
  698:     {0xb9, 0xb9}, {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9},
  699:     {0x966, 0x96f}, {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f},
  700:     {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f},
  701:     {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
  702:     {0xf20, 0xf33}, {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0},
  703:     {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f},
  704:     {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183},
  705:     {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007},
  706:     {0x3021, 0x3029}, {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229},
  707:     {0x3251, 0x325f}, {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} };
  708: static const xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
  709:     {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
  710: static xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL};
  711: 
  712: static const xmlChSRange xmlNdS[] = {{0x30, 0x39}, {0x660, 0x669},
  713:     {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
  714:     {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
  715:     {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
  716:     {0xf20, 0xf29}, {0x1040, 0x1049}, {0x1369, 0x1371}, {0x17e0, 0x17e9},
  717:     {0x1810, 0x1819}, {0x1946, 0x194f}, {0xff10, 0xff19} };
  718: static const xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
  719: static xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL};
  720: 
  721: static const xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9},
  722:     {0xbc, 0xbe}, {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33},
  723:     {0x1372, 0x137c}, {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079},
  724:     {0x2080, 0x2089}, {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff},
  725:     {0x2776, 0x2793}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
  726:     {0x3280, 0x3289}, {0x32b1, 0x32bf} };
  727: static const xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} };
  728: static xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL};
  729: 
  730: static const xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a},
  731:     {0x2c, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f},
  732:     {0x7b, 0x7b}, {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7},
  733:     {0xbb, 0xbb}, {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387},
  734:     {0x55a, 0x55f}, {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0},
  735:     {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b},
  736:     {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d},
  737:     {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f},
  738:     {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85},
  739:     {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
  740:     {0x169b, 0x169c}, {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6},
  741:     {0x17d8, 0x17da}, {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027},
  742:     {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057},
  743:     {0x207d, 0x207e}, {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6},
  744:     {0x2768, 0x2775}, {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db},
  745:     {0x29fc, 0x29fd}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f},
  746:     {0x3030, 0x3030}, {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb},
  747:     {0xfd3e, 0xfd3f}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63},
  748:     {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a},
  749:     {0xff0c, 0xff0f}, {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d},
  750:     {0xff3f, 0xff3f}, {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} };
  751: static const xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
  752: static xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL};
  753: 
  754: static const xmlChSRange xmlPdS[] = {{0x2d, 0x2d}, {0x58a, 0x58a},
  755:     {0x1806, 0x1806}, {0x2010, 0x2015}, {0x301c, 0x301c}, {0x3030, 0x3030},
  756:     {0x30a0, 0x30a0}, {0xfe31, 0xfe32}, {0xfe58, 0xfe58}, {0xfe63, 0xfe63},
  757:     {0xff0d, 0xff0d} };
  758: static xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL};
  759: 
  760: static const xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d},
  761:     {0x7d, 0x7d}, {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c},
  762:     {0x2046, 0x2046}, {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a},
  763:     {0x23b5, 0x23b5}, {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d},
  764:     {0x276f, 0x276f}, {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775},
  765:     {0x27e7, 0x27e7}, {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984},
  766:     {0x2986, 0x2986}, {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c},
  767:     {0x298e, 0x298e}, {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994},
  768:     {0x2996, 0x2996}, {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db},
  769:     {0x29fd, 0x29fd}, {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d},
  770:     {0x300f, 0x300f}, {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017},
  771:     {0x3019, 0x3019}, {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f},
  772:     {0xfe36, 0xfe36}, {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c},
  773:     {0xfe3e, 0xfe3e}, {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44},
  774:     {0xfe48, 0xfe48}, {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e},
  775:     {0xff09, 0xff09}, {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60},
  776:     {0xff63, 0xff63} };
  777: static xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL};
  778: 
  779: static const xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27},
  780:     {0x2a, 0x2a}, {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40},
  781:     {0x5c, 0x5c}, {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
  782:     {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
  783:     {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
  784:     {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
  785:     {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
  786:     {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
  787:     {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
  788:     {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
  789:     {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
  790:     {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
  791:     {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
  792:     {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
  793:     {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
  794:     {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
  795:     {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
  796:     {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} };
  797: static const xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
  798: static xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL};
  799: 
  800: static const xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b},
  801:     {0x7b, 0x7b}, {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b},
  802:     {0x201a, 0x201a}, {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d},
  803:     {0x208d, 0x208d}, {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768},
  804:     {0x276a, 0x276a}, {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770},
  805:     {0x2772, 0x2772}, {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8},
  806:     {0x27ea, 0x27ea}, {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987},
  807:     {0x2989, 0x2989}, {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f},
  808:     {0x2991, 0x2991}, {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997},
  809:     {0x29d8, 0x29d8}, {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008},
  810:     {0x300a, 0x300a}, {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010},
  811:     {0x3014, 0x3014}, {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a},
  812:     {0x301d, 0x301d}, {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37},
  813:     {0xfe39, 0xfe39}, {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f},
  814:     {0xfe41, 0xfe41}, {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59},
  815:     {0xfe5b, 0xfe5b}, {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b},
  816:     {0xff5b, 0xff5b}, {0xff5f, 0xff5f}, {0xff62, 0xff62} };
  817: static xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL};
  818: 
  819: static const xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b},
  820:     {0x3c, 0x3e}, {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e},
  821:     {0xa2, 0xa9}, {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6},
  822:     {0xb8, 0xb8}, {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5},
  823:     {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
  824:     {0x384, 0x385}, {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f},
  825:     {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa},
  826:     {0xaf1, 0xaf1}, {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f},
  827:     {0xf01, 0xf03}, {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34},
  828:     {0xf36, 0xf36}, {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc},
  829:     {0xfcf, 0xfcf}, {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff},
  830:     {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf},
  831:     {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052},
  832:     {0x207a, 0x207c}, {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101},
  833:     {0x2103, 0x2106}, {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118},
  834:     {0x211e, 0x2123}, {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129},
  835:     {0x212e, 0x212e}, {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144},
  836:     {0x214a, 0x214b}, {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0},
  837:     {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617},
  838:     {0x2619, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704},
  839:     {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d},
  840:     {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767},
  841:     {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5},
  842:     {0x27f0, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d},
  843:     {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb},
  844:     {0x3004, 0x3004}, {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037},
  845:     {0x303e, 0x303f}, {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f},
  846:     {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d},
  847:     {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff},
  848:     {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd},
  849:     {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
  850:     {0xff0b, 0xff0b}, {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40},
  851:     {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee},
  852:     {0xfffc, 0xfffd} };
  853: static const xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
  854:     {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
  855:     {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
  856:     {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
  857:     {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
  858:     {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
  859:     {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
  860: static xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL};
  861: 
  862: static const xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5},
  863:     {0x9f2, 0x9f3}, {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f},
  864:     {0x17db, 0x17db}, {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69},
  865:     {0xff04, 0xff04}, {0xffe0, 0xffe1}, {0xffe5, 0xffe6} };
  866: static xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL};
  867: 
  868: static const xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60},
  869:     {0xa8, 0xa8}, {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
  870:     {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
  871:     {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
  872:     {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
  873:     {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} };
  874: static xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL};
  875: 
  876: static const xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e},
  877:     {0x7c, 0x7c}, {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7},
  878:     {0xf7, 0xf7}, {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052},
  879:     {0x207a, 0x207c}, {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b},
  880:     {0x2190, 0x2194}, {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3},
  881:     {0x21a6, 0x21a6}, {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2},
  882:     {0x21d4, 0x21d4}, {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321},
  883:     {0x237c, 0x237c}, {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1},
  884:     {0x25f8, 0x25ff}, {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff},
  885:     {0x2900, 0x2982}, {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff},
  886:     {0xfb29, 0xfb29}, {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b},
  887:     {0xff1c, 0xff1e}, {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2},
  888:     {0xffe9, 0xffec} };
  889: static const xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
  890:     {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
  891:     {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
  892:     {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
  893: static xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL};
  894: 
  895: static const xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9},
  896:     {0xae, 0xae}, {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482},
  897:     {0x60e, 0x60f}, {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa},
  898:     {0xb70, 0xb70}, {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03},
  899:     {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
  900:     {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
  901:     {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106},
  902:     {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
  903:     {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
  904:     {0x2132, 0x2132}, {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199},
  905:     {0x219c, 0x219f}, {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad},
  906:     {0x21af, 0x21cd}, {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3},
  907:     {0x2300, 0x2307}, {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b},
  908:     {0x237d, 0x239a}, {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a},
  909:     {0x249c, 0x24e9}, {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7},
  910:     {0x2600, 0x2617}, {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691},
  911:     {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727},
  912:     {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756},
  913:     {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af},
  914:     {0x27b1, 0x27be}, {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99},
  915:     {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
  916:     {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
  917:     {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243},
  918:     {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0},
  919:     {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6},
  920:     {0xfdfd, 0xfdfd}, {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee},
  921:     {0xfffc, 0xfffd} };
  922: static const xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
  923:     {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
  924:     {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
  925:     {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} };
  926: static xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL};
  927: 
  928: static const xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0},
  929:     {0x1680, 0x1680}, {0x180e, 0x180e}, {0x2000, 0x200a}, {0x2028, 0x2029},
  930:     {0x202f, 0x202f}, {0x205f, 0x205f}, {0x3000, 0x3000} };
  931: static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL};
  932: 
  933: static xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, 128};
  934: static xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36};
  935: 
  936: /**
  937:  * xmlUnicodeLookup:
  938:  * @tptr: pointer to the name table
  939:  * @name: name to be found
  940:  *
  941:  * binary table lookup for user-supplied name
  942:  *
  943:  * Returns pointer to range function if found, otherwise NULL
  944:  */
  945: static xmlIntFunc
  946: *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname) {
  947:     int low, high, mid, cmp;
  948:     xmlUnicodeRange *sptr;
  949: 
  950:     if ((tptr == NULL) || (tname == NULL)) return(NULL);
  951: 
  952:     low = 0;
  953:     high = tptr->numentries - 1;
  954:     sptr = tptr->table;
  955:     while (low <= high) {
  956: 	mid = (low + high) / 2;
  957: 	if ((cmp=strcmp(tname, sptr[mid].rangename)) == 0)
  958: 	    return (sptr[mid].func);
  959: 	if (cmp < 0)
  960: 	    high = mid - 1;
  961: 	else
  962: 	    low = mid + 1;
  963:     }
  964:     return (NULL);
  965: }
  966: 
  967: /**
  968:  * xmlUCSIsAegeanNumbers:
  969:  * @code: UCS code point
  970:  *
  971:  * Check whether the character is part of AegeanNumbers UCS Block
  972:  *
  973:  * Returns 1 if true 0 otherwise
  974:  */
  975: int
  976: xmlUCSIsAegeanNumbers(int code) {
  977:     return(((code >= 0x10100) && (code <= 0x1013F)));
  978: }
  979: 
  980: /**
  981:  * xmlUCSIsAlphabeticPresentationForms:
  982:  * @code: UCS code point
  983:  *
  984:  * Check whether the character is part of AlphabeticPresentationForms UCS Block
  985:  *
  986:  * Returns 1 if true 0 otherwise
  987:  */
  988: int
  989: xmlUCSIsAlphabeticPresentationForms(int code) {
  990:     return(((code >= 0xFB00) && (code <= 0xFB4F)));
  991: }
  992: 
  993: /**
  994:  * xmlUCSIsArabic:
  995:  * @code: UCS code point
  996:  *
  997:  * Check whether the character is part of Arabic UCS Block
  998:  *
  999:  * Returns 1 if true 0 otherwise
 1000:  */
 1001: int
 1002: xmlUCSIsArabic(int code) {
 1003:     return(((code >= 0x0600) && (code <= 0x06FF)));
 1004: }
 1005: 
 1006: /**
 1007:  * xmlUCSIsArabicPresentationFormsA:
 1008:  * @code: UCS code point
 1009:  *
 1010:  * Check whether the character is part of ArabicPresentationForms-A UCS Block
 1011:  *
 1012:  * Returns 1 if true 0 otherwise
 1013:  */
 1014: int
 1015: xmlUCSIsArabicPresentationFormsA(int code) {
 1016:     return(((code >= 0xFB50) && (code <= 0xFDFF)));
 1017: }
 1018: 
 1019: /**
 1020:  * xmlUCSIsArabicPresentationFormsB:
 1021:  * @code: UCS code point
 1022:  *
 1023:  * Check whether the character is part of ArabicPresentationForms-B UCS Block
 1024:  *
 1025:  * Returns 1 if true 0 otherwise
 1026:  */
 1027: int
 1028: xmlUCSIsArabicPresentationFormsB(int code) {
 1029:     return(((code >= 0xFE70) && (code <= 0xFEFF)));
 1030: }
 1031: 
 1032: /**
 1033:  * xmlUCSIsArmenian:
 1034:  * @code: UCS code point
 1035:  *
 1036:  * Check whether the character is part of Armenian UCS Block
 1037:  *
 1038:  * Returns 1 if true 0 otherwise
 1039:  */
 1040: int
 1041: xmlUCSIsArmenian(int code) {
 1042:     return(((code >= 0x0530) && (code <= 0x058F)));
 1043: }
 1044: 
 1045: /**
 1046:  * xmlUCSIsArrows:
 1047:  * @code: UCS code point
 1048:  *
 1049:  * Check whether the character is part of Arrows UCS Block
 1050:  *
 1051:  * Returns 1 if true 0 otherwise
 1052:  */
 1053: int
 1054: xmlUCSIsArrows(int code) {
 1055:     return(((code >= 0x2190) && (code <= 0x21FF)));
 1056: }
 1057: 
 1058: /**
 1059:  * xmlUCSIsBasicLatin:
 1060:  * @code: UCS code point
 1061:  *
 1062:  * Check whether the character is part of BasicLatin UCS Block
 1063:  *
 1064:  * Returns 1 if true 0 otherwise
 1065:  */
 1066: int
 1067: xmlUCSIsBasicLatin(int code) {
 1068:     return(((code >= 0x0000) && (code <= 0x007F)));
 1069: }
 1070: 
 1071: /**
 1072:  * xmlUCSIsBengali:
 1073:  * @code: UCS code point
 1074:  *
 1075:  * Check whether the character is part of Bengali UCS Block
 1076:  *
 1077:  * Returns 1 if true 0 otherwise
 1078:  */
 1079: int
 1080: xmlUCSIsBengali(int code) {
 1081:     return(((code >= 0x0980) && (code <= 0x09FF)));
 1082: }
 1083: 
 1084: /**
 1085:  * xmlUCSIsBlockElements:
 1086:  * @code: UCS code point
 1087:  *
 1088:  * Check whether the character is part of BlockElements UCS Block
 1089:  *
 1090:  * Returns 1 if true 0 otherwise
 1091:  */
 1092: int
 1093: xmlUCSIsBlockElements(int code) {
 1094:     return(((code >= 0x2580) && (code <= 0x259F)));
 1095: }
 1096: 
 1097: /**
 1098:  * xmlUCSIsBopomofo:
 1099:  * @code: UCS code point
 1100:  *
 1101:  * Check whether the character is part of Bopomofo UCS Block
 1102:  *
 1103:  * Returns 1 if true 0 otherwise
 1104:  */
 1105: int
 1106: xmlUCSIsBopomofo(int code) {
 1107:     return(((code >= 0x3100) && (code <= 0x312F)));
 1108: }
 1109: 
 1110: /**
 1111:  * xmlUCSIsBopomofoExtended:
 1112:  * @code: UCS code point
 1113:  *
 1114:  * Check whether the character is part of BopomofoExtended UCS Block
 1115:  *
 1116:  * Returns 1 if true 0 otherwise
 1117:  */
 1118: int
 1119: xmlUCSIsBopomofoExtended(int code) {
 1120:     return(((code >= 0x31A0) && (code <= 0x31BF)));
 1121: }
 1122: 
 1123: /**
 1124:  * xmlUCSIsBoxDrawing:
 1125:  * @code: UCS code point
 1126:  *
 1127:  * Check whether the character is part of BoxDrawing UCS Block
 1128:  *
 1129:  * Returns 1 if true 0 otherwise
 1130:  */
 1131: int
 1132: xmlUCSIsBoxDrawing(int code) {
 1133:     return(((code >= 0x2500) && (code <= 0x257F)));
 1134: }
 1135: 
 1136: /**
 1137:  * xmlUCSIsBraillePatterns:
 1138:  * @code: UCS code point
 1139:  *
 1140:  * Check whether the character is part of BraillePatterns UCS Block
 1141:  *
 1142:  * Returns 1 if true 0 otherwise
 1143:  */
 1144: int
 1145: xmlUCSIsBraillePatterns(int code) {
 1146:     return(((code >= 0x2800) && (code <= 0x28FF)));
 1147: }
 1148: 
 1149: /**
 1150:  * xmlUCSIsBuhid:
 1151:  * @code: UCS code point
 1152:  *
 1153:  * Check whether the character is part of Buhid UCS Block
 1154:  *
 1155:  * Returns 1 if true 0 otherwise
 1156:  */
 1157: int
 1158: xmlUCSIsBuhid(int code) {
 1159:     return(((code >= 0x1740) && (code <= 0x175F)));
 1160: }
 1161: 
 1162: /**
 1163:  * xmlUCSIsByzantineMusicalSymbols:
 1164:  * @code: UCS code point
 1165:  *
 1166:  * Check whether the character is part of ByzantineMusicalSymbols UCS Block
 1167:  *
 1168:  * Returns 1 if true 0 otherwise
 1169:  */
 1170: int
 1171: xmlUCSIsByzantineMusicalSymbols(int code) {
 1172:     return(((code >= 0x1D000) && (code <= 0x1D0FF)));
 1173: }
 1174: 
 1175: /**
 1176:  * xmlUCSIsCJKCompatibility:
 1177:  * @code: UCS code point
 1178:  *
 1179:  * Check whether the character is part of CJKCompatibility UCS Block
 1180:  *
 1181:  * Returns 1 if true 0 otherwise
 1182:  */
 1183: int
 1184: xmlUCSIsCJKCompatibility(int code) {
 1185:     return(((code >= 0x3300) && (code <= 0x33FF)));
 1186: }
 1187: 
 1188: /**
 1189:  * xmlUCSIsCJKCompatibilityForms:
 1190:  * @code: UCS code point
 1191:  *
 1192:  * Check whether the character is part of CJKCompatibilityForms UCS Block
 1193:  *
 1194:  * Returns 1 if true 0 otherwise
 1195:  */
 1196: int
 1197: xmlUCSIsCJKCompatibilityForms(int code) {
 1198:     return(((code >= 0xFE30) && (code <= 0xFE4F)));
 1199: }
 1200: 
 1201: /**
 1202:  * xmlUCSIsCJKCompatibilityIdeographs:
 1203:  * @code: UCS code point
 1204:  *
 1205:  * Check whether the character is part of CJKCompatibilityIdeographs UCS Block
 1206:  *
 1207:  * Returns 1 if true 0 otherwise
 1208:  */
 1209: int
 1210: xmlUCSIsCJKCompatibilityIdeographs(int code) {
 1211:     return(((code >= 0xF900) && (code <= 0xFAFF)));
 1212: }
 1213: 
 1214: /**
 1215:  * xmlUCSIsCJKCompatibilityIdeographsSupplement:
 1216:  * @code: UCS code point
 1217:  *
 1218:  * Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block
 1219:  *
 1220:  * Returns 1 if true 0 otherwise
 1221:  */
 1222: int
 1223: xmlUCSIsCJKCompatibilityIdeographsSupplement(int code) {
 1224:     return(((code >= 0x2F800) && (code <= 0x2FA1F)));
 1225: }
 1226: 
 1227: /**
 1228:  * xmlUCSIsCJKRadicalsSupplement:
 1229:  * @code: UCS code point
 1230:  *
 1231:  * Check whether the character is part of CJKRadicalsSupplement UCS Block
 1232:  *
 1233:  * Returns 1 if true 0 otherwise
 1234:  */
 1235: int
 1236: xmlUCSIsCJKRadicalsSupplement(int code) {
 1237:     return(((code >= 0x2E80) && (code <= 0x2EFF)));
 1238: }
 1239: 
 1240: /**
 1241:  * xmlUCSIsCJKSymbolsandPunctuation:
 1242:  * @code: UCS code point
 1243:  *
 1244:  * Check whether the character is part of CJKSymbolsandPunctuation UCS Block
 1245:  *
 1246:  * Returns 1 if true 0 otherwise
 1247:  */
 1248: int
 1249: xmlUCSIsCJKSymbolsandPunctuation(int code) {
 1250:     return(((code >= 0x3000) && (code <= 0x303F)));
 1251: }
 1252: 
 1253: /**
 1254:  * xmlUCSIsCJKUnifiedIdeographs:
 1255:  * @code: UCS code point
 1256:  *
 1257:  * Check whether the character is part of CJKUnifiedIdeographs UCS Block
 1258:  *
 1259:  * Returns 1 if true 0 otherwise
 1260:  */
 1261: int
 1262: xmlUCSIsCJKUnifiedIdeographs(int code) {
 1263:     return(((code >= 0x4E00) && (code <= 0x9FFF)));
 1264: }
 1265: 
 1266: /**
 1267:  * xmlUCSIsCJKUnifiedIdeographsExtensionA:
 1268:  * @code: UCS code point
 1269:  *
 1270:  * Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block
 1271:  *
 1272:  * Returns 1 if true 0 otherwise
 1273:  */
 1274: int
 1275: xmlUCSIsCJKUnifiedIdeographsExtensionA(int code) {
 1276:     return(((code >= 0x3400) && (code <= 0x4DBF)));
 1277: }
 1278: 
 1279: /**
 1280:  * xmlUCSIsCJKUnifiedIdeographsExtensionB:
 1281:  * @code: UCS code point
 1282:  *
 1283:  * Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block
 1284:  *
 1285:  * Returns 1 if true 0 otherwise
 1286:  */
 1287: int
 1288: xmlUCSIsCJKUnifiedIdeographsExtensionB(int code) {
 1289:     return(((code >= 0x20000) && (code <= 0x2A6DF)));
 1290: }
 1291: 
 1292: /**
 1293:  * xmlUCSIsCherokee:
 1294:  * @code: UCS code point
 1295:  *
 1296:  * Check whether the character is part of Cherokee UCS Block
 1297:  *
 1298:  * Returns 1 if true 0 otherwise
 1299:  */
 1300: int
 1301: xmlUCSIsCherokee(int code) {
 1302:     return(((code >= 0x13A0) && (code <= 0x13FF)));
 1303: }
 1304: 
 1305: /**
 1306:  * xmlUCSIsCombiningDiacriticalMarks:
 1307:  * @code: UCS code point
 1308:  *
 1309:  * Check whether the character is part of CombiningDiacriticalMarks UCS Block
 1310:  *
 1311:  * Returns 1 if true 0 otherwise
 1312:  */
 1313: int
 1314: xmlUCSIsCombiningDiacriticalMarks(int code) {
 1315:     return(((code >= 0x0300) && (code <= 0x036F)));
 1316: }
 1317: 
 1318: /**
 1319:  * xmlUCSIsCombiningDiacriticalMarksforSymbols:
 1320:  * @code: UCS code point
 1321:  *
 1322:  * Check whether the character is part of CombiningDiacriticalMarksforSymbols UCS Block
 1323:  *
 1324:  * Returns 1 if true 0 otherwise
 1325:  */
 1326: int
 1327: xmlUCSIsCombiningDiacriticalMarksforSymbols(int code) {
 1328:     return(((code >= 0x20D0) && (code <= 0x20FF)));
 1329: }
 1330: 
 1331: /**
 1332:  * xmlUCSIsCombiningHalfMarks:
 1333:  * @code: UCS code point
 1334:  *
 1335:  * Check whether the character is part of CombiningHalfMarks UCS Block
 1336:  *
 1337:  * Returns 1 if true 0 otherwise
 1338:  */
 1339: int
 1340: xmlUCSIsCombiningHalfMarks(int code) {
 1341:     return(((code >= 0xFE20) && (code <= 0xFE2F)));
 1342: }
 1343: 
 1344: /**
 1345:  * xmlUCSIsCombiningMarksforSymbols:
 1346:  * @code: UCS code point
 1347:  *
 1348:  * Check whether the character is part of CombiningMarksforSymbols UCS Block
 1349:  *
 1350:  * Returns 1 if true 0 otherwise
 1351:  */
 1352: int
 1353: xmlUCSIsCombiningMarksforSymbols(int code) {
 1354:     return(((code >= 0x20D0) && (code <= 0x20FF)));
 1355: }
 1356: 
 1357: /**
 1358:  * xmlUCSIsControlPictures:
 1359:  * @code: UCS code point
 1360:  *
 1361:  * Check whether the character is part of ControlPictures UCS Block
 1362:  *
 1363:  * Returns 1 if true 0 otherwise
 1364:  */
 1365: int
 1366: xmlUCSIsControlPictures(int code) {
 1367:     return(((code >= 0x2400) && (code <= 0x243F)));
 1368: }
 1369: 
 1370: /**
 1371:  * xmlUCSIsCurrencySymbols:
 1372:  * @code: UCS code point
 1373:  *
 1374:  * Check whether the character is part of CurrencySymbols UCS Block
 1375:  *
 1376:  * Returns 1 if true 0 otherwise
 1377:  */
 1378: int
 1379: xmlUCSIsCurrencySymbols(int code) {
 1380:     return(((code >= 0x20A0) && (code <= 0x20CF)));
 1381: }
 1382: 
 1383: /**
 1384:  * xmlUCSIsCypriotSyllabary:
 1385:  * @code: UCS code point
 1386:  *
 1387:  * Check whether the character is part of CypriotSyllabary UCS Block
 1388:  *
 1389:  * Returns 1 if true 0 otherwise
 1390:  */
 1391: int
 1392: xmlUCSIsCypriotSyllabary(int code) {
 1393:     return(((code >= 0x10800) && (code <= 0x1083F)));
 1394: }
 1395: 
 1396: /**
 1397:  * xmlUCSIsCyrillic:
 1398:  * @code: UCS code point
 1399:  *
 1400:  * Check whether the character is part of Cyrillic UCS Block
 1401:  *
 1402:  * Returns 1 if true 0 otherwise
 1403:  */
 1404: int
 1405: xmlUCSIsCyrillic(int code) {
 1406:     return(((code >= 0x0400) && (code <= 0x04FF)));
 1407: }
 1408: 
 1409: /**
 1410:  * xmlUCSIsCyrillicSupplement:
 1411:  * @code: UCS code point
 1412:  *
 1413:  * Check whether the character is part of CyrillicSupplement UCS Block
 1414:  *
 1415:  * Returns 1 if true 0 otherwise
 1416:  */
 1417: int
 1418: xmlUCSIsCyrillicSupplement(int code) {
 1419:     return(((code >= 0x0500) && (code <= 0x052F)));
 1420: }
 1421: 
 1422: /**
 1423:  * xmlUCSIsDeseret:
 1424:  * @code: UCS code point
 1425:  *
 1426:  * Check whether the character is part of Deseret UCS Block
 1427:  *
 1428:  * Returns 1 if true 0 otherwise
 1429:  */
 1430: int
 1431: xmlUCSIsDeseret(int code) {
 1432:     return(((code >= 0x10400) && (code <= 0x1044F)));
 1433: }
 1434: 
 1435: /**
 1436:  * xmlUCSIsDevanagari:
 1437:  * @code: UCS code point
 1438:  *
 1439:  * Check whether the character is part of Devanagari UCS Block
 1440:  *
 1441:  * Returns 1 if true 0 otherwise
 1442:  */
 1443: int
 1444: xmlUCSIsDevanagari(int code) {
 1445:     return(((code >= 0x0900) && (code <= 0x097F)));
 1446: }
 1447: 
 1448: /**
 1449:  * xmlUCSIsDingbats:
 1450:  * @code: UCS code point
 1451:  *
 1452:  * Check whether the character is part of Dingbats UCS Block
 1453:  *
 1454:  * Returns 1 if true 0 otherwise
 1455:  */
 1456: int
 1457: xmlUCSIsDingbats(int code) {
 1458:     return(((code >= 0x2700) && (code <= 0x27BF)));
 1459: }
 1460: 
 1461: /**
 1462:  * xmlUCSIsEnclosedAlphanumerics:
 1463:  * @code: UCS code point
 1464:  *
 1465:  * Check whether the character is part of EnclosedAlphanumerics UCS Block
 1466:  *
 1467:  * Returns 1 if true 0 otherwise
 1468:  */
 1469: int
 1470: xmlUCSIsEnclosedAlphanumerics(int code) {
 1471:     return(((code >= 0x2460) && (code <= 0x24FF)));
 1472: }
 1473: 
 1474: /**
 1475:  * xmlUCSIsEnclosedCJKLettersandMonths:
 1476:  * @code: UCS code point
 1477:  *
 1478:  * Check whether the character is part of EnclosedCJKLettersandMonths UCS Block
 1479:  *
 1480:  * Returns 1 if true 0 otherwise
 1481:  */
 1482: int
 1483: xmlUCSIsEnclosedCJKLettersandMonths(int code) {
 1484:     return(((code >= 0x3200) && (code <= 0x32FF)));
 1485: }
 1486: 
 1487: /**
 1488:  * xmlUCSIsEthiopic:
 1489:  * @code: UCS code point
 1490:  *
 1491:  * Check whether the character is part of Ethiopic UCS Block
 1492:  *
 1493:  * Returns 1 if true 0 otherwise
 1494:  */
 1495: int
 1496: xmlUCSIsEthiopic(int code) {
 1497:     return(((code >= 0x1200) && (code <= 0x137F)));
 1498: }
 1499: 
 1500: /**
 1501:  * xmlUCSIsGeneralPunctuation:
 1502:  * @code: UCS code point
 1503:  *
 1504:  * Check whether the character is part of GeneralPunctuation UCS Block
 1505:  *
 1506:  * Returns 1 if true 0 otherwise
 1507:  */
 1508: int
 1509: xmlUCSIsGeneralPunctuation(int code) {
 1510:     return(((code >= 0x2000) && (code <= 0x206F)));
 1511: }
 1512: 
 1513: /**
 1514:  * xmlUCSIsGeometricShapes:
 1515:  * @code: UCS code point
 1516:  *
 1517:  * Check whether the character is part of GeometricShapes UCS Block
 1518:  *
 1519:  * Returns 1 if true 0 otherwise
 1520:  */
 1521: int
 1522: xmlUCSIsGeometricShapes(int code) {
 1523:     return(((code >= 0x25A0) && (code <= 0x25FF)));
 1524: }
 1525: 
 1526: /**
 1527:  * xmlUCSIsGeorgian:
 1528:  * @code: UCS code point
 1529:  *
 1530:  * Check whether the character is part of Georgian UCS Block
 1531:  *
 1532:  * Returns 1 if true 0 otherwise
 1533:  */
 1534: int
 1535: xmlUCSIsGeorgian(int code) {
 1536:     return(((code >= 0x10A0) && (code <= 0x10FF)));
 1537: }
 1538: 
 1539: /**
 1540:  * xmlUCSIsGothic:
 1541:  * @code: UCS code point
 1542:  *
 1543:  * Check whether the character is part of Gothic UCS Block
 1544:  *
 1545:  * Returns 1 if true 0 otherwise
 1546:  */
 1547: int
 1548: xmlUCSIsGothic(int code) {
 1549:     return(((code >= 0x10330) && (code <= 0x1034F)));
 1550: }
 1551: 
 1552: /**
 1553:  * xmlUCSIsGreek:
 1554:  * @code: UCS code point
 1555:  *
 1556:  * Check whether the character is part of Greek UCS Block
 1557:  *
 1558:  * Returns 1 if true 0 otherwise
 1559:  */
 1560: int
 1561: xmlUCSIsGreek(int code) {
 1562:     return(((code >= 0x0370) && (code <= 0x03FF)));
 1563: }
 1564: 
 1565: /**
 1566:  * xmlUCSIsGreekExtended:
 1567:  * @code: UCS code point
 1568:  *
 1569:  * Check whether the character is part of GreekExtended UCS Block
 1570:  *
 1571:  * Returns 1 if true 0 otherwise
 1572:  */
 1573: int
 1574: xmlUCSIsGreekExtended(int code) {
 1575:     return(((code >= 0x1F00) && (code <= 0x1FFF)));
 1576: }
 1577: 
 1578: /**
 1579:  * xmlUCSIsGreekandCoptic:
 1580:  * @code: UCS code point
 1581:  *
 1582:  * Check whether the character is part of GreekandCoptic UCS Block
 1583:  *
 1584:  * Returns 1 if true 0 otherwise
 1585:  */
 1586: int
 1587: xmlUCSIsGreekandCoptic(int code) {
 1588:     return(((code >= 0x0370) && (code <= 0x03FF)));
 1589: }
 1590: 
 1591: /**
 1592:  * xmlUCSIsGujarati:
 1593:  * @code: UCS code point
 1594:  *
 1595:  * Check whether the character is part of Gujarati UCS Block
 1596:  *
 1597:  * Returns 1 if true 0 otherwise
 1598:  */
 1599: int
 1600: xmlUCSIsGujarati(int code) {
 1601:     return(((code >= 0x0A80) && (code <= 0x0AFF)));
 1602: }
 1603: 
 1604: /**
 1605:  * xmlUCSIsGurmukhi:
 1606:  * @code: UCS code point
 1607:  *
 1608:  * Check whether the character is part of Gurmukhi UCS Block
 1609:  *
 1610:  * Returns 1 if true 0 otherwise
 1611:  */
 1612: int
 1613: xmlUCSIsGurmukhi(int code) {
 1614:     return(((code >= 0x0A00) && (code <= 0x0A7F)));
 1615: }
 1616: 
 1617: /**
 1618:  * xmlUCSIsHalfwidthandFullwidthForms:
 1619:  * @code: UCS code point
 1620:  *
 1621:  * Check whether the character is part of HalfwidthandFullwidthForms UCS Block
 1622:  *
 1623:  * Returns 1 if true 0 otherwise
 1624:  */
 1625: int
 1626: xmlUCSIsHalfwidthandFullwidthForms(int code) {
 1627:     return(((code >= 0xFF00) && (code <= 0xFFEF)));
 1628: }
 1629: 
 1630: /**
 1631:  * xmlUCSIsHangulCompatibilityJamo:
 1632:  * @code: UCS code point
 1633:  *
 1634:  * Check whether the character is part of HangulCompatibilityJamo UCS Block
 1635:  *
 1636:  * Returns 1 if true 0 otherwise
 1637:  */
 1638: int
 1639: xmlUCSIsHangulCompatibilityJamo(int code) {
 1640:     return(((code >= 0x3130) && (code <= 0x318F)));
 1641: }
 1642: 
 1643: /**
 1644:  * xmlUCSIsHangulJamo:
 1645:  * @code: UCS code point
 1646:  *
 1647:  * Check whether the character is part of HangulJamo UCS Block
 1648:  *
 1649:  * Returns 1 if true 0 otherwise
 1650:  */
 1651: int
 1652: xmlUCSIsHangulJamo(int code) {
 1653:     return(((code >= 0x1100) && (code <= 0x11FF)));
 1654: }
 1655: 
 1656: /**
 1657:  * xmlUCSIsHangulSyllables:
 1658:  * @code: UCS code point
 1659:  *
 1660:  * Check whether the character is part of HangulSyllables UCS Block
 1661:  *
 1662:  * Returns 1 if true 0 otherwise
 1663:  */
 1664: int
 1665: xmlUCSIsHangulSyllables(int code) {
 1666:     return(((code >= 0xAC00) && (code <= 0xD7AF)));
 1667: }
 1668: 
 1669: /**
 1670:  * xmlUCSIsHanunoo:
 1671:  * @code: UCS code point
 1672:  *
 1673:  * Check whether the character is part of Hanunoo UCS Block
 1674:  *
 1675:  * Returns 1 if true 0 otherwise
 1676:  */
 1677: int
 1678: xmlUCSIsHanunoo(int code) {
 1679:     return(((code >= 0x1720) && (code <= 0x173F)));
 1680: }
 1681: 
 1682: /**
 1683:  * xmlUCSIsHebrew:
 1684:  * @code: UCS code point
 1685:  *
 1686:  * Check whether the character is part of Hebrew UCS Block
 1687:  *
 1688:  * Returns 1 if true 0 otherwise
 1689:  */
 1690: int
 1691: xmlUCSIsHebrew(int code) {
 1692:     return(((code >= 0x0590) && (code <= 0x05FF)));
 1693: }
 1694: 
 1695: /**
 1696:  * xmlUCSIsHighPrivateUseSurrogates:
 1697:  * @code: UCS code point
 1698:  *
 1699:  * Check whether the character is part of HighPrivateUseSurrogates UCS Block
 1700:  *
 1701:  * Returns 1 if true 0 otherwise
 1702:  */
 1703: int
 1704: xmlUCSIsHighPrivateUseSurrogates(int code) {
 1705:     return(((code >= 0xDB80) && (code <= 0xDBFF)));
 1706: }
 1707: 
 1708: /**
 1709:  * xmlUCSIsHighSurrogates:
 1710:  * @code: UCS code point
 1711:  *
 1712:  * Check whether the character is part of HighSurrogates UCS Block
 1713:  *
 1714:  * Returns 1 if true 0 otherwise
 1715:  */
 1716: int
 1717: xmlUCSIsHighSurrogates(int code) {
 1718:     return(((code >= 0xD800) && (code <= 0xDB7F)));
 1719: }
 1720: 
 1721: /**
 1722:  * xmlUCSIsHiragana:
 1723:  * @code: UCS code point
 1724:  *
 1725:  * Check whether the character is part of Hiragana UCS Block
 1726:  *
 1727:  * Returns 1 if true 0 otherwise
 1728:  */
 1729: int
 1730: xmlUCSIsHiragana(int code) {
 1731:     return(((code >= 0x3040) && (code <= 0x309F)));
 1732: }
 1733: 
 1734: /**
 1735:  * xmlUCSIsIPAExtensions:
 1736:  * @code: UCS code point
 1737:  *
 1738:  * Check whether the character is part of IPAExtensions UCS Block
 1739:  *
 1740:  * Returns 1 if true 0 otherwise
 1741:  */
 1742: int
 1743: xmlUCSIsIPAExtensions(int code) {
 1744:     return(((code >= 0x0250) && (code <= 0x02AF)));
 1745: }
 1746: 
 1747: /**
 1748:  * xmlUCSIsIdeographicDescriptionCharacters:
 1749:  * @code: UCS code point
 1750:  *
 1751:  * Check whether the character is part of IdeographicDescriptionCharacters UCS Block
 1752:  *
 1753:  * Returns 1 if true 0 otherwise
 1754:  */
 1755: int
 1756: xmlUCSIsIdeographicDescriptionCharacters(int code) {
 1757:     return(((code >= 0x2FF0) && (code <= 0x2FFF)));
 1758: }
 1759: 
 1760: /**
 1761:  * xmlUCSIsKanbun:
 1762:  * @code: UCS code point
 1763:  *
 1764:  * Check whether the character is part of Kanbun UCS Block
 1765:  *
 1766:  * Returns 1 if true 0 otherwise
 1767:  */
 1768: int
 1769: xmlUCSIsKanbun(int code) {
 1770:     return(((code >= 0x3190) && (code <= 0x319F)));
 1771: }
 1772: 
 1773: /**
 1774:  * xmlUCSIsKangxiRadicals:
 1775:  * @code: UCS code point
 1776:  *
 1777:  * Check whether the character is part of KangxiRadicals UCS Block
 1778:  *
 1779:  * Returns 1 if true 0 otherwise
 1780:  */
 1781: int
 1782: xmlUCSIsKangxiRadicals(int code) {
 1783:     return(((code >= 0x2F00) && (code <= 0x2FDF)));
 1784: }
 1785: 
 1786: /**
 1787:  * xmlUCSIsKannada:
 1788:  * @code: UCS code point
 1789:  *
 1790:  * Check whether the character is part of Kannada UCS Block
 1791:  *
 1792:  * Returns 1 if true 0 otherwise
 1793:  */
 1794: int
 1795: xmlUCSIsKannada(int code) {
 1796:     return(((code >= 0x0C80) && (code <= 0x0CFF)));
 1797: }
 1798: 
 1799: /**
 1800:  * xmlUCSIsKatakana:
 1801:  * @code: UCS code point
 1802:  *
 1803:  * Check whether the character is part of Katakana UCS Block
 1804:  *
 1805:  * Returns 1 if true 0 otherwise
 1806:  */
 1807: int
 1808: xmlUCSIsKatakana(int code) {
 1809:     return(((code >= 0x30A0) && (code <= 0x30FF)));
 1810: }
 1811: 
 1812: /**
 1813:  * xmlUCSIsKatakanaPhoneticExtensions:
 1814:  * @code: UCS code point
 1815:  *
 1816:  * Check whether the character is part of KatakanaPhoneticExtensions UCS Block
 1817:  *
 1818:  * Returns 1 if true 0 otherwise
 1819:  */
 1820: int
 1821: xmlUCSIsKatakanaPhoneticExtensions(int code) {
 1822:     return(((code >= 0x31F0) && (code <= 0x31FF)));
 1823: }
 1824: 
 1825: /**
 1826:  * xmlUCSIsKhmer:
 1827:  * @code: UCS code point
 1828:  *
 1829:  * Check whether the character is part of Khmer UCS Block
 1830:  *
 1831:  * Returns 1 if true 0 otherwise
 1832:  */
 1833: int
 1834: xmlUCSIsKhmer(int code) {
 1835:     return(((code >= 0x1780) && (code <= 0x17FF)));
 1836: }
 1837: 
 1838: /**
 1839:  * xmlUCSIsKhmerSymbols:
 1840:  * @code: UCS code point
 1841:  *
 1842:  * Check whether the character is part of KhmerSymbols UCS Block
 1843:  *
 1844:  * Returns 1 if true 0 otherwise
 1845:  */
 1846: int
 1847: xmlUCSIsKhmerSymbols(int code) {
 1848:     return(((code >= 0x19E0) && (code <= 0x19FF)));
 1849: }
 1850: 
 1851: /**
 1852:  * xmlUCSIsLao:
 1853:  * @code: UCS code point
 1854:  *
 1855:  * Check whether the character is part of Lao UCS Block
 1856:  *
 1857:  * Returns 1 if true 0 otherwise
 1858:  */
 1859: int
 1860: xmlUCSIsLao(int code) {
 1861:     return(((code >= 0x0E80) && (code <= 0x0EFF)));
 1862: }
 1863: 
 1864: /**
 1865:  * xmlUCSIsLatin1Supplement:
 1866:  * @code: UCS code point
 1867:  *
 1868:  * Check whether the character is part of Latin-1Supplement UCS Block
 1869:  *
 1870:  * Returns 1 if true 0 otherwise
 1871:  */
 1872: int
 1873: xmlUCSIsLatin1Supplement(int code) {
 1874:     return(((code >= 0x0080) && (code <= 0x00FF)));
 1875: }
 1876: 
 1877: /**
 1878:  * xmlUCSIsLatinExtendedA:
 1879:  * @code: UCS code point
 1880:  *
 1881:  * Check whether the character is part of LatinExtended-A UCS Block
 1882:  *
 1883:  * Returns 1 if true 0 otherwise
 1884:  */
 1885: int
 1886: xmlUCSIsLatinExtendedA(int code) {
 1887:     return(((code >= 0x0100) && (code <= 0x017F)));
 1888: }
 1889: 
 1890: /**
 1891:  * xmlUCSIsLatinExtendedB:
 1892:  * @code: UCS code point
 1893:  *
 1894:  * Check whether the character is part of LatinExtended-B UCS Block
 1895:  *
 1896:  * Returns 1 if true 0 otherwise
 1897:  */
 1898: int
 1899: xmlUCSIsLatinExtendedB(int code) {
 1900:     return(((code >= 0x0180) && (code <= 0x024F)));
 1901: }
 1902: 
 1903: /**
 1904:  * xmlUCSIsLatinExtendedAdditional:
 1905:  * @code: UCS code point
 1906:  *
 1907:  * Check whether the character is part of LatinExtendedAdditional UCS Block
 1908:  *
 1909:  * Returns 1 if true 0 otherwise
 1910:  */
 1911: int
 1912: xmlUCSIsLatinExtendedAdditional(int code) {
 1913:     return(((code >= 0x1E00) && (code <= 0x1EFF)));
 1914: }
 1915: 
 1916: /**
 1917:  * xmlUCSIsLetterlikeSymbols:
 1918:  * @code: UCS code point
 1919:  *
 1920:  * Check whether the character is part of LetterlikeSymbols UCS Block
 1921:  *
 1922:  * Returns 1 if true 0 otherwise
 1923:  */
 1924: int
 1925: xmlUCSIsLetterlikeSymbols(int code) {
 1926:     return(((code >= 0x2100) && (code <= 0x214F)));
 1927: }
 1928: 
 1929: /**
 1930:  * xmlUCSIsLimbu:
 1931:  * @code: UCS code point
 1932:  *
 1933:  * Check whether the character is part of Limbu UCS Block
 1934:  *
 1935:  * Returns 1 if true 0 otherwise
 1936:  */
 1937: int
 1938: xmlUCSIsLimbu(int code) {
 1939:     return(((code >= 0x1900) && (code <= 0x194F)));
 1940: }
 1941: 
 1942: /**
 1943:  * xmlUCSIsLinearBIdeograms:
 1944:  * @code: UCS code point
 1945:  *
 1946:  * Check whether the character is part of LinearBIdeograms UCS Block
 1947:  *
 1948:  * Returns 1 if true 0 otherwise
 1949:  */
 1950: int
 1951: xmlUCSIsLinearBIdeograms(int code) {
 1952:     return(((code >= 0x10080) && (code <= 0x100FF)));
 1953: }
 1954: 
 1955: /**
 1956:  * xmlUCSIsLinearBSyllabary:
 1957:  * @code: UCS code point
 1958:  *
 1959:  * Check whether the character is part of LinearBSyllabary UCS Block
 1960:  *
 1961:  * Returns 1 if true 0 otherwise
 1962:  */
 1963: int
 1964: xmlUCSIsLinearBSyllabary(int code) {
 1965:     return(((code >= 0x10000) && (code <= 0x1007F)));
 1966: }
 1967: 
 1968: /**
 1969:  * xmlUCSIsLowSurrogates:
 1970:  * @code: UCS code point
 1971:  *
 1972:  * Check whether the character is part of LowSurrogates UCS Block
 1973:  *
 1974:  * Returns 1 if true 0 otherwise
 1975:  */
 1976: int
 1977: xmlUCSIsLowSurrogates(int code) {
 1978:     return(((code >= 0xDC00) && (code <= 0xDFFF)));
 1979: }
 1980: 
 1981: /**
 1982:  * xmlUCSIsMalayalam:
 1983:  * @code: UCS code point
 1984:  *
 1985:  * Check whether the character is part of Malayalam UCS Block
 1986:  *
 1987:  * Returns 1 if true 0 otherwise
 1988:  */
 1989: int
 1990: xmlUCSIsMalayalam(int code) {
 1991:     return(((code >= 0x0D00) && (code <= 0x0D7F)));
 1992: }
 1993: 
 1994: /**
 1995:  * xmlUCSIsMathematicalAlphanumericSymbols:
 1996:  * @code: UCS code point
 1997:  *
 1998:  * Check whether the character is part of MathematicalAlphanumericSymbols UCS Block
 1999:  *
 2000:  * Returns 1 if true 0 otherwise
 2001:  */
 2002: int
 2003: xmlUCSIsMathematicalAlphanumericSymbols(int code) {
 2004:     return(((code >= 0x1D400) && (code <= 0x1D7FF)));
 2005: }
 2006: 
 2007: /**
 2008:  * xmlUCSIsMathematicalOperators:
 2009:  * @code: UCS code point
 2010:  *
 2011:  * Check whether the character is part of MathematicalOperators UCS Block
 2012:  *
 2013:  * Returns 1 if true 0 otherwise
 2014:  */
 2015: int
 2016: xmlUCSIsMathematicalOperators(int code) {
 2017:     return(((code >= 0x2200) && (code <= 0x22FF)));
 2018: }
 2019: 
 2020: /**
 2021:  * xmlUCSIsMiscellaneousMathematicalSymbolsA:
 2022:  * @code: UCS code point
 2023:  *
 2024:  * Check whether the character is part of MiscellaneousMathematicalSymbols-A UCS Block
 2025:  *
 2026:  * Returns 1 if true 0 otherwise
 2027:  */
 2028: int
 2029: xmlUCSIsMiscellaneousMathematicalSymbolsA(int code) {
 2030:     return(((code >= 0x27C0) && (code <= 0x27EF)));
 2031: }
 2032: 
 2033: /**
 2034:  * xmlUCSIsMiscellaneousMathematicalSymbolsB:
 2035:  * @code: UCS code point
 2036:  *
 2037:  * Check whether the character is part of MiscellaneousMathematicalSymbols-B UCS Block
 2038:  *
 2039:  * Returns 1 if true 0 otherwise
 2040:  */
 2041: int
 2042: xmlUCSIsMiscellaneousMathematicalSymbolsB(int code) {
 2043:     return(((code >= 0x2980) && (code <= 0x29FF)));
 2044: }
 2045: 
 2046: /**
 2047:  * xmlUCSIsMiscellaneousSymbols:
 2048:  * @code: UCS code point
 2049:  *
 2050:  * Check whether the character is part of MiscellaneousSymbols UCS Block
 2051:  *
 2052:  * Returns 1 if true 0 otherwise
 2053:  */
 2054: int
 2055: xmlUCSIsMiscellaneousSymbols(int code) {
 2056:     return(((code >= 0x2600) && (code <= 0x26FF)));
 2057: }
 2058: 
 2059: /**
 2060:  * xmlUCSIsMiscellaneousSymbolsandArrows:
 2061:  * @code: UCS code point
 2062:  *
 2063:  * Check whether the character is part of MiscellaneousSymbolsandArrows UCS Block
 2064:  *
 2065:  * Returns 1 if true 0 otherwise
 2066:  */
 2067: int
 2068: xmlUCSIsMiscellaneousSymbolsandArrows(int code) {
 2069:     return(((code >= 0x2B00) && (code <= 0x2BFF)));
 2070: }
 2071: 
 2072: /**
 2073:  * xmlUCSIsMiscellaneousTechnical:
 2074:  * @code: UCS code point
 2075:  *
 2076:  * Check whether the character is part of MiscellaneousTechnical UCS Block
 2077:  *
 2078:  * Returns 1 if true 0 otherwise
 2079:  */
 2080: int
 2081: xmlUCSIsMiscellaneousTechnical(int code) {
 2082:     return(((code >= 0x2300) && (code <= 0x23FF)));
 2083: }
 2084: 
 2085: /**
 2086:  * xmlUCSIsMongolian:
 2087:  * @code: UCS code point
 2088:  *
 2089:  * Check whether the character is part of Mongolian UCS Block
 2090:  *
 2091:  * Returns 1 if true 0 otherwise
 2092:  */
 2093: int
 2094: xmlUCSIsMongolian(int code) {
 2095:     return(((code >= 0x1800) && (code <= 0x18AF)));
 2096: }
 2097: 
 2098: /**
 2099:  * xmlUCSIsMusicalSymbols:
 2100:  * @code: UCS code point
 2101:  *
 2102:  * Check whether the character is part of MusicalSymbols UCS Block
 2103:  *
 2104:  * Returns 1 if true 0 otherwise
 2105:  */
 2106: int
 2107: xmlUCSIsMusicalSymbols(int code) {
 2108:     return(((code >= 0x1D100) && (code <= 0x1D1FF)));
 2109: }
 2110: 
 2111: /**
 2112:  * xmlUCSIsMyanmar:
 2113:  * @code: UCS code point
 2114:  *
 2115:  * Check whether the character is part of Myanmar UCS Block
 2116:  *
 2117:  * Returns 1 if true 0 otherwise
 2118:  */
 2119: int
 2120: xmlUCSIsMyanmar(int code) {
 2121:     return(((code >= 0x1000) && (code <= 0x109F)));
 2122: }
 2123: 
 2124: /**
 2125:  * xmlUCSIsNumberForms:
 2126:  * @code: UCS code point
 2127:  *
 2128:  * Check whether the character is part of NumberForms UCS Block
 2129:  *
 2130:  * Returns 1 if true 0 otherwise
 2131:  */
 2132: int
 2133: xmlUCSIsNumberForms(int code) {
 2134:     return(((code >= 0x2150) && (code <= 0x218F)));
 2135: }
 2136: 
 2137: /**
 2138:  * xmlUCSIsOgham:
 2139:  * @code: UCS code point
 2140:  *
 2141:  * Check whether the character is part of Ogham UCS Block
 2142:  *
 2143:  * Returns 1 if true 0 otherwise
 2144:  */
 2145: int
 2146: xmlUCSIsOgham(int code) {
 2147:     return(((code >= 0x1680) && (code <= 0x169F)));
 2148: }
 2149: 
 2150: /**
 2151:  * xmlUCSIsOldItalic:
 2152:  * @code: UCS code point
 2153:  *
 2154:  * Check whether the character is part of OldItalic UCS Block
 2155:  *
 2156:  * Returns 1 if true 0 otherwise
 2157:  */
 2158: int
 2159: xmlUCSIsOldItalic(int code) {
 2160:     return(((code >= 0x10300) && (code <= 0x1032F)));
 2161: }
 2162: 
 2163: /**
 2164:  * xmlUCSIsOpticalCharacterRecognition:
 2165:  * @code: UCS code point
 2166:  *
 2167:  * Check whether the character is part of OpticalCharacterRecognition UCS Block
 2168:  *
 2169:  * Returns 1 if true 0 otherwise
 2170:  */
 2171: int
 2172: xmlUCSIsOpticalCharacterRecognition(int code) {
 2173:     return(((code >= 0x2440) && (code <= 0x245F)));
 2174: }
 2175: 
 2176: /**
 2177:  * xmlUCSIsOriya:
 2178:  * @code: UCS code point
 2179:  *
 2180:  * Check whether the character is part of Oriya UCS Block
 2181:  *
 2182:  * Returns 1 if true 0 otherwise
 2183:  */
 2184: int
 2185: xmlUCSIsOriya(int code) {
 2186:     return(((code >= 0x0B00) && (code <= 0x0B7F)));
 2187: }
 2188: 
 2189: /**
 2190:  * xmlUCSIsOsmanya:
 2191:  * @code: UCS code point
 2192:  *
 2193:  * Check whether the character is part of Osmanya UCS Block
 2194:  *
 2195:  * Returns 1 if true 0 otherwise
 2196:  */
 2197: int
 2198: xmlUCSIsOsmanya(int code) {
 2199:     return(((code >= 0x10480) && (code <= 0x104AF)));
 2200: }
 2201: 
 2202: /**
 2203:  * xmlUCSIsPhoneticExtensions:
 2204:  * @code: UCS code point
 2205:  *
 2206:  * Check whether the character is part of PhoneticExtensions UCS Block
 2207:  *
 2208:  * Returns 1 if true 0 otherwise
 2209:  */
 2210: int
 2211: xmlUCSIsPhoneticExtensions(int code) {
 2212:     return(((code >= 0x1D00) && (code <= 0x1D7F)));
 2213: }
 2214: 
 2215: /**
 2216:  * xmlUCSIsPrivateUse:
 2217:  * @code: UCS code point
 2218:  *
 2219:  * Check whether the character is part of PrivateUse UCS Block
 2220:  *
 2221:  * Returns 1 if true 0 otherwise
 2222:  */
 2223: int
 2224: xmlUCSIsPrivateUse(int code) {
 2225:     return(((code >= 0xE000) && (code <= 0xF8FF)) ||
 2226:            ((code >= 0xF0000) && (code <= 0xFFFFF)) ||
 2227:            ((code >= 0x100000) && (code <= 0x10FFFF)));
 2228: }
 2229: 
 2230: /**
 2231:  * xmlUCSIsPrivateUseArea:
 2232:  * @code: UCS code point
 2233:  *
 2234:  * Check whether the character is part of PrivateUseArea UCS Block
 2235:  *
 2236:  * Returns 1 if true 0 otherwise
 2237:  */
 2238: int
 2239: xmlUCSIsPrivateUseArea(int code) {
 2240:     return(((code >= 0xE000) && (code <= 0xF8FF)));
 2241: }
 2242: 
 2243: /**
 2244:  * xmlUCSIsRunic:
 2245:  * @code: UCS code point
 2246:  *
 2247:  * Check whether the character is part of Runic UCS Block
 2248:  *
 2249:  * Returns 1 if true 0 otherwise
 2250:  */
 2251: int
 2252: xmlUCSIsRunic(int code) {
 2253:     return(((code >= 0x16A0) && (code <= 0x16FF)));
 2254: }
 2255: 
 2256: /**
 2257:  * xmlUCSIsShavian:
 2258:  * @code: UCS code point
 2259:  *
 2260:  * Check whether the character is part of Shavian UCS Block
 2261:  *
 2262:  * Returns 1 if true 0 otherwise
 2263:  */
 2264: int
 2265: xmlUCSIsShavian(int code) {
 2266:     return(((code >= 0x10450) && (code <= 0x1047F)));
 2267: }
 2268: 
 2269: /**
 2270:  * xmlUCSIsSinhala:
 2271:  * @code: UCS code point
 2272:  *
 2273:  * Check whether the character is part of Sinhala UCS Block
 2274:  *
 2275:  * Returns 1 if true 0 otherwise
 2276:  */
 2277: int
 2278: xmlUCSIsSinhala(int code) {
 2279:     return(((code >= 0x0D80) && (code <= 0x0DFF)));
 2280: }
 2281: 
 2282: /**
 2283:  * xmlUCSIsSmallFormVariants:
 2284:  * @code: UCS code point
 2285:  *
 2286:  * Check whether the character is part of SmallFormVariants UCS Block
 2287:  *
 2288:  * Returns 1 if true 0 otherwise
 2289:  */
 2290: int
 2291: xmlUCSIsSmallFormVariants(int code) {
 2292:     return(((code >= 0xFE50) && (code <= 0xFE6F)));
 2293: }
 2294: 
 2295: /**
 2296:  * xmlUCSIsSpacingModifierLetters:
 2297:  * @code: UCS code point
 2298:  *
 2299:  * Check whether the character is part of SpacingModifierLetters UCS Block
 2300:  *
 2301:  * Returns 1 if true 0 otherwise
 2302:  */
 2303: int
 2304: xmlUCSIsSpacingModifierLetters(int code) {
 2305:     return(((code >= 0x02B0) && (code <= 0x02FF)));
 2306: }
 2307: 
 2308: /**
 2309:  * xmlUCSIsSpecials:
 2310:  * @code: UCS code point
 2311:  *
 2312:  * Check whether the character is part of Specials UCS Block
 2313:  *
 2314:  * Returns 1 if true 0 otherwise
 2315:  */
 2316: int
 2317: xmlUCSIsSpecials(int code) {
 2318:     return(((code >= 0xFFF0) && (code <= 0xFFFF)));
 2319: }
 2320: 
 2321: /**
 2322:  * xmlUCSIsSuperscriptsandSubscripts:
 2323:  * @code: UCS code point
 2324:  *
 2325:  * Check whether the character is part of SuperscriptsandSubscripts UCS Block
 2326:  *
 2327:  * Returns 1 if true 0 otherwise
 2328:  */
 2329: int
 2330: xmlUCSIsSuperscriptsandSubscripts(int code) {
 2331:     return(((code >= 0x2070) && (code <= 0x209F)));
 2332: }
 2333: 
 2334: /**
 2335:  * xmlUCSIsSupplementalArrowsA:
 2336:  * @code: UCS code point
 2337:  *
 2338:  * Check whether the character is part of SupplementalArrows-A UCS Block
 2339:  *
 2340:  * Returns 1 if true 0 otherwise
 2341:  */
 2342: int
 2343: xmlUCSIsSupplementalArrowsA(int code) {
 2344:     return(((code >= 0x27F0) && (code <= 0x27FF)));
 2345: }
 2346: 
 2347: /**
 2348:  * xmlUCSIsSupplementalArrowsB:
 2349:  * @code: UCS code point
 2350:  *
 2351:  * Check whether the character is part of SupplementalArrows-B UCS Block
 2352:  *
 2353:  * Returns 1 if true 0 otherwise
 2354:  */
 2355: int
 2356: xmlUCSIsSupplementalArrowsB(int code) {
 2357:     return(((code >= 0x2900) && (code <= 0x297F)));
 2358: }
 2359: 
 2360: /**
 2361:  * xmlUCSIsSupplementalMathematicalOperators:
 2362:  * @code: UCS code point
 2363:  *
 2364:  * Check whether the character is part of SupplementalMathematicalOperators UCS Block
 2365:  *
 2366:  * Returns 1 if true 0 otherwise
 2367:  */
 2368: int
 2369: xmlUCSIsSupplementalMathematicalOperators(int code) {
 2370:     return(((code >= 0x2A00) && (code <= 0x2AFF)));
 2371: }
 2372: 
 2373: /**
 2374:  * xmlUCSIsSupplementaryPrivateUseAreaA:
 2375:  * @code: UCS code point
 2376:  *
 2377:  * Check whether the character is part of SupplementaryPrivateUseArea-A UCS Block
 2378:  *
 2379:  * Returns 1 if true 0 otherwise
 2380:  */
 2381: int
 2382: xmlUCSIsSupplementaryPrivateUseAreaA(int code) {
 2383:     return(((code >= 0xF0000) && (code <= 0xFFFFF)));
 2384: }
 2385: 
 2386: /**
 2387:  * xmlUCSIsSupplementaryPrivateUseAreaB:
 2388:  * @code: UCS code point
 2389:  *
 2390:  * Check whether the character is part of SupplementaryPrivateUseArea-B UCS Block
 2391:  *
 2392:  * Returns 1 if true 0 otherwise
 2393:  */
 2394: int
 2395: xmlUCSIsSupplementaryPrivateUseAreaB(int code) {
 2396:     return(((code >= 0x100000) && (code <= 0x10FFFF)));
 2397: }
 2398: 
 2399: /**
 2400:  * xmlUCSIsSyriac:
 2401:  * @code: UCS code point
 2402:  *
 2403:  * Check whether the character is part of Syriac UCS Block
 2404:  *
 2405:  * Returns 1 if true 0 otherwise
 2406:  */
 2407: int
 2408: xmlUCSIsSyriac(int code) {
 2409:     return(((code >= 0x0700) && (code <= 0x074F)));
 2410: }
 2411: 
 2412: /**
 2413:  * xmlUCSIsTagalog:
 2414:  * @code: UCS code point
 2415:  *
 2416:  * Check whether the character is part of Tagalog UCS Block
 2417:  *
 2418:  * Returns 1 if true 0 otherwise
 2419:  */
 2420: int
 2421: xmlUCSIsTagalog(int code) {
 2422:     return(((code >= 0x1700) && (code <= 0x171F)));
 2423: }
 2424: 
 2425: /**
 2426:  * xmlUCSIsTagbanwa:
 2427:  * @code: UCS code point
 2428:  *
 2429:  * Check whether the character is part of Tagbanwa UCS Block
 2430:  *
 2431:  * Returns 1 if true 0 otherwise
 2432:  */
 2433: int
 2434: xmlUCSIsTagbanwa(int code) {
 2435:     return(((code >= 0x1760) && (code <= 0x177F)));
 2436: }
 2437: 
 2438: /**
 2439:  * xmlUCSIsTags:
 2440:  * @code: UCS code point
 2441:  *
 2442:  * Check whether the character is part of Tags UCS Block
 2443:  *
 2444:  * Returns 1 if true 0 otherwise
 2445:  */
 2446: int
 2447: xmlUCSIsTags(int code) {
 2448:     return(((code >= 0xE0000) && (code <= 0xE007F)));
 2449: }
 2450: 
 2451: /**
 2452:  * xmlUCSIsTaiLe:
 2453:  * @code: UCS code point
 2454:  *
 2455:  * Check whether the character is part of TaiLe UCS Block
 2456:  *
 2457:  * Returns 1 if true 0 otherwise
 2458:  */
 2459: int
 2460: xmlUCSIsTaiLe(int code) {
 2461:     return(((code >= 0x1950) && (code <= 0x197F)));
 2462: }
 2463: 
 2464: /**
 2465:  * xmlUCSIsTaiXuanJingSymbols:
 2466:  * @code: UCS code point
 2467:  *
 2468:  * Check whether the character is part of TaiXuanJingSymbols UCS Block
 2469:  *
 2470:  * Returns 1 if true 0 otherwise
 2471:  */
 2472: int
 2473: xmlUCSIsTaiXuanJingSymbols(int code) {
 2474:     return(((code >= 0x1D300) && (code <= 0x1D35F)));
 2475: }
 2476: 
 2477: /**
 2478:  * xmlUCSIsTamil:
 2479:  * @code: UCS code point
 2480:  *
 2481:  * Check whether the character is part of Tamil UCS Block
 2482:  *
 2483:  * Returns 1 if true 0 otherwise
 2484:  */
 2485: int
 2486: xmlUCSIsTamil(int code) {
 2487:     return(((code >= 0x0B80) && (code <= 0x0BFF)));
 2488: }
 2489: 
 2490: /**
 2491:  * xmlUCSIsTelugu:
 2492:  * @code: UCS code point
 2493:  *
 2494:  * Check whether the character is part of Telugu UCS Block
 2495:  *
 2496:  * Returns 1 if true 0 otherwise
 2497:  */
 2498: int
 2499: xmlUCSIsTelugu(int code) {
 2500:     return(((code >= 0x0C00) && (code <= 0x0C7F)));
 2501: }
 2502: 
 2503: /**
 2504:  * xmlUCSIsThaana:
 2505:  * @code: UCS code point
 2506:  *
 2507:  * Check whether the character is part of Thaana UCS Block
 2508:  *
 2509:  * Returns 1 if true 0 otherwise
 2510:  */
 2511: int
 2512: xmlUCSIsThaana(int code) {
 2513:     return(((code >= 0x0780) && (code <= 0x07BF)));
 2514: }
 2515: 
 2516: /**
 2517:  * xmlUCSIsThai:
 2518:  * @code: UCS code point
 2519:  *
 2520:  * Check whether the character is part of Thai UCS Block
 2521:  *
 2522:  * Returns 1 if true 0 otherwise
 2523:  */
 2524: int
 2525: xmlUCSIsThai(int code) {
 2526:     return(((code >= 0x0E00) && (code <= 0x0E7F)));
 2527: }
 2528: 
 2529: /**
 2530:  * xmlUCSIsTibetan:
 2531:  * @code: UCS code point
 2532:  *
 2533:  * Check whether the character is part of Tibetan UCS Block
 2534:  *
 2535:  * Returns 1 if true 0 otherwise
 2536:  */
 2537: int
 2538: xmlUCSIsTibetan(int code) {
 2539:     return(((code >= 0x0F00) && (code <= 0x0FFF)));
 2540: }
 2541: 
 2542: /**
 2543:  * xmlUCSIsUgaritic:
 2544:  * @code: UCS code point
 2545:  *
 2546:  * Check whether the character is part of Ugaritic UCS Block
 2547:  *
 2548:  * Returns 1 if true 0 otherwise
 2549:  */
 2550: int
 2551: xmlUCSIsUgaritic(int code) {
 2552:     return(((code >= 0x10380) && (code <= 0x1039F)));
 2553: }
 2554: 
 2555: /**
 2556:  * xmlUCSIsUnifiedCanadianAboriginalSyllabics:
 2557:  * @code: UCS code point
 2558:  *
 2559:  * Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block
 2560:  *
 2561:  * Returns 1 if true 0 otherwise
 2562:  */
 2563: int
 2564: xmlUCSIsUnifiedCanadianAboriginalSyllabics(int code) {
 2565:     return(((code >= 0x1400) && (code <= 0x167F)));
 2566: }
 2567: 
 2568: /**
 2569:  * xmlUCSIsVariationSelectors:
 2570:  * @code: UCS code point
 2571:  *
 2572:  * Check whether the character is part of VariationSelectors UCS Block
 2573:  *
 2574:  * Returns 1 if true 0 otherwise
 2575:  */
 2576: int
 2577: xmlUCSIsVariationSelectors(int code) {
 2578:     return(((code >= 0xFE00) && (code <= 0xFE0F)));
 2579: }
 2580: 
 2581: /**
 2582:  * xmlUCSIsVariationSelectorsSupplement:
 2583:  * @code: UCS code point
 2584:  *
 2585:  * Check whether the character is part of VariationSelectorsSupplement UCS Block
 2586:  *
 2587:  * Returns 1 if true 0 otherwise
 2588:  */
 2589: int
 2590: xmlUCSIsVariationSelectorsSupplement(int code) {
 2591:     return(((code >= 0xE0100) && (code <= 0xE01EF)));
 2592: }
 2593: 
 2594: /**
 2595:  * xmlUCSIsYiRadicals:
 2596:  * @code: UCS code point
 2597:  *
 2598:  * Check whether the character is part of YiRadicals UCS Block
 2599:  *
 2600:  * Returns 1 if true 0 otherwise
 2601:  */
 2602: int
 2603: xmlUCSIsYiRadicals(int code) {
 2604:     return(((code >= 0xA490) && (code <= 0xA4CF)));
 2605: }
 2606: 
 2607: /**
 2608:  * xmlUCSIsYiSyllables:
 2609:  * @code: UCS code point
 2610:  *
 2611:  * Check whether the character is part of YiSyllables UCS Block
 2612:  *
 2613:  * Returns 1 if true 0 otherwise
 2614:  */
 2615: int
 2616: xmlUCSIsYiSyllables(int code) {
 2617:     return(((code >= 0xA000) && (code <= 0xA48F)));
 2618: }
 2619: 
 2620: /**
 2621:  * xmlUCSIsYijingHexagramSymbols:
 2622:  * @code: UCS code point
 2623:  *
 2624:  * Check whether the character is part of YijingHexagramSymbols UCS Block
 2625:  *
 2626:  * Returns 1 if true 0 otherwise
 2627:  */
 2628: int
 2629: xmlUCSIsYijingHexagramSymbols(int code) {
 2630:     return(((code >= 0x4DC0) && (code <= 0x4DFF)));
 2631: }
 2632: 
 2633: /**
 2634:  * xmlUCSIsBlock:
 2635:  * @code: UCS code point
 2636:  * @block: UCS block name
 2637:  *
 2638:  * Check whether the character is part of the UCS Block
 2639:  *
 2640:  * Returns 1 if true, 0 if false and -1 on unknown block
 2641:  */
 2642: int
 2643: xmlUCSIsBlock(int code, const char *block) {
 2644:     xmlIntFunc *func;
 2645: 
 2646:     func = xmlUnicodeLookup(&xmlUnicodeBlockTbl, block);
 2647:     if (func == NULL)
 2648: 	return (-1);
 2649:     return (func(code));
 2650: }
 2651: 
 2652: /**
 2653:  * xmlUCSIsCatC:
 2654:  * @code: UCS code point
 2655:  *
 2656:  * Check whether the character is part of C UCS Category
 2657:  *
 2658:  * Returns 1 if true 0 otherwise
 2659:  */
 2660: int
 2661: xmlUCSIsCatC(int code) {
 2662:     return(xmlCharInRange((unsigned int)code, &xmlCG));
 2663: }
 2664: 
 2665: /**
 2666:  * xmlUCSIsCatCc:
 2667:  * @code: UCS code point
 2668:  *
 2669:  * Check whether the character is part of Cc UCS Category
 2670:  *
 2671:  * Returns 1 if true 0 otherwise
 2672:  */
 2673: int
 2674: xmlUCSIsCatCc(int code) {
 2675:     return(((code >= 0x0) && (code <= 0x1f)) ||
 2676:            ((code >= 0x7f) && (code <= 0x9f)));
 2677: }
 2678: 
 2679: /**
 2680:  * xmlUCSIsCatCf:
 2681:  * @code: UCS code point
 2682:  *
 2683:  * Check whether the character is part of Cf UCS Category
 2684:  *
 2685:  * Returns 1 if true 0 otherwise
 2686:  */
 2687: int
 2688: xmlUCSIsCatCf(int code) {
 2689:     return(xmlCharInRange((unsigned int)code, &xmlCfG));
 2690: }
 2691: 
 2692: /**
 2693:  * xmlUCSIsCatCo:
 2694:  * @code: UCS code point
 2695:  *
 2696:  * Check whether the character is part of Co UCS Category
 2697:  *
 2698:  * Returns 1 if true 0 otherwise
 2699:  */
 2700: int
 2701: xmlUCSIsCatCo(int code) {
 2702:     return((code == 0xe000) ||
 2703:            (code == 0xf8ff) ||
 2704:            (code == 0xf0000) ||
 2705:            (code == 0xffffd) ||
 2706:            (code == 0x100000) ||
 2707:            (code == 0x10fffd));
 2708: }
 2709: 
 2710: /**
 2711:  * xmlUCSIsCatCs:
 2712:  * @code: UCS code point
 2713:  *
 2714:  * Check whether the character is part of Cs UCS Category
 2715:  *
 2716:  * Returns 1 if true 0 otherwise
 2717:  */
 2718: int
 2719: xmlUCSIsCatCs(int code) {
 2720:     return((code == 0xd800) ||
 2721:            ((code >= 0xdb7f) && (code <= 0xdb80)) ||
 2722:            ((code >= 0xdbff) && (code <= 0xdc00)) ||
 2723:            (code == 0xdfff));
 2724: }
 2725: 
 2726: /**
 2727:  * xmlUCSIsCatL:
 2728:  * @code: UCS code point
 2729:  *
 2730:  * Check whether the character is part of L UCS Category
 2731:  *
 2732:  * Returns 1 if true 0 otherwise
 2733:  */
 2734: int
 2735: xmlUCSIsCatL(int code) {
 2736:     return(xmlCharInRange((unsigned int)code, &xmlLG));
 2737: }
 2738: 
 2739: /**
 2740:  * xmlUCSIsCatLl:
 2741:  * @code: UCS code point
 2742:  *
 2743:  * Check whether the character is part of Ll UCS Category
 2744:  *
 2745:  * Returns 1 if true 0 otherwise
 2746:  */
 2747: int
 2748: xmlUCSIsCatLl(int code) {
 2749:     return(xmlCharInRange((unsigned int)code, &xmlLlG));
 2750: }
 2751: 
 2752: /**
 2753:  * xmlUCSIsCatLm:
 2754:  * @code: UCS code point
 2755:  *
 2756:  * Check whether the character is part of Lm UCS Category
 2757:  *
 2758:  * Returns 1 if true 0 otherwise
 2759:  */
 2760: int
 2761: xmlUCSIsCatLm(int code) {
 2762:     return(xmlCharInRange((unsigned int)code, &xmlLmG));
 2763: }
 2764: 
 2765: /**
 2766:  * xmlUCSIsCatLo:
 2767:  * @code: UCS code point
 2768:  *
 2769:  * Check whether the character is part of Lo UCS Category
 2770:  *
 2771:  * Returns 1 if true 0 otherwise
 2772:  */
 2773: int
 2774: xmlUCSIsCatLo(int code) {
 2775:     return(xmlCharInRange((unsigned int)code, &xmlLoG));
 2776: }
 2777: 
 2778: /**
 2779:  * xmlUCSIsCatLt:
 2780:  * @code: UCS code point
 2781:  *
 2782:  * Check whether the character is part of Lt UCS Category
 2783:  *
 2784:  * Returns 1 if true 0 otherwise
 2785:  */
 2786: int
 2787: xmlUCSIsCatLt(int code) {
 2788:     return(xmlCharInRange((unsigned int)code, &xmlLtG));
 2789: }
 2790: 
 2791: /**
 2792:  * xmlUCSIsCatLu:
 2793:  * @code: UCS code point
 2794:  *
 2795:  * Check whether the character is part of Lu UCS Category
 2796:  *
 2797:  * Returns 1 if true 0 otherwise
 2798:  */
 2799: int
 2800: xmlUCSIsCatLu(int code) {
 2801:     return(xmlCharInRange((unsigned int)code, &xmlLuG));
 2802: }
 2803: 
 2804: /**
 2805:  * xmlUCSIsCatM:
 2806:  * @code: UCS code point
 2807:  *
 2808:  * Check whether the character is part of M UCS Category
 2809:  *
 2810:  * Returns 1 if true 0 otherwise
 2811:  */
 2812: int
 2813: xmlUCSIsCatM(int code) {
 2814:     return(xmlCharInRange((unsigned int)code, &xmlMG));
 2815: }
 2816: 
 2817: /**
 2818:  * xmlUCSIsCatMc:
 2819:  * @code: UCS code point
 2820:  *
 2821:  * Check whether the character is part of Mc UCS Category
 2822:  *
 2823:  * Returns 1 if true 0 otherwise
 2824:  */
 2825: int
 2826: xmlUCSIsCatMc(int code) {
 2827:     return(xmlCharInRange((unsigned int)code, &xmlMcG));
 2828: }
 2829: 
 2830: /**
 2831:  * xmlUCSIsCatMe:
 2832:  * @code: UCS code point
 2833:  *
 2834:  * Check whether the character is part of Me UCS Category
 2835:  *
 2836:  * Returns 1 if true 0 otherwise
 2837:  */
 2838: int
 2839: xmlUCSIsCatMe(int code) {
 2840:     return(((code >= 0x488) && (code <= 0x489)) ||
 2841:            (code == 0x6de) ||
 2842:            ((code >= 0x20dd) && (code <= 0x20e0)) ||
 2843:            ((code >= 0x20e2) && (code <= 0x20e4)));
 2844: }
 2845: 
 2846: /**
 2847:  * xmlUCSIsCatMn:
 2848:  * @code: UCS code point
 2849:  *
 2850:  * Check whether the character is part of Mn UCS Category
 2851:  *
 2852:  * Returns 1 if true 0 otherwise
 2853:  */
 2854: int
 2855: xmlUCSIsCatMn(int code) {
 2856:     return(xmlCharInRange((unsigned int)code, &xmlMnG));
 2857: }
 2858: 
 2859: /**
 2860:  * xmlUCSIsCatN:
 2861:  * @code: UCS code point
 2862:  *
 2863:  * Check whether the character is part of N UCS Category
 2864:  *
 2865:  * Returns 1 if true 0 otherwise
 2866:  */
 2867: int
 2868: xmlUCSIsCatN(int code) {
 2869:     return(xmlCharInRange((unsigned int)code, &xmlNG));
 2870: }
 2871: 
 2872: /**
 2873:  * xmlUCSIsCatNd:
 2874:  * @code: UCS code point
 2875:  *
 2876:  * Check whether the character is part of Nd UCS Category
 2877:  *
 2878:  * Returns 1 if true 0 otherwise
 2879:  */
 2880: int
 2881: xmlUCSIsCatNd(int code) {
 2882:     return(xmlCharInRange((unsigned int)code, &xmlNdG));
 2883: }
 2884: 
 2885: /**
 2886:  * xmlUCSIsCatNl:
 2887:  * @code: UCS code point
 2888:  *
 2889:  * Check whether the character is part of Nl UCS Category
 2890:  *
 2891:  * Returns 1 if true 0 otherwise
 2892:  */
 2893: int
 2894: xmlUCSIsCatNl(int code) {
 2895:     return(((code >= 0x16ee) && (code <= 0x16f0)) ||
 2896:            ((code >= 0x2160) && (code <= 0x2183)) ||
 2897:            (code == 0x3007) ||
 2898:            ((code >= 0x3021) && (code <= 0x3029)) ||
 2899:            ((code >= 0x3038) && (code <= 0x303a)) ||
 2900:            (code == 0x1034a));
 2901: }
 2902: 
 2903: /**
 2904:  * xmlUCSIsCatNo:
 2905:  * @code: UCS code point
 2906:  *
 2907:  * Check whether the character is part of No UCS Category
 2908:  *
 2909:  * Returns 1 if true 0 otherwise
 2910:  */
 2911: int
 2912: xmlUCSIsCatNo(int code) {
 2913:     return(xmlCharInRange((unsigned int)code, &xmlNoG));
 2914: }
 2915: 
 2916: /**
 2917:  * xmlUCSIsCatP:
 2918:  * @code: UCS code point
 2919:  *
 2920:  * Check whether the character is part of P UCS Category
 2921:  *
 2922:  * Returns 1 if true 0 otherwise
 2923:  */
 2924: int
 2925: xmlUCSIsCatP(int code) {
 2926:     return(xmlCharInRange((unsigned int)code, &xmlPG));
 2927: }
 2928: 
 2929: /**
 2930:  * xmlUCSIsCatPc:
 2931:  * @code: UCS code point
 2932:  *
 2933:  * Check whether the character is part of Pc UCS Category
 2934:  *
 2935:  * Returns 1 if true 0 otherwise
 2936:  */
 2937: int
 2938: xmlUCSIsCatPc(int code) {
 2939:     return((code == 0x5f) ||
 2940:            ((code >= 0x203f) && (code <= 0x2040)) ||
 2941:            (code == 0x2054) ||
 2942:            (code == 0x30fb) ||
 2943:            ((code >= 0xfe33) && (code <= 0xfe34)) ||
 2944:            ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
 2945:            (code == 0xff3f) ||
 2946:            (code == 0xff65));
 2947: }
 2948: 
 2949: /**
 2950:  * xmlUCSIsCatPd:
 2951:  * @code: UCS code point
 2952:  *
 2953:  * Check whether the character is part of Pd UCS Category
 2954:  *
 2955:  * Returns 1 if true 0 otherwise
 2956:  */
 2957: int
 2958: xmlUCSIsCatPd(int code) {
 2959:     return(xmlCharInRange((unsigned int)code, &xmlPdG));
 2960: }
 2961: 
 2962: /**
 2963:  * xmlUCSIsCatPe:
 2964:  * @code: UCS code point
 2965:  *
 2966:  * Check whether the character is part of Pe UCS Category
 2967:  *
 2968:  * Returns 1 if true 0 otherwise
 2969:  */
 2970: int
 2971: xmlUCSIsCatPe(int code) {
 2972:     return(xmlCharInRange((unsigned int)code, &xmlPeG));
 2973: }
 2974: 
 2975: /**
 2976:  * xmlUCSIsCatPf:
 2977:  * @code: UCS code point
 2978:  *
 2979:  * Check whether the character is part of Pf UCS Category
 2980:  *
 2981:  * Returns 1 if true 0 otherwise
 2982:  */
 2983: int
 2984: xmlUCSIsCatPf(int code) {
 2985:     return((code == 0xbb) ||
 2986:            (code == 0x2019) ||
 2987:            (code == 0x201d) ||
 2988:            (code == 0x203a));
 2989: }
 2990: 
 2991: /**
 2992:  * xmlUCSIsCatPi:
 2993:  * @code: UCS code point
 2994:  *
 2995:  * Check whether the character is part of Pi UCS Category
 2996:  *
 2997:  * Returns 1 if true 0 otherwise
 2998:  */
 2999: int
 3000: xmlUCSIsCatPi(int code) {
 3001:     return((code == 0xab) ||
 3002:            (code == 0x2018) ||
 3003:            ((code >= 0x201b) && (code <= 0x201c)) ||
 3004:            (code == 0x201f) ||
 3005:            (code == 0x2039));
 3006: }
 3007: 
 3008: /**
 3009:  * xmlUCSIsCatPo:
 3010:  * @code: UCS code point
 3011:  *
 3012:  * Check whether the character is part of Po UCS Category
 3013:  *
 3014:  * Returns 1 if true 0 otherwise
 3015:  */
 3016: int
 3017: xmlUCSIsCatPo(int code) {
 3018:     return(xmlCharInRange((unsigned int)code, &xmlPoG));
 3019: }
 3020: 
 3021: /**
 3022:  * xmlUCSIsCatPs:
 3023:  * @code: UCS code point
 3024:  *
 3025:  * Check whether the character is part of Ps UCS Category
 3026:  *
 3027:  * Returns 1 if true 0 otherwise
 3028:  */
 3029: int
 3030: xmlUCSIsCatPs(int code) {
 3031:     return(xmlCharInRange((unsigned int)code, &xmlPsG));
 3032: }
 3033: 
 3034: /**
 3035:  * xmlUCSIsCatS:
 3036:  * @code: UCS code point
 3037:  *
 3038:  * Check whether the character is part of S UCS Category
 3039:  *
 3040:  * Returns 1 if true 0 otherwise
 3041:  */
 3042: int
 3043: xmlUCSIsCatS(int code) {
 3044:     return(xmlCharInRange((unsigned int)code, &xmlSG));
 3045: }
 3046: 
 3047: /**
 3048:  * xmlUCSIsCatSc:
 3049:  * @code: UCS code point
 3050:  *
 3051:  * Check whether the character is part of Sc UCS Category
 3052:  *
 3053:  * Returns 1 if true 0 otherwise
 3054:  */
 3055: int
 3056: xmlUCSIsCatSc(int code) {
 3057:     return(xmlCharInRange((unsigned int)code, &xmlScG));
 3058: }
 3059: 
 3060: /**
 3061:  * xmlUCSIsCatSk:
 3062:  * @code: UCS code point
 3063:  *
 3064:  * Check whether the character is part of Sk UCS Category
 3065:  *
 3066:  * Returns 1 if true 0 otherwise
 3067:  */
 3068: int
 3069: xmlUCSIsCatSk(int code) {
 3070:     return(xmlCharInRange((unsigned int)code, &xmlSkG));
 3071: }
 3072: 
 3073: /**
 3074:  * xmlUCSIsCatSm:
 3075:  * @code: UCS code point
 3076:  *
 3077:  * Check whether the character is part of Sm UCS Category
 3078:  *
 3079:  * Returns 1 if true 0 otherwise
 3080:  */
 3081: int
 3082: xmlUCSIsCatSm(int code) {
 3083:     return(xmlCharInRange((unsigned int)code, &xmlSmG));
 3084: }
 3085: 
 3086: /**
 3087:  * xmlUCSIsCatSo:
 3088:  * @code: UCS code point
 3089:  *
 3090:  * Check whether the character is part of So UCS Category
 3091:  *
 3092:  * Returns 1 if true 0 otherwise
 3093:  */
 3094: int
 3095: xmlUCSIsCatSo(int code) {
 3096:     return(xmlCharInRange((unsigned int)code, &xmlSoG));
 3097: }
 3098: 
 3099: /**
 3100:  * xmlUCSIsCatZ:
 3101:  * @code: UCS code point
 3102:  *
 3103:  * Check whether the character is part of Z UCS Category
 3104:  *
 3105:  * Returns 1 if true 0 otherwise
 3106:  */
 3107: int
 3108: xmlUCSIsCatZ(int code) {
 3109:     return(xmlCharInRange((unsigned int)code, &xmlZG));
 3110: }
 3111: 
 3112: /**
 3113:  * xmlUCSIsCatZl:
 3114:  * @code: UCS code point
 3115:  *
 3116:  * Check whether the character is part of Zl UCS Category
 3117:  *
 3118:  * Returns 1 if true 0 otherwise
 3119:  */
 3120: int
 3121: xmlUCSIsCatZl(int code) {
 3122:     return((code == 0x2028));
 3123: }
 3124: 
 3125: /**
 3126:  * xmlUCSIsCatZp:
 3127:  * @code: UCS code point
 3128:  *
 3129:  * Check whether the character is part of Zp UCS Category
 3130:  *
 3131:  * Returns 1 if true 0 otherwise
 3132:  */
 3133: int
 3134: xmlUCSIsCatZp(int code) {
 3135:     return((code == 0x2029));
 3136: }
 3137: 
 3138: /**
 3139:  * xmlUCSIsCatZs:
 3140:  * @code: UCS code point
 3141:  *
 3142:  * Check whether the character is part of Zs UCS Category
 3143:  *
 3144:  * Returns 1 if true 0 otherwise
 3145:  */
 3146: int
 3147: xmlUCSIsCatZs(int code) {
 3148:     return((code == 0x20) ||
 3149:            (code == 0xa0) ||
 3150:            (code == 0x1680) ||
 3151:            (code == 0x180e) ||
 3152:            ((code >= 0x2000) && (code <= 0x200a)) ||
 3153:            (code == 0x202f) ||
 3154:            (code == 0x205f) ||
 3155:            (code == 0x3000));
 3156: }
 3157: 
 3158: /**
 3159:  * xmlUCSIsCat:
 3160:  * @code: UCS code point
 3161:  * @cat: UCS Category name
 3162:  *
 3163:  * Check whether the character is part of the UCS Category
 3164:  *
 3165:  * Returns 1 if true, 0 if false and -1 on unknown category
 3166:  */
 3167: int
 3168: xmlUCSIsCat(int code, const char *cat) {
 3169:     xmlIntFunc *func;
 3170: 
 3171:     func = xmlUnicodeLookup(&xmlUnicodeCatTbl, cat);
 3172:     if (func == NULL)
 3173: 	return (-1);
 3174:     return (func(code));
 3175: }
 3176: 
 3177: #define bottom_xmlunicode
 3178: #include "elfgcchack.h"
 3179: #endif /* LIBXML_UNICODE_ENABLED */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>