source: trunk/third/libxml2/xmlunicode.c @ 21532

Revision 21532, 100.1 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21531, which included commits to RCS files with non-trunk default branches.
Line 
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.1d5b.html
7 * using the genUnicode.py Python script.
8 *
9 * Generation date: Mon Nov 10 22:35:10 2003
10 * Sources: Blocks-4.0.1d1b.txt UnicodeData-4.0.1d1b.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
24typedef int (xmlIntFunc)(int);  /* just to keep one's mind untwisted */
25
26typedef struct {
27    const char *rangename;
28    xmlIntFunc *func;
29} xmlUnicodeRange;
30
31typedef struct {
32    xmlUnicodeRange *table;
33    int             numentries;
34} xmlUnicodeNameTable;
35
36
37static xmlIntFunc *xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname);
38
39static 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
169static 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
207static xmlChSRange xmlCS[] = {{0x0, 0x1f}, {0x7f, 0x9f}, {0xad, 0xad},
208    {0x600, 0x603}, {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5},
209    {0x200c, 0x200f}, {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f},
210    {0xd800, 0xd800}, {0xdb7f, 0xdb80}, {0xdbff, 0xdc00}, {0xdfff, 0xe000},
211    {0xf8ff, 0xf8ff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb} };
212static xmlChLRange xmlCL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
213    {0xe0020, 0xe007f}, {0xf0000, 0xf0000}, {0xffffd, 0xffffd},
214    {0x100000, 0x100000}, {0x10fffd, 0x10fffd} };
215static xmlChRangeGroup xmlCG = {18,7,xmlCS,xmlCL};
216
217static xmlChSRange xmlCfS[] = {{0xad, 0xad}, {0x600, 0x603},
218    {0x6dd, 0x6dd}, {0x70f, 0x70f}, {0x17b4, 0x17b5}, {0x200c, 0x200f},
219    {0x202a, 0x202e}, {0x2060, 0x2063}, {0x206a, 0x206f}, {0xfeff, 0xfeff},
220    {0xfff9, 0xfffb} };
221static xmlChLRange xmlCfL[] = {{0x1d173, 0x1d17a}, {0xe0001, 0xe0001},
222    {0xe0020, 0xe007f} };
223static xmlChRangeGroup xmlCfG = {11,3,xmlCfS,xmlCfL};
224
225static xmlChSRange xmlLS[] = {{0x41, 0x5a}, {0x61, 0x7a}, {0xaa, 0xaa},
226    {0xb5, 0xb5}, {0xba, 0xba}, {0xc0, 0xd6}, {0xd8, 0xf6}, {0xf8, 0x236},
227    {0x250, 0x2c1}, {0x2c6, 0x2d1}, {0x2e0, 0x2e4}, {0x2ee, 0x2ee},
228    {0x37a, 0x37a}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
229    {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3f5}, {0x3f7, 0x3fb},
230    {0x400, 0x481}, {0x48a, 0x4ce}, {0x4d0, 0x4f5}, {0x4f8, 0x4f9},
231    {0x500, 0x50f}, {0x531, 0x556}, {0x559, 0x559}, {0x561, 0x587},
232    {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, {0x640, 0x64a},
233    {0x66e, 0x66f}, {0x671, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6},
234    {0x6ee, 0x6ef}, {0x6fa, 0x6fc}, {0x6ff, 0x6ff}, {0x710, 0x710},
235    {0x712, 0x72f}, {0x74d, 0x74f}, {0x780, 0x7a5}, {0x7b1, 0x7b1},
236    {0x904, 0x939}, {0x93d, 0x93d}, {0x950, 0x950}, {0x958, 0x961},
237    {0x985, 0x98c}, {0x98f, 0x990}, {0x993, 0x9a8}, {0x9aa, 0x9b0},
238    {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, {0x9bd, 0x9bd}, {0x9dc, 0x9dd},
239    {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, {0xa0f, 0xa10},
240    {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, {0xa35, 0xa36},
241    {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, {0xa72, 0xa74},
242    {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0},
243    {0xab2, 0xab3}, {0xab5, 0xab9}, {0xabd, 0xabd}, {0xad0, 0xad0},
244    {0xae0, 0xae1}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, {0xb13, 0xb28},
245    {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb35, 0xb39}, {0xb3d, 0xb3d},
246    {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb71, 0xb71}, {0xb83, 0xb83},
247    {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a},
248    {0xb9c, 0xb9c}, {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa},
249    {0xbae, 0xbb5}, {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10},
250    {0xc12, 0xc28}, {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61},
251    {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3},
252    {0xcb5, 0xcb9}, {0xcbd, 0xcbd}, {0xcde, 0xcde}, {0xce0, 0xce1},
253    {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd28}, {0xd2a, 0xd39},
254    {0xd60, 0xd61}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb},
255    {0xdbd, 0xdbd}, {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe32, 0xe33},
256    {0xe40, 0xe46}, {0xe81, 0xe82}, {0xe84, 0xe84}, {0xe87, 0xe88},
257    {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, {0xe94, 0xe97}, {0xe99, 0xe9f},
258    {0xea1, 0xea3}, {0xea5, 0xea5}, {0xea7, 0xea7}, {0xeaa, 0xeab},
259    {0xead, 0xeb0}, {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4},
260    {0xec6, 0xec6}, {0xedc, 0xedd}, {0xf00, 0xf00}, {0xf40, 0xf47},
261    {0xf49, 0xf6a}, {0xf88, 0xf8b}, {0x1000, 0x1021}, {0x1023, 0x1027},
262    {0x1029, 0x102a}, {0x1050, 0x1055}, {0x10a0, 0x10c5}, {0x10d0, 0x10f8},
263    {0x1100, 0x1159}, {0x115f, 0x11a2}, {0x11a8, 0x11f9}, {0x1200, 0x1206},
264    {0x1208, 0x1246}, {0x1248, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256},
265    {0x1258, 0x1258}, {0x125a, 0x125d}, {0x1260, 0x1286}, {0x1288, 0x1288},
266    {0x128a, 0x128d}, {0x1290, 0x12ae}, {0x12b0, 0x12b0}, {0x12b2, 0x12b5},
267    {0x12b8, 0x12be}, {0x12c0, 0x12c0}, {0x12c2, 0x12c5}, {0x12c8, 0x12ce},
268    {0x12d0, 0x12d6}, {0x12d8, 0x12ee}, {0x12f0, 0x130e}, {0x1310, 0x1310},
269    {0x1312, 0x1315}, {0x1318, 0x131e}, {0x1320, 0x1346}, {0x1348, 0x135a},
270    {0x13a0, 0x13f4}, {0x1401, 0x166c}, {0x166f, 0x1676}, {0x1681, 0x169a},
271    {0x16a0, 0x16ea}, {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731},
272    {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3},
273    {0x17d7, 0x17d7}, {0x17dc, 0x17dc}, {0x1820, 0x1877}, {0x1880, 0x18a8},
274    {0x1900, 0x191c}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1d00, 0x1d6b},
275    {0x1e00, 0x1e9b}, {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d},
276    {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59},
277    {0x1f5b, 0x1f5b}, {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4},
278    {0x1fb6, 0x1fbc}, {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc},
279    {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4},
280    {0x1ff6, 0x1ffc}, {0x2071, 0x2071}, {0x207f, 0x207f}, {0x2102, 0x2102},
281    {0x2107, 0x2107}, {0x210a, 0x2113}, {0x2115, 0x2115}, {0x2119, 0x211d},
282    {0x2124, 0x2124}, {0x2126, 0x2126}, {0x2128, 0x2128}, {0x212a, 0x212d},
283    {0x212f, 0x2131}, {0x2133, 0x2139}, {0x213d, 0x213f}, {0x2145, 0x2149},
284    {0x3005, 0x3006}, {0x3031, 0x3035}, {0x303b, 0x303c}, {0x3041, 0x3096},
285    {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312c},
286    {0x3131, 0x318e}, {0x31a0, 0x31b7}, {0x31f0, 0x31ff}, {0x3400, 0x3400},
287    {0x4db5, 0x4db5}, {0x4e00, 0x4e00}, {0x9fa5, 0x9fa5}, {0xa000, 0xa48c},
288    {0xac00, 0xac00}, {0xd7a3, 0xd7a3}, {0xf900, 0xfa2d}, {0xfa30, 0xfa6a},
289    {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb1d}, {0xfb1f, 0xfb28},
290    {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb3e, 0xfb3e}, {0xfb40, 0xfb41},
291    {0xfb43, 0xfb44}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f},
292    {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc},
293    {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7},
294    {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} };
295static 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} };
312static xmlChRangeGroup xmlLG = {279,50,xmlLS,xmlLL};
313
314static xmlChSRange xmlLlS[] = {{0x61, 0x7a}, {0xaa, 0xaa}, {0xb5, 0xb5},
315    {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} };
414static 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} };
424static xmlChRangeGroup xmlLlG = {396,28,xmlLlS,xmlLlL};
425
426static 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} };
432static xmlChRangeGroup xmlLmG = {20,0,xmlLmS,NULL};
433
434static 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} };
488static 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} };
495static xmlChRangeGroup xmlLoG = {211,20,xmlLoS,xmlLoL};
496
497static xmlChSRange xmlLtS[] = {{0x1c5, 0x1c5}, {0x1c8, 0x1c8},
498    {0x1cb, 0x1cb}, {0x1f2, 0x1f2}, {0x1f88, 0x1f8f}, {0x1f98, 0x1f9f},
499    {0x1fa8, 0x1faf}, {0x1fbc, 0x1fbc}, {0x1fcc, 0x1fcc}, {0x1ffc, 0x1ffc} };
500static xmlChRangeGroup xmlLtG = {10,0,xmlLtS,NULL};
501
502static xmlChSRange xmlLuS[] = {{0x41, 0x5a}, {0xc0, 0xd6}, {0xd8, 0xde},
503    {0x100, 0x100}, {0x102, 0x102}, {0x104, 0x104}, {0x106, 0x106},
504    {0x108, 0x108}, {0x10a, 0x10a}, {0x10c, 0x10c}, {0x10e, 0x10e},
505    {0x110, 0x110}, {0x112, 0x112}, {0x114, 0x114}, {0x116, 0x116},
506    {0x118, 0x118}, {0x11a, 0x11a}, {0x11c, 0x11c}, {0x11e, 0x11e},
507    {0x120, 0x120}, {0x122, 0x122}, {0x124, 0x124}, {0x126, 0x126},
508    {0x128, 0x128}, {0x12a, 0x12a}, {0x12c, 0x12c}, {0x12e, 0x12e},
509    {0x130, 0x130}, {0x132, 0x132}, {0x134, 0x134}, {0x136, 0x136},
510    {0x139, 0x139}, {0x13b, 0x13b}, {0x13d, 0x13d}, {0x13f, 0x13f},
511    {0x141, 0x141}, {0x143, 0x143}, {0x145, 0x145}, {0x147, 0x147},
512    {0x14a, 0x14a}, {0x14c, 0x14c}, {0x14e, 0x14e}, {0x150, 0x150},
513    {0x152, 0x152}, {0x154, 0x154}, {0x156, 0x156}, {0x158, 0x158},
514    {0x15a, 0x15a}, {0x15c, 0x15c}, {0x15e, 0x15e}, {0x160, 0x160},
515    {0x162, 0x162}, {0x164, 0x164}, {0x166, 0x166}, {0x168, 0x168},
516    {0x16a, 0x16a}, {0x16c, 0x16c}, {0x16e, 0x16e}, {0x170, 0x170},
517    {0x172, 0x172}, {0x174, 0x174}, {0x176, 0x176}, {0x178, 0x179},
518    {0x17b, 0x17b}, {0x17d, 0x17d}, {0x181, 0x182}, {0x184, 0x184},
519    {0x186, 0x187}, {0x189, 0x18b}, {0x18e, 0x191}, {0x193, 0x194},
520    {0x196, 0x198}, {0x19c, 0x19d}, {0x19f, 0x1a0}, {0x1a2, 0x1a2},
521    {0x1a4, 0x1a4}, {0x1a6, 0x1a7}, {0x1a9, 0x1a9}, {0x1ac, 0x1ac},
522    {0x1ae, 0x1af}, {0x1b1, 0x1b3}, {0x1b5, 0x1b5}, {0x1b7, 0x1b8},
523    {0x1bc, 0x1bc}, {0x1c4, 0x1c4}, {0x1c7, 0x1c7}, {0x1ca, 0x1ca},
524    {0x1cd, 0x1cd}, {0x1cf, 0x1cf}, {0x1d1, 0x1d1}, {0x1d3, 0x1d3},
525    {0x1d5, 0x1d5}, {0x1d7, 0x1d7}, {0x1d9, 0x1d9}, {0x1db, 0x1db},
526    {0x1de, 0x1de}, {0x1e0, 0x1e0}, {0x1e2, 0x1e2}, {0x1e4, 0x1e4},
527    {0x1e6, 0x1e6}, {0x1e8, 0x1e8}, {0x1ea, 0x1ea}, {0x1ec, 0x1ec},
528    {0x1ee, 0x1ee}, {0x1f1, 0x1f1}, {0x1f4, 0x1f4}, {0x1f6, 0x1f8},
529    {0x1fa, 0x1fa}, {0x1fc, 0x1fc}, {0x1fe, 0x1fe}, {0x200, 0x200},
530    {0x202, 0x202}, {0x204, 0x204}, {0x206, 0x206}, {0x208, 0x208},
531    {0x20a, 0x20a}, {0x20c, 0x20c}, {0x20e, 0x20e}, {0x210, 0x210},
532    {0x212, 0x212}, {0x214, 0x214}, {0x216, 0x216}, {0x218, 0x218},
533    {0x21a, 0x21a}, {0x21c, 0x21c}, {0x21e, 0x21e}, {0x220, 0x220},
534    {0x222, 0x222}, {0x224, 0x224}, {0x226, 0x226}, {0x228, 0x228},
535    {0x22a, 0x22a}, {0x22c, 0x22c}, {0x22e, 0x22e}, {0x230, 0x230},
536    {0x232, 0x232}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
537    {0x38e, 0x38f}, {0x391, 0x3a1}, {0x3a3, 0x3ab}, {0x3d2, 0x3d4},
538    {0x3d8, 0x3d8}, {0x3da, 0x3da}, {0x3dc, 0x3dc}, {0x3de, 0x3de},
539    {0x3e0, 0x3e0}, {0x3e2, 0x3e2}, {0x3e4, 0x3e4}, {0x3e6, 0x3e6},
540    {0x3e8, 0x3e8}, {0x3ea, 0x3ea}, {0x3ec, 0x3ec}, {0x3ee, 0x3ee},
541    {0x3f4, 0x3f4}, {0x3f7, 0x3f7}, {0x3f9, 0x3fa}, {0x400, 0x42f},
542    {0x460, 0x460}, {0x462, 0x462}, {0x464, 0x464}, {0x466, 0x466},
543    {0x468, 0x468}, {0x46a, 0x46a}, {0x46c, 0x46c}, {0x46e, 0x46e},
544    {0x470, 0x470}, {0x472, 0x472}, {0x474, 0x474}, {0x476, 0x476},
545    {0x478, 0x478}, {0x47a, 0x47a}, {0x47c, 0x47c}, {0x47e, 0x47e},
546    {0x480, 0x480}, {0x48a, 0x48a}, {0x48c, 0x48c}, {0x48e, 0x48e},
547    {0x490, 0x490}, {0x492, 0x492}, {0x494, 0x494}, {0x496, 0x496},
548    {0x498, 0x498}, {0x49a, 0x49a}, {0x49c, 0x49c}, {0x49e, 0x49e},
549    {0x4a0, 0x4a0}, {0x4a2, 0x4a2}, {0x4a4, 0x4a4}, {0x4a6, 0x4a6},
550    {0x4a8, 0x4a8}, {0x4aa, 0x4aa}, {0x4ac, 0x4ac}, {0x4ae, 0x4ae},
551    {0x4b0, 0x4b0}, {0x4b2, 0x4b2}, {0x4b4, 0x4b4}, {0x4b6, 0x4b6},
552    {0x4b8, 0x4b8}, {0x4ba, 0x4ba}, {0x4bc, 0x4bc}, {0x4be, 0x4be},
553    {0x4c0, 0x4c1}, {0x4c3, 0x4c3}, {0x4c5, 0x4c5}, {0x4c7, 0x4c7},
554    {0x4c9, 0x4c9}, {0x4cb, 0x4cb}, {0x4cd, 0x4cd}, {0x4d0, 0x4d0},
555    {0x4d2, 0x4d2}, {0x4d4, 0x4d4}, {0x4d6, 0x4d6}, {0x4d8, 0x4d8},
556    {0x4da, 0x4da}, {0x4dc, 0x4dc}, {0x4de, 0x4de}, {0x4e0, 0x4e0},
557    {0x4e2, 0x4e2}, {0x4e4, 0x4e4}, {0x4e6, 0x4e6}, {0x4e8, 0x4e8},
558    {0x4ea, 0x4ea}, {0x4ec, 0x4ec}, {0x4ee, 0x4ee}, {0x4f0, 0x4f0},
559    {0x4f2, 0x4f2}, {0x4f4, 0x4f4}, {0x4f8, 0x4f8}, {0x500, 0x500},
560    {0x502, 0x502}, {0x504, 0x504}, {0x506, 0x506}, {0x508, 0x508},
561    {0x50a, 0x50a}, {0x50c, 0x50c}, {0x50e, 0x50e}, {0x531, 0x556},
562    {0x10a0, 0x10c5}, {0x1e00, 0x1e00}, {0x1e02, 0x1e02}, {0x1e04, 0x1e04},
563    {0x1e06, 0x1e06}, {0x1e08, 0x1e08}, {0x1e0a, 0x1e0a}, {0x1e0c, 0x1e0c},
564    {0x1e0e, 0x1e0e}, {0x1e10, 0x1e10}, {0x1e12, 0x1e12}, {0x1e14, 0x1e14},
565    {0x1e16, 0x1e16}, {0x1e18, 0x1e18}, {0x1e1a, 0x1e1a}, {0x1e1c, 0x1e1c},
566    {0x1e1e, 0x1e1e}, {0x1e20, 0x1e20}, {0x1e22, 0x1e22}, {0x1e24, 0x1e24},
567    {0x1e26, 0x1e26}, {0x1e28, 0x1e28}, {0x1e2a, 0x1e2a}, {0x1e2c, 0x1e2c},
568    {0x1e2e, 0x1e2e}, {0x1e30, 0x1e30}, {0x1e32, 0x1e32}, {0x1e34, 0x1e34},
569    {0x1e36, 0x1e36}, {0x1e38, 0x1e38}, {0x1e3a, 0x1e3a}, {0x1e3c, 0x1e3c},
570    {0x1e3e, 0x1e3e}, {0x1e40, 0x1e40}, {0x1e42, 0x1e42}, {0x1e44, 0x1e44},
571    {0x1e46, 0x1e46}, {0x1e48, 0x1e48}, {0x1e4a, 0x1e4a}, {0x1e4c, 0x1e4c},
572    {0x1e4e, 0x1e4e}, {0x1e50, 0x1e50}, {0x1e52, 0x1e52}, {0x1e54, 0x1e54},
573    {0x1e56, 0x1e56}, {0x1e58, 0x1e58}, {0x1e5a, 0x1e5a}, {0x1e5c, 0x1e5c},
574    {0x1e5e, 0x1e5e}, {0x1e60, 0x1e60}, {0x1e62, 0x1e62}, {0x1e64, 0x1e64},
575    {0x1e66, 0x1e66}, {0x1e68, 0x1e68}, {0x1e6a, 0x1e6a}, {0x1e6c, 0x1e6c},
576    {0x1e6e, 0x1e6e}, {0x1e70, 0x1e70}, {0x1e72, 0x1e72}, {0x1e74, 0x1e74},
577    {0x1e76, 0x1e76}, {0x1e78, 0x1e78}, {0x1e7a, 0x1e7a}, {0x1e7c, 0x1e7c},
578    {0x1e7e, 0x1e7e}, {0x1e80, 0x1e80}, {0x1e82, 0x1e82}, {0x1e84, 0x1e84},
579    {0x1e86, 0x1e86}, {0x1e88, 0x1e88}, {0x1e8a, 0x1e8a}, {0x1e8c, 0x1e8c},
580    {0x1e8e, 0x1e8e}, {0x1e90, 0x1e90}, {0x1e92, 0x1e92}, {0x1e94, 0x1e94},
581    {0x1ea0, 0x1ea0}, {0x1ea2, 0x1ea2}, {0x1ea4, 0x1ea4}, {0x1ea6, 0x1ea6},
582    {0x1ea8, 0x1ea8}, {0x1eaa, 0x1eaa}, {0x1eac, 0x1eac}, {0x1eae, 0x1eae},
583    {0x1eb0, 0x1eb0}, {0x1eb2, 0x1eb2}, {0x1eb4, 0x1eb4}, {0x1eb6, 0x1eb6},
584    {0x1eb8, 0x1eb8}, {0x1eba, 0x1eba}, {0x1ebc, 0x1ebc}, {0x1ebe, 0x1ebe},
585    {0x1ec0, 0x1ec0}, {0x1ec2, 0x1ec2}, {0x1ec4, 0x1ec4}, {0x1ec6, 0x1ec6},
586    {0x1ec8, 0x1ec8}, {0x1eca, 0x1eca}, {0x1ecc, 0x1ecc}, {0x1ece, 0x1ece},
587    {0x1ed0, 0x1ed0}, {0x1ed2, 0x1ed2}, {0x1ed4, 0x1ed4}, {0x1ed6, 0x1ed6},
588    {0x1ed8, 0x1ed8}, {0x1eda, 0x1eda}, {0x1edc, 0x1edc}, {0x1ede, 0x1ede},
589    {0x1ee0, 0x1ee0}, {0x1ee2, 0x1ee2}, {0x1ee4, 0x1ee4}, {0x1ee6, 0x1ee6},
590    {0x1ee8, 0x1ee8}, {0x1eea, 0x1eea}, {0x1eec, 0x1eec}, {0x1eee, 0x1eee},
591    {0x1ef0, 0x1ef0}, {0x1ef2, 0x1ef2}, {0x1ef4, 0x1ef4}, {0x1ef6, 0x1ef6},
592    {0x1ef8, 0x1ef8}, {0x1f08, 0x1f0f}, {0x1f18, 0x1f1d}, {0x1f28, 0x1f2f},
593    {0x1f38, 0x1f3f}, {0x1f48, 0x1f4d}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
594    {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f5f}, {0x1f68, 0x1f6f}, {0x1fb8, 0x1fbb},
595    {0x1fc8, 0x1fcb}, {0x1fd8, 0x1fdb}, {0x1fe8, 0x1fec}, {0x1ff8, 0x1ffb},
596    {0x2102, 0x2102}, {0x2107, 0x2107}, {0x210b, 0x210d}, {0x2110, 0x2112},
597    {0x2115, 0x2115}, {0x2119, 0x211d}, {0x2124, 0x2124}, {0x2126, 0x2126},
598    {0x2128, 0x2128}, {0x212a, 0x212d}, {0x2130, 0x2131}, {0x2133, 0x2133},
599    {0x213e, 0x213f}, {0x2145, 0x2145}, {0xff21, 0xff3a} };
600static 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} };
611static xmlChRangeGroup xmlLuG = {390,31,xmlLuS,xmlLuL};
612
613static 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} };
642static xmlChLRange xmlML[] = {{0x1d165, 0x1d169}, {0x1d16d, 0x1d172},
643    {0x1d17b, 0x1d182}, {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad},
644    {0xe0100, 0xe01ef} };
645static xmlChRangeGroup xmlMG = {113,6,xmlMS,xmlML};
646
647static 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} };
662static xmlChLRange xmlMcL[] = {{0x1d165, 0x1d166}, {0x1d16d, 0x1d172} };
663static xmlChRangeGroup xmlMcG = {55,2,xmlMcS,xmlMcL};
664
665static 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} };
693static xmlChLRange xmlMnL[] = {{0x1d167, 0x1d169}, {0x1d17b, 0x1d182},
694    {0x1d185, 0x1d18b}, {0x1d1aa, 0x1d1ad}, {0xe0100, 0xe01ef} };
695static xmlChRangeGroup xmlMnG = {108,5,xmlMnS,xmlMnL};
696
697static xmlChSRange xmlNS[] = {{0x30, 0x39}, {0xb2, 0xb3}, {0xb9, 0xb9},
698    {0xbc, 0xbe}, {0x660, 0x669}, {0x6f0, 0x6f9}, {0x966, 0x96f},
699    {0x9e6, 0x9ef}, {0x9f4, 0x9f9}, {0xa66, 0xa6f}, {0xae6, 0xaef},
700    {0xb66, 0xb6f}, {0xbe7, 0xbf2}, {0xc66, 0xc6f}, {0xce6, 0xcef},
701    {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, {0xf20, 0xf33},
702    {0x1040, 0x1049}, {0x1369, 0x137c}, {0x16ee, 0x16f0}, {0x17e0, 0x17e9},
703    {0x17f0, 0x17f9}, {0x1810, 0x1819}, {0x1946, 0x194f}, {0x2070, 0x2070},
704    {0x2074, 0x2079}, {0x2080, 0x2089}, {0x2153, 0x2183}, {0x2460, 0x249b},
705    {0x24ea, 0x24ff}, {0x2776, 0x2793}, {0x3007, 0x3007}, {0x3021, 0x3029},
706    {0x3038, 0x303a}, {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f},
707    {0x3280, 0x3289}, {0x32b1, 0x32bf}, {0xff10, 0xff19} };
708static xmlChLRange xmlNL[] = {{0x10107, 0x10133}, {0x10320, 0x10323},
709    {0x1034a, 0x1034a}, {0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
710static xmlChRangeGroup xmlNG = {42,5,xmlNS,xmlNL};
711
712static 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} };
718static xmlChLRange xmlNdL[] = {{0x104a0, 0x104a9}, {0x1d7ce, 0x1d7ff} };
719static xmlChRangeGroup xmlNdG = {21,2,xmlNdS,xmlNdL};
720
721static xmlChSRange xmlNoS[] = {{0xb2, 0xb3}, {0xb9, 0xb9}, {0xbc, 0xbe},
722    {0x9f4, 0x9f9}, {0xbf0, 0xbf2}, {0xf2a, 0xf33}, {0x1372, 0x137c},
723    {0x17f0, 0x17f9}, {0x2070, 0x2070}, {0x2074, 0x2079}, {0x2080, 0x2089},
724    {0x2153, 0x215f}, {0x2460, 0x249b}, {0x24ea, 0x24ff}, {0x2776, 0x2793},
725    {0x3192, 0x3195}, {0x3220, 0x3229}, {0x3251, 0x325f}, {0x3280, 0x3289},
726    {0x32b1, 0x32bf} };
727static xmlChLRange xmlNoL[] = {{0x10107, 0x10133}, {0x10320, 0x10323} };
728static xmlChRangeGroup xmlNoG = {20,2,xmlNoS,xmlNoL};
729
730static xmlChSRange xmlPS[] = {{0x21, 0x23}, {0x25, 0x2a}, {0x2c, 0x2f},
731    {0x3a, 0x3b}, {0x3f, 0x40}, {0x5b, 0x5d}, {0x5f, 0x5f}, {0x7b, 0x7b},
732    {0x7d, 0x7d}, {0xa1, 0xa1}, {0xab, 0xab}, {0xb7, 0xb7}, {0xbb, 0xbb},
733    {0xbf, 0xbf}, {0x37e, 0x37e}, {0x387, 0x387}, {0x55a, 0x55f},
734    {0x589, 0x58a}, {0x5be, 0x5be}, {0x5c0, 0x5c0}, {0x5c3, 0x5c3},
735    {0x5f3, 0x5f4}, {0x60c, 0x60d}, {0x61b, 0x61b}, {0x61f, 0x61f},
736    {0x66a, 0x66d}, {0x6d4, 0x6d4}, {0x700, 0x70d}, {0x964, 0x965},
737    {0x970, 0x970}, {0xdf4, 0xdf4}, {0xe4f, 0xe4f}, {0xe5a, 0xe5b},
738    {0xf04, 0xf12}, {0xf3a, 0xf3d}, {0xf85, 0xf85}, {0x104a, 0x104f},
739    {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e}, {0x169b, 0x169c},
740    {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
741    {0x1800, 0x180a}, {0x1944, 0x1945}, {0x2010, 0x2027}, {0x2030, 0x2043},
742    {0x2045, 0x2051}, {0x2053, 0x2054}, {0x2057, 0x2057}, {0x207d, 0x207e},
743    {0x208d, 0x208e}, {0x2329, 0x232a}, {0x23b4, 0x23b6}, {0x2768, 0x2775},
744    {0x27e6, 0x27eb}, {0x2983, 0x2998}, {0x29d8, 0x29db}, {0x29fc, 0x29fd},
745    {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, {0x3030, 0x3030},
746    {0x303d, 0x303d}, {0x30a0, 0x30a0}, {0x30fb, 0x30fb}, {0xfd3e, 0xfd3f},
747    {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xfe63, 0xfe63}, {0xfe68, 0xfe68},
748    {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff0a}, {0xff0c, 0xff0f},
749    {0xff1a, 0xff1b}, {0xff1f, 0xff20}, {0xff3b, 0xff3d}, {0xff3f, 0xff3f},
750    {0xff5b, 0xff5b}, {0xff5d, 0xff5d}, {0xff5f, 0xff65} };
751static xmlChLRange xmlPL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
752static xmlChRangeGroup xmlPG = {84,2,xmlPS,xmlPL};
753
754static 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} };
758static xmlChRangeGroup xmlPdG = {11,0,xmlPdS,NULL};
759
760static xmlChSRange xmlPeS[] = {{0x29, 0x29}, {0x5d, 0x5d}, {0x7d, 0x7d},
761    {0xf3b, 0xf3b}, {0xf3d, 0xf3d}, {0x169c, 0x169c}, {0x2046, 0x2046},
762    {0x207e, 0x207e}, {0x208e, 0x208e}, {0x232a, 0x232a}, {0x23b5, 0x23b5},
763    {0x2769, 0x2769}, {0x276b, 0x276b}, {0x276d, 0x276d}, {0x276f, 0x276f},
764    {0x2771, 0x2771}, {0x2773, 0x2773}, {0x2775, 0x2775}, {0x27e7, 0x27e7},
765    {0x27e9, 0x27e9}, {0x27eb, 0x27eb}, {0x2984, 0x2984}, {0x2986, 0x2986},
766    {0x2988, 0x2988}, {0x298a, 0x298a}, {0x298c, 0x298c}, {0x298e, 0x298e},
767    {0x2990, 0x2990}, {0x2992, 0x2992}, {0x2994, 0x2994}, {0x2996, 0x2996},
768    {0x2998, 0x2998}, {0x29d9, 0x29d9}, {0x29db, 0x29db}, {0x29fd, 0x29fd},
769    {0x3009, 0x3009}, {0x300b, 0x300b}, {0x300d, 0x300d}, {0x300f, 0x300f},
770    {0x3011, 0x3011}, {0x3015, 0x3015}, {0x3017, 0x3017}, {0x3019, 0x3019},
771    {0x301b, 0x301b}, {0x301e, 0x301f}, {0xfd3f, 0xfd3f}, {0xfe36, 0xfe36},
772    {0xfe38, 0xfe38}, {0xfe3a, 0xfe3a}, {0xfe3c, 0xfe3c}, {0xfe3e, 0xfe3e},
773    {0xfe40, 0xfe40}, {0xfe42, 0xfe42}, {0xfe44, 0xfe44}, {0xfe48, 0xfe48},
774    {0xfe5a, 0xfe5a}, {0xfe5c, 0xfe5c}, {0xfe5e, 0xfe5e}, {0xff09, 0xff09},
775    {0xff3d, 0xff3d}, {0xff5d, 0xff5d}, {0xff60, 0xff60}, {0xff63, 0xff63} };
776static xmlChRangeGroup xmlPeG = {63,0,xmlPeS,NULL};
777
778static xmlChSRange xmlPoS[] = {{0x21, 0x23}, {0x25, 0x27}, {0x2a, 0x2a},
779    {0x2c, 0x2c}, {0x2e, 0x2f}, {0x3a, 0x3b}, {0x3f, 0x40}, {0x5c, 0x5c},
780    {0xa1, 0xa1}, {0xb7, 0xb7}, {0xbf, 0xbf}, {0x37e, 0x37e},
781    {0x387, 0x387}, {0x55a, 0x55f}, {0x589, 0x589}, {0x5be, 0x5be},
782    {0x5c0, 0x5c0}, {0x5c3, 0x5c3}, {0x5f3, 0x5f4}, {0x60c, 0x60d},
783    {0x61b, 0x61b}, {0x61f, 0x61f}, {0x66a, 0x66d}, {0x6d4, 0x6d4},
784    {0x700, 0x70d}, {0x964, 0x965}, {0x970, 0x970}, {0xdf4, 0xdf4},
785    {0xe4f, 0xe4f}, {0xe5a, 0xe5b}, {0xf04, 0xf12}, {0xf85, 0xf85},
786    {0x104a, 0x104f}, {0x10fb, 0x10fb}, {0x1361, 0x1368}, {0x166d, 0x166e},
787    {0x16eb, 0x16ed}, {0x1735, 0x1736}, {0x17d4, 0x17d6}, {0x17d8, 0x17da},
788    {0x1800, 0x1805}, {0x1807, 0x180a}, {0x1944, 0x1945}, {0x2016, 0x2017},
789    {0x2020, 0x2027}, {0x2030, 0x2038}, {0x203b, 0x203e}, {0x2041, 0x2043},
790    {0x2047, 0x2051}, {0x2053, 0x2053}, {0x2057, 0x2057}, {0x23b6, 0x23b6},
791    {0x3001, 0x3003}, {0x303d, 0x303d}, {0xfe30, 0xfe30}, {0xfe45, 0xfe46},
792    {0xfe49, 0xfe4c}, {0xfe50, 0xfe52}, {0xfe54, 0xfe57}, {0xfe5f, 0xfe61},
793    {0xfe68, 0xfe68}, {0xfe6a, 0xfe6b}, {0xff01, 0xff03}, {0xff05, 0xff07},
794    {0xff0a, 0xff0a}, {0xff0c, 0xff0c}, {0xff0e, 0xff0f}, {0xff1a, 0xff1b},
795    {0xff1f, 0xff20}, {0xff3c, 0xff3c}, {0xff61, 0xff61}, {0xff64, 0xff64} };
796static xmlChLRange xmlPoL[] = {{0x10100, 0x10101}, {0x1039f, 0x1039f} };
797static xmlChRangeGroup xmlPoG = {72,2,xmlPoS,xmlPoL};
798
799static xmlChSRange xmlPsS[] = {{0x28, 0x28}, {0x5b, 0x5b}, {0x7b, 0x7b},
800    {0xf3a, 0xf3a}, {0xf3c, 0xf3c}, {0x169b, 0x169b}, {0x201a, 0x201a},
801    {0x201e, 0x201e}, {0x2045, 0x2045}, {0x207d, 0x207d}, {0x208d, 0x208d},
802    {0x2329, 0x2329}, {0x23b4, 0x23b4}, {0x2768, 0x2768}, {0x276a, 0x276a},
803    {0x276c, 0x276c}, {0x276e, 0x276e}, {0x2770, 0x2770}, {0x2772, 0x2772},
804    {0x2774, 0x2774}, {0x27e6, 0x27e6}, {0x27e8, 0x27e8}, {0x27ea, 0x27ea},
805    {0x2983, 0x2983}, {0x2985, 0x2985}, {0x2987, 0x2987}, {0x2989, 0x2989},
806    {0x298b, 0x298b}, {0x298d, 0x298d}, {0x298f, 0x298f}, {0x2991, 0x2991},
807    {0x2993, 0x2993}, {0x2995, 0x2995}, {0x2997, 0x2997}, {0x29d8, 0x29d8},
808    {0x29da, 0x29da}, {0x29fc, 0x29fc}, {0x3008, 0x3008}, {0x300a, 0x300a},
809    {0x300c, 0x300c}, {0x300e, 0x300e}, {0x3010, 0x3010}, {0x3014, 0x3014},
810    {0x3016, 0x3016}, {0x3018, 0x3018}, {0x301a, 0x301a}, {0x301d, 0x301d},
811    {0xfd3e, 0xfd3e}, {0xfe35, 0xfe35}, {0xfe37, 0xfe37}, {0xfe39, 0xfe39},
812    {0xfe3b, 0xfe3b}, {0xfe3d, 0xfe3d}, {0xfe3f, 0xfe3f}, {0xfe41, 0xfe41},
813    {0xfe43, 0xfe43}, {0xfe47, 0xfe47}, {0xfe59, 0xfe59}, {0xfe5b, 0xfe5b},
814    {0xfe5d, 0xfe5d}, {0xff08, 0xff08}, {0xff3b, 0xff3b}, {0xff5b, 0xff5b},
815    {0xff5f, 0xff5f}, {0xff62, 0xff62} };
816static xmlChRangeGroup xmlPsG = {65,0,xmlPsS,NULL};
817
818static xmlChSRange xmlSS[] = {{0x24, 0x24}, {0x2b, 0x2b}, {0x3c, 0x3e},
819    {0x5e, 0x5e}, {0x60, 0x60}, {0x7c, 0x7c}, {0x7e, 0x7e}, {0xa2, 0xa9},
820    {0xac, 0xac}, {0xae, 0xb1}, {0xb4, 0xb4}, {0xb6, 0xb6}, {0xb8, 0xb8},
821    {0xd7, 0xd7}, {0xf7, 0xf7}, {0x2c2, 0x2c5}, {0x2d2, 0x2df},
822    {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375}, {0x384, 0x385},
823    {0x3f6, 0x3f6}, {0x482, 0x482}, {0x60e, 0x60f}, {0x6e9, 0x6e9},
824    {0x6fd, 0x6fe}, {0x9f2, 0x9f3}, {0x9fa, 0x9fa}, {0xaf1, 0xaf1},
825    {0xb70, 0xb70}, {0xbf3, 0xbfa}, {0xe3f, 0xe3f}, {0xf01, 0xf03},
826    {0xf13, 0xf17}, {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36},
827    {0xf38, 0xf38}, {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf},
828    {0x17db, 0x17db}, {0x1940, 0x1940}, {0x19e0, 0x19ff}, {0x1fbd, 0x1fbd},
829    {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf}, {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef},
830    {0x1ffd, 0x1ffe}, {0x2044, 0x2044}, {0x2052, 0x2052}, {0x207a, 0x207c},
831    {0x208a, 0x208c}, {0x20a0, 0x20b1}, {0x2100, 0x2101}, {0x2103, 0x2106},
832    {0x2108, 0x2109}, {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123},
833    {0x2125, 0x2125}, {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e},
834    {0x2132, 0x2132}, {0x213a, 0x213b}, {0x2140, 0x2144}, {0x214a, 0x214b},
835    {0x2190, 0x2328}, {0x232b, 0x23b3}, {0x23b7, 0x23d0}, {0x2400, 0x2426},
836    {0x2440, 0x244a}, {0x249c, 0x24e9}, {0x2500, 0x2617}, {0x2619, 0x267d},
837    {0x2680, 0x2691}, {0x26a0, 0x26a1}, {0x2701, 0x2704}, {0x2706, 0x2709},
838    {0x270c, 0x2727}, {0x2729, 0x274b}, {0x274d, 0x274d}, {0x274f, 0x2752},
839    {0x2756, 0x2756}, {0x2758, 0x275e}, {0x2761, 0x2767}, {0x2794, 0x2794},
840    {0x2798, 0x27af}, {0x27b1, 0x27be}, {0x27d0, 0x27e5}, {0x27f0, 0x2982},
841    {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2b0d}, {0x2e80, 0x2e99},
842    {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004},
843    {0x3012, 0x3013}, {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f},
844    {0x309b, 0x309c}, {0x3190, 0x3191}, {0x3196, 0x319f}, {0x3200, 0x321e},
845    {0x322a, 0x3243}, {0x3250, 0x3250}, {0x3260, 0x327d}, {0x327f, 0x327f},
846    {0x328a, 0x32b0}, {0x32c0, 0x32fe}, {0x3300, 0x33ff}, {0x4dc0, 0x4dff},
847    {0xa490, 0xa4c6}, {0xfb29, 0xfb29}, {0xfdfc, 0xfdfd}, {0xfe62, 0xfe62},
848    {0xfe64, 0xfe66}, {0xfe69, 0xfe69}, {0xff04, 0xff04}, {0xff0b, 0xff0b},
849    {0xff1c, 0xff1e}, {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xff5c, 0xff5c},
850    {0xff5e, 0xff5e}, {0xffe0, 0xffe6}, {0xffe8, 0xffee}, {0xfffc, 0xfffd} };
851static xmlChLRange xmlSL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
852    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
853    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
854    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356}, {0x1d6c1, 0x1d6c1},
855    {0x1d6db, 0x1d6db}, {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715},
856    {0x1d735, 0x1d735}, {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f},
857    {0x1d789, 0x1d789}, {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
858static xmlChRangeGroup xmlSG = {133,20,xmlSS,xmlSL};
859
860static xmlChSRange xmlScS[] = {{0x24, 0x24}, {0xa2, 0xa5}, {0x9f2, 0x9f3},
861    {0xaf1, 0xaf1}, {0xbf9, 0xbf9}, {0xe3f, 0xe3f}, {0x17db, 0x17db},
862    {0x20a0, 0x20b1}, {0xfdfc, 0xfdfc}, {0xfe69, 0xfe69}, {0xff04, 0xff04},
863    {0xffe0, 0xffe1}, {0xffe5, 0xffe6} };
864static xmlChRangeGroup xmlScG = {13,0,xmlScS,NULL};
865
866static xmlChSRange xmlSkS[] = {{0x5e, 0x5e}, {0x60, 0x60}, {0xa8, 0xa8},
867    {0xaf, 0xaf}, {0xb4, 0xb4}, {0xb8, 0xb8}, {0x2c2, 0x2c5},
868    {0x2d2, 0x2df}, {0x2e5, 0x2ed}, {0x2ef, 0x2ff}, {0x374, 0x375},
869    {0x384, 0x385}, {0x1fbd, 0x1fbd}, {0x1fbf, 0x1fc1}, {0x1fcd, 0x1fcf},
870    {0x1fdd, 0x1fdf}, {0x1fed, 0x1fef}, {0x1ffd, 0x1ffe}, {0x309b, 0x309c},
871    {0xff3e, 0xff3e}, {0xff40, 0xff40}, {0xffe3, 0xffe3} };
872static xmlChRangeGroup xmlSkG = {22,0,xmlSkS,NULL};
873
874static xmlChSRange xmlSmS[] = {{0x2b, 0x2b}, {0x3c, 0x3e}, {0x7c, 0x7c},
875    {0x7e, 0x7e}, {0xac, 0xac}, {0xb1, 0xb1}, {0xd7, 0xd7}, {0xf7, 0xf7},
876    {0x3f6, 0x3f6}, {0x2044, 0x2044}, {0x2052, 0x2052}, {0x207a, 0x207c},
877    {0x208a, 0x208c}, {0x2140, 0x2144}, {0x214b, 0x214b}, {0x2190, 0x2194},
878    {0x219a, 0x219b}, {0x21a0, 0x21a0}, {0x21a3, 0x21a3}, {0x21a6, 0x21a6},
879    {0x21ae, 0x21ae}, {0x21ce, 0x21cf}, {0x21d2, 0x21d2}, {0x21d4, 0x21d4},
880    {0x21f4, 0x22ff}, {0x2308, 0x230b}, {0x2320, 0x2321}, {0x237c, 0x237c},
881    {0x239b, 0x23b3}, {0x25b7, 0x25b7}, {0x25c1, 0x25c1}, {0x25f8, 0x25ff},
882    {0x266f, 0x266f}, {0x27d0, 0x27e5}, {0x27f0, 0x27ff}, {0x2900, 0x2982},
883    {0x2999, 0x29d7}, {0x29dc, 0x29fb}, {0x29fe, 0x2aff}, {0xfb29, 0xfb29},
884    {0xfe62, 0xfe62}, {0xfe64, 0xfe66}, {0xff0b, 0xff0b}, {0xff1c, 0xff1e},
885    {0xff5c, 0xff5c}, {0xff5e, 0xff5e}, {0xffe2, 0xffe2}, {0xffe9, 0xffec} };
886static xmlChLRange xmlSmL[] = {{0x1d6c1, 0x1d6c1}, {0x1d6db, 0x1d6db},
887    {0x1d6fb, 0x1d6fb}, {0x1d715, 0x1d715}, {0x1d735, 0x1d735},
888    {0x1d74f, 0x1d74f}, {0x1d76f, 0x1d76f}, {0x1d789, 0x1d789},
889    {0x1d7a9, 0x1d7a9}, {0x1d7c3, 0x1d7c3} };
890static xmlChRangeGroup xmlSmG = {48,10,xmlSmS,xmlSmL};
891
892static xmlChSRange xmlSoS[] = {{0xa6, 0xa7}, {0xa9, 0xa9}, {0xae, 0xae},
893    {0xb0, 0xb0}, {0xb6, 0xb6}, {0x482, 0x482}, {0x60e, 0x60f},
894    {0x6e9, 0x6e9}, {0x6fd, 0x6fe}, {0x9fa, 0x9fa}, {0xb70, 0xb70},
895    {0xbf3, 0xbf8}, {0xbfa, 0xbfa}, {0xf01, 0xf03}, {0xf13, 0xf17},
896    {0xf1a, 0xf1f}, {0xf34, 0xf34}, {0xf36, 0xf36}, {0xf38, 0xf38},
897    {0xfbe, 0xfc5}, {0xfc7, 0xfcc}, {0xfcf, 0xfcf}, {0x1940, 0x1940},
898    {0x19e0, 0x19ff}, {0x2100, 0x2101}, {0x2103, 0x2106}, {0x2108, 0x2109},
899    {0x2114, 0x2114}, {0x2116, 0x2118}, {0x211e, 0x2123}, {0x2125, 0x2125},
900    {0x2127, 0x2127}, {0x2129, 0x2129}, {0x212e, 0x212e}, {0x2132, 0x2132},
901    {0x213a, 0x213b}, {0x214a, 0x214a}, {0x2195, 0x2199}, {0x219c, 0x219f},
902    {0x21a1, 0x21a2}, {0x21a4, 0x21a5}, {0x21a7, 0x21ad}, {0x21af, 0x21cd},
903    {0x21d0, 0x21d1}, {0x21d3, 0x21d3}, {0x21d5, 0x21f3}, {0x2300, 0x2307},
904    {0x230c, 0x231f}, {0x2322, 0x2328}, {0x232b, 0x237b}, {0x237d, 0x239a},
905    {0x23b7, 0x23d0}, {0x2400, 0x2426}, {0x2440, 0x244a}, {0x249c, 0x24e9},
906    {0x2500, 0x25b6}, {0x25b8, 0x25c0}, {0x25c2, 0x25f7}, {0x2600, 0x2617},
907    {0x2619, 0x266e}, {0x2670, 0x267d}, {0x2680, 0x2691}, {0x26a0, 0x26a1},
908    {0x2701, 0x2704}, {0x2706, 0x2709}, {0x270c, 0x2727}, {0x2729, 0x274b},
909    {0x274d, 0x274d}, {0x274f, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x275e},
910    {0x2761, 0x2767}, {0x2794, 0x2794}, {0x2798, 0x27af}, {0x27b1, 0x27be},
911    {0x2800, 0x28ff}, {0x2b00, 0x2b0d}, {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3},
912    {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, {0x3004, 0x3004}, {0x3012, 0x3013},
913    {0x3020, 0x3020}, {0x3036, 0x3037}, {0x303e, 0x303f}, {0x3190, 0x3191},
914    {0x3196, 0x319f}, {0x3200, 0x321e}, {0x322a, 0x3243}, {0x3250, 0x3250},
915    {0x3260, 0x327d}, {0x327f, 0x327f}, {0x328a, 0x32b0}, {0x32c0, 0x32fe},
916    {0x3300, 0x33ff}, {0x4dc0, 0x4dff}, {0xa490, 0xa4c6}, {0xfdfd, 0xfdfd},
917    {0xffe4, 0xffe4}, {0xffe8, 0xffe8}, {0xffed, 0xffee}, {0xfffc, 0xfffd} };
918static xmlChLRange xmlSoL[] = {{0x10102, 0x10102}, {0x10137, 0x1013f},
919    {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, {0x1d12a, 0x1d164},
920    {0x1d16a, 0x1d16c}, {0x1d183, 0x1d184}, {0x1d18c, 0x1d1a9},
921    {0x1d1ae, 0x1d1dd}, {0x1d300, 0x1d356} };
922static xmlChRangeGroup xmlSoG = {103,10,xmlSoS,xmlSoL};
923
924static xmlChSRange xmlZS[] = {{0x20, 0x20}, {0xa0, 0xa0}, {0x1680, 0x1680},
925    {0x180e, 0x180e}, {0x2000, 0x200b}, {0x2028, 0x2029}, {0x202f, 0x202f},
926    {0x205f, 0x205f}, {0x3000, 0x3000} };
927static xmlChRangeGroup xmlZG = {9,0,xmlZS,NULL};
928
929xmlUnicodeNameTable xmlUnicodeBlockTbl = {xmlUnicodeBlocks, 128};
930xmlUnicodeNameTable xmlUnicodeCatTbl = {xmlUnicodeCats, 36};
931
932/**
933 * xmlUnicodeLookup:
934 * @tptr: pointer to the name table
935 * @name: name to be found
936 *
937 * binary table lookup for user-supplied name
938 *
939 * Returns pointer to range function if found, otherwise NULL
940 */
941static xmlIntFunc
942*xmlUnicodeLookup(xmlUnicodeNameTable *tptr, const char *tname) {
943    int low, high, mid, cmp;
944    xmlUnicodeRange *sptr;
945
946    if ((tptr == NULL) || (tname == NULL)) return(NULL);
947
948    low = 0;
949    high = tptr->numentries - 1;
950    sptr = tptr->table;
951    while (low <= high) {
952        mid = (low + high) / 2;
953        if ((cmp=strcmp(tname, sptr[mid].rangename)) == 0)
954            return (sptr[mid].func);
955        if (cmp < 0)
956            high = mid - 1;
957        else
958            low = mid + 1;
959    }
960    return (NULL);   
961}
962
963/**
964 * xmlUCSIsAegeanNumbers:
965 * @code: UCS code point
966 *
967 * Check whether the character is part of AegeanNumbers UCS Block
968 *
969 * Returns 1 if true 0 otherwise
970 */
971int
972xmlUCSIsAegeanNumbers(int code) {
973    return(((code >= 0x10100) && (code <= 0x1013F)));
974}
975
976/**
977 * xmlUCSIsAlphabeticPresentationForms:
978 * @code: UCS code point
979 *
980 * Check whether the character is part of AlphabeticPresentationForms UCS Block
981 *
982 * Returns 1 if true 0 otherwise
983 */
984int
985xmlUCSIsAlphabeticPresentationForms(int code) {
986    return(((code >= 0xFB00) && (code <= 0xFB4F)));
987}
988
989/**
990 * xmlUCSIsArabic:
991 * @code: UCS code point
992 *
993 * Check whether the character is part of Arabic UCS Block
994 *
995 * Returns 1 if true 0 otherwise
996 */
997int
998xmlUCSIsArabic(int code) {
999    return(((code >= 0x0600) && (code <= 0x06FF)));
1000}
1001
1002/**
1003 * xmlUCSIsArabicPresentationFormsA:
1004 * @code: UCS code point
1005 *
1006 * Check whether the character is part of ArabicPresentationForms-A UCS Block
1007 *
1008 * Returns 1 if true 0 otherwise
1009 */
1010int
1011xmlUCSIsArabicPresentationFormsA(int code) {
1012    return(((code >= 0xFB50) && (code <= 0xFDFF)));
1013}
1014
1015/**
1016 * xmlUCSIsArabicPresentationFormsB:
1017 * @code: UCS code point
1018 *
1019 * Check whether the character is part of ArabicPresentationForms-B UCS Block
1020 *
1021 * Returns 1 if true 0 otherwise
1022 */
1023int
1024xmlUCSIsArabicPresentationFormsB(int code) {
1025    return(((code >= 0xFE70) && (code <= 0xFEFF)));
1026}
1027
1028/**
1029 * xmlUCSIsArmenian:
1030 * @code: UCS code point
1031 *
1032 * Check whether the character is part of Armenian UCS Block
1033 *
1034 * Returns 1 if true 0 otherwise
1035 */
1036int
1037xmlUCSIsArmenian(int code) {
1038    return(((code >= 0x0530) && (code <= 0x058F)));
1039}
1040
1041/**
1042 * xmlUCSIsArrows:
1043 * @code: UCS code point
1044 *
1045 * Check whether the character is part of Arrows UCS Block
1046 *
1047 * Returns 1 if true 0 otherwise
1048 */
1049int
1050xmlUCSIsArrows(int code) {
1051    return(((code >= 0x2190) && (code <= 0x21FF)));
1052}
1053
1054/**
1055 * xmlUCSIsBasicLatin:
1056 * @code: UCS code point
1057 *
1058 * Check whether the character is part of BasicLatin UCS Block
1059 *
1060 * Returns 1 if true 0 otherwise
1061 */
1062int
1063xmlUCSIsBasicLatin(int code) {
1064    return(((code >= 0x0000) && (code <= 0x007F)));
1065}
1066
1067/**
1068 * xmlUCSIsBengali:
1069 * @code: UCS code point
1070 *
1071 * Check whether the character is part of Bengali UCS Block
1072 *
1073 * Returns 1 if true 0 otherwise
1074 */
1075int
1076xmlUCSIsBengali(int code) {
1077    return(((code >= 0x0980) && (code <= 0x09FF)));
1078}
1079
1080/**
1081 * xmlUCSIsBlockElements:
1082 * @code: UCS code point
1083 *
1084 * Check whether the character is part of BlockElements UCS Block
1085 *
1086 * Returns 1 if true 0 otherwise
1087 */
1088int
1089xmlUCSIsBlockElements(int code) {
1090    return(((code >= 0x2580) && (code <= 0x259F)));
1091}
1092
1093/**
1094 * xmlUCSIsBopomofo:
1095 * @code: UCS code point
1096 *
1097 * Check whether the character is part of Bopomofo UCS Block
1098 *
1099 * Returns 1 if true 0 otherwise
1100 */
1101int
1102xmlUCSIsBopomofo(int code) {
1103    return(((code >= 0x3100) && (code <= 0x312F)));
1104}
1105
1106/**
1107 * xmlUCSIsBopomofoExtended:
1108 * @code: UCS code point
1109 *
1110 * Check whether the character is part of BopomofoExtended UCS Block
1111 *
1112 * Returns 1 if true 0 otherwise
1113 */
1114int
1115xmlUCSIsBopomofoExtended(int code) {
1116    return(((code >= 0x31A0) && (code <= 0x31BF)));
1117}
1118
1119/**
1120 * xmlUCSIsBoxDrawing:
1121 * @code: UCS code point
1122 *
1123 * Check whether the character is part of BoxDrawing UCS Block
1124 *
1125 * Returns 1 if true 0 otherwise
1126 */
1127int
1128xmlUCSIsBoxDrawing(int code) {
1129    return(((code >= 0x2500) && (code <= 0x257F)));
1130}
1131
1132/**
1133 * xmlUCSIsBraillePatterns:
1134 * @code: UCS code point
1135 *
1136 * Check whether the character is part of BraillePatterns UCS Block
1137 *
1138 * Returns 1 if true 0 otherwise
1139 */
1140int
1141xmlUCSIsBraillePatterns(int code) {
1142    return(((code >= 0x2800) && (code <= 0x28FF)));
1143}
1144
1145/**
1146 * xmlUCSIsBuhid:
1147 * @code: UCS code point
1148 *
1149 * Check whether the character is part of Buhid UCS Block
1150 *
1151 * Returns 1 if true 0 otherwise
1152 */
1153int
1154xmlUCSIsBuhid(int code) {
1155    return(((code >= 0x1740) && (code <= 0x175F)));
1156}
1157
1158/**
1159 * xmlUCSIsByzantineMusicalSymbols:
1160 * @code: UCS code point
1161 *
1162 * Check whether the character is part of ByzantineMusicalSymbols UCS Block
1163 *
1164 * Returns 1 if true 0 otherwise
1165 */
1166int
1167xmlUCSIsByzantineMusicalSymbols(int code) {
1168    return(((code >= 0x1D000) && (code <= 0x1D0FF)));
1169}
1170
1171/**
1172 * xmlUCSIsCJKCompatibility:
1173 * @code: UCS code point
1174 *
1175 * Check whether the character is part of CJKCompatibility UCS Block
1176 *
1177 * Returns 1 if true 0 otherwise
1178 */
1179int
1180xmlUCSIsCJKCompatibility(int code) {
1181    return(((code >= 0x3300) && (code <= 0x33FF)));
1182}
1183
1184/**
1185 * xmlUCSIsCJKCompatibilityForms:
1186 * @code: UCS code point
1187 *
1188 * Check whether the character is part of CJKCompatibilityForms UCS Block
1189 *
1190 * Returns 1 if true 0 otherwise
1191 */
1192int
1193xmlUCSIsCJKCompatibilityForms(int code) {
1194    return(((code >= 0xFE30) && (code <= 0xFE4F)));
1195}
1196
1197/**
1198 * xmlUCSIsCJKCompatibilityIdeographs:
1199 * @code: UCS code point
1200 *
1201 * Check whether the character is part of CJKCompatibilityIdeographs UCS Block
1202 *
1203 * Returns 1 if true 0 otherwise
1204 */
1205int
1206xmlUCSIsCJKCompatibilityIdeographs(int code) {
1207    return(((code >= 0xF900) && (code <= 0xFAFF)));
1208}
1209
1210/**
1211 * xmlUCSIsCJKCompatibilityIdeographsSupplement:
1212 * @code: UCS code point
1213 *
1214 * Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block
1215 *
1216 * Returns 1 if true 0 otherwise
1217 */
1218int
1219xmlUCSIsCJKCompatibilityIdeographsSupplement(int code) {
1220    return(((code >= 0x2F800) && (code <= 0x2FA1F)));
1221}
1222
1223/**
1224 * xmlUCSIsCJKRadicalsSupplement:
1225 * @code: UCS code point
1226 *
1227 * Check whether the character is part of CJKRadicalsSupplement UCS Block
1228 *
1229 * Returns 1 if true 0 otherwise
1230 */
1231int
1232xmlUCSIsCJKRadicalsSupplement(int code) {
1233    return(((code >= 0x2E80) && (code <= 0x2EFF)));
1234}
1235
1236/**
1237 * xmlUCSIsCJKSymbolsandPunctuation:
1238 * @code: UCS code point
1239 *
1240 * Check whether the character is part of CJKSymbolsandPunctuation UCS Block
1241 *
1242 * Returns 1 if true 0 otherwise
1243 */
1244int
1245xmlUCSIsCJKSymbolsandPunctuation(int code) {
1246    return(((code >= 0x3000) && (code <= 0x303F)));
1247}
1248
1249/**
1250 * xmlUCSIsCJKUnifiedIdeographs:
1251 * @code: UCS code point
1252 *
1253 * Check whether the character is part of CJKUnifiedIdeographs UCS Block
1254 *
1255 * Returns 1 if true 0 otherwise
1256 */
1257int
1258xmlUCSIsCJKUnifiedIdeographs(int code) {
1259    return(((code >= 0x4E00) && (code <= 0x9FFF)));
1260}
1261
1262/**
1263 * xmlUCSIsCJKUnifiedIdeographsExtensionA:
1264 * @code: UCS code point
1265 *
1266 * Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block
1267 *
1268 * Returns 1 if true 0 otherwise
1269 */
1270int
1271xmlUCSIsCJKUnifiedIdeographsExtensionA(int code) {
1272    return(((code >= 0x3400) && (code <= 0x4DBF)));
1273}
1274
1275/**
1276 * xmlUCSIsCJKUnifiedIdeographsExtensionB:
1277 * @code: UCS code point
1278 *
1279 * Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block
1280 *
1281 * Returns 1 if true 0 otherwise
1282 */
1283int
1284xmlUCSIsCJKUnifiedIdeographsExtensionB(int code) {
1285    return(((code >= 0x20000) && (code <= 0x2A6DF)));
1286}
1287
1288/**
1289 * xmlUCSIsCherokee:
1290 * @code: UCS code point
1291 *
1292 * Check whether the character is part of Cherokee UCS Block
1293 *
1294 * Returns 1 if true 0 otherwise
1295 */
1296int
1297xmlUCSIsCherokee(int code) {
1298    return(((code >= 0x13A0) && (code <= 0x13FF)));
1299}
1300
1301/**
1302 * xmlUCSIsCombiningDiacriticalMarks:
1303 * @code: UCS code point
1304 *
1305 * Check whether the character is part of CombiningDiacriticalMarks UCS Block
1306 *
1307 * Returns 1 if true 0 otherwise
1308 */
1309int
1310xmlUCSIsCombiningDiacriticalMarks(int code) {
1311    return(((code >= 0x0300) && (code <= 0x036F)));
1312}
1313
1314/**
1315 * xmlUCSIsCombiningDiacriticalMarksforSymbols:
1316 * @code: UCS code point
1317 *
1318 * Check whether the character is part of CombiningDiacriticalMarksforSymbols UCS Block
1319 *
1320 * Returns 1 if true 0 otherwise
1321 */
1322int
1323xmlUCSIsCombiningDiacriticalMarksforSymbols(int code) {
1324    return(((code >= 0x20D0) && (code <= 0x20FF)));
1325}
1326
1327/**
1328 * xmlUCSIsCombiningHalfMarks:
1329 * @code: UCS code point
1330 *
1331 * Check whether the character is part of CombiningHalfMarks UCS Block
1332 *
1333 * Returns 1 if true 0 otherwise
1334 */
1335int
1336xmlUCSIsCombiningHalfMarks(int code) {
1337    return(((code >= 0xFE20) && (code <= 0xFE2F)));
1338}
1339
1340/**
1341 * xmlUCSIsCombiningMarksforSymbols:
1342 * @code: UCS code point
1343 *
1344 * Check whether the character is part of CombiningMarksforSymbols UCS Block
1345 *
1346 * Returns 1 if true 0 otherwise
1347 */
1348int
1349xmlUCSIsCombiningMarksforSymbols(int code) {
1350    return(((code >= 0x20D0) && (code <= 0x20FF)));
1351}
1352
1353/**
1354 * xmlUCSIsControlPictures:
1355 * @code: UCS code point
1356 *
1357 * Check whether the character is part of ControlPictures UCS Block
1358 *
1359 * Returns 1 if true 0 otherwise
1360 */
1361int
1362xmlUCSIsControlPictures(int code) {
1363    return(((code >= 0x2400) && (code <= 0x243F)));
1364}
1365
1366/**
1367 * xmlUCSIsCurrencySymbols:
1368 * @code: UCS code point
1369 *
1370 * Check whether the character is part of CurrencySymbols UCS Block
1371 *
1372 * Returns 1 if true 0 otherwise
1373 */
1374int
1375xmlUCSIsCurrencySymbols(int code) {
1376    return(((code >= 0x20A0) && (code <= 0x20CF)));
1377}
1378
1379/**
1380 * xmlUCSIsCypriotSyllabary:
1381 * @code: UCS code point
1382 *
1383 * Check whether the character is part of CypriotSyllabary UCS Block
1384 *
1385 * Returns 1 if true 0 otherwise
1386 */
1387int
1388xmlUCSIsCypriotSyllabary(int code) {
1389    return(((code >= 0x10800) && (code <= 0x1083F)));
1390}
1391
1392/**
1393 * xmlUCSIsCyrillic:
1394 * @code: UCS code point
1395 *
1396 * Check whether the character is part of Cyrillic UCS Block
1397 *
1398 * Returns 1 if true 0 otherwise
1399 */
1400int
1401xmlUCSIsCyrillic(int code) {
1402    return(((code >= 0x0400) && (code <= 0x04FF)));
1403}
1404
1405/**
1406 * xmlUCSIsCyrillicSupplement:
1407 * @code: UCS code point
1408 *
1409 * Check whether the character is part of CyrillicSupplement UCS Block
1410 *
1411 * Returns 1 if true 0 otherwise
1412 */
1413int
1414xmlUCSIsCyrillicSupplement(int code) {
1415    return(((code >= 0x0500) && (code <= 0x052F)));
1416}
1417
1418/**
1419 * xmlUCSIsDeseret:
1420 * @code: UCS code point
1421 *
1422 * Check whether the character is part of Deseret UCS Block
1423 *
1424 * Returns 1 if true 0 otherwise
1425 */
1426int
1427xmlUCSIsDeseret(int code) {
1428    return(((code >= 0x10400) && (code <= 0x1044F)));
1429}
1430
1431/**
1432 * xmlUCSIsDevanagari:
1433 * @code: UCS code point
1434 *
1435 * Check whether the character is part of Devanagari UCS Block
1436 *
1437 * Returns 1 if true 0 otherwise
1438 */
1439int
1440xmlUCSIsDevanagari(int code) {
1441    return(((code >= 0x0900) && (code <= 0x097F)));
1442}
1443
1444/**
1445 * xmlUCSIsDingbats:
1446 * @code: UCS code point
1447 *
1448 * Check whether the character is part of Dingbats UCS Block
1449 *
1450 * Returns 1 if true 0 otherwise
1451 */
1452int
1453xmlUCSIsDingbats(int code) {
1454    return(((code >= 0x2700) && (code <= 0x27BF)));
1455}
1456
1457/**
1458 * xmlUCSIsEnclosedAlphanumerics:
1459 * @code: UCS code point
1460 *
1461 * Check whether the character is part of EnclosedAlphanumerics UCS Block
1462 *
1463 * Returns 1 if true 0 otherwise
1464 */
1465int
1466xmlUCSIsEnclosedAlphanumerics(int code) {
1467    return(((code >= 0x2460) && (code <= 0x24FF)));
1468}
1469
1470/**
1471 * xmlUCSIsEnclosedCJKLettersandMonths:
1472 * @code: UCS code point
1473 *
1474 * Check whether the character is part of EnclosedCJKLettersandMonths UCS Block
1475 *
1476 * Returns 1 if true 0 otherwise
1477 */
1478int
1479xmlUCSIsEnclosedCJKLettersandMonths(int code) {
1480    return(((code >= 0x3200) && (code <= 0x32FF)));
1481}
1482
1483/**
1484 * xmlUCSIsEthiopic:
1485 * @code: UCS code point
1486 *
1487 * Check whether the character is part of Ethiopic UCS Block
1488 *
1489 * Returns 1 if true 0 otherwise
1490 */
1491int
1492xmlUCSIsEthiopic(int code) {
1493    return(((code >= 0x1200) && (code <= 0x137F)));
1494}
1495
1496/**
1497 * xmlUCSIsGeneralPunctuation:
1498 * @code: UCS code point
1499 *
1500 * Check whether the character is part of GeneralPunctuation UCS Block
1501 *
1502 * Returns 1 if true 0 otherwise
1503 */
1504int
1505xmlUCSIsGeneralPunctuation(int code) {
1506    return(((code >= 0x2000) && (code <= 0x206F)));
1507}
1508
1509/**
1510 * xmlUCSIsGeometricShapes:
1511 * @code: UCS code point
1512 *
1513 * Check whether the character is part of GeometricShapes UCS Block
1514 *
1515 * Returns 1 if true 0 otherwise
1516 */
1517int
1518xmlUCSIsGeometricShapes(int code) {
1519    return(((code >= 0x25A0) && (code <= 0x25FF)));
1520}
1521
1522/**
1523 * xmlUCSIsGeorgian:
1524 * @code: UCS code point
1525 *
1526 * Check whether the character is part of Georgian UCS Block
1527 *
1528 * Returns 1 if true 0 otherwise
1529 */
1530int
1531xmlUCSIsGeorgian(int code) {
1532    return(((code >= 0x10A0) && (code <= 0x10FF)));
1533}
1534
1535/**
1536 * xmlUCSIsGothic:
1537 * @code: UCS code point
1538 *
1539 * Check whether the character is part of Gothic UCS Block
1540 *
1541 * Returns 1 if true 0 otherwise
1542 */
1543int
1544xmlUCSIsGothic(int code) {
1545    return(((code >= 0x10330) && (code <= 0x1034F)));
1546}
1547
1548/**
1549 * xmlUCSIsGreek:
1550 * @code: UCS code point
1551 *
1552 * Check whether the character is part of Greek UCS Block
1553 *
1554 * Returns 1 if true 0 otherwise
1555 */
1556int
1557xmlUCSIsGreek(int code) {
1558    return(((code >= 0x0370) && (code <= 0x03FF)));
1559}
1560
1561/**
1562 * xmlUCSIsGreekExtended:
1563 * @code: UCS code point
1564 *
1565 * Check whether the character is part of GreekExtended UCS Block
1566 *
1567 * Returns 1 if true 0 otherwise
1568 */
1569int
1570xmlUCSIsGreekExtended(int code) {
1571    return(((code >= 0x1F00) && (code <= 0x1FFF)));
1572}
1573
1574/**
1575 * xmlUCSIsGreekandCoptic:
1576 * @code: UCS code point
1577 *
1578 * Check whether the character is part of GreekandCoptic UCS Block
1579 *
1580 * Returns 1 if true 0 otherwise
1581 */
1582int
1583xmlUCSIsGreekandCoptic(int code) {
1584    return(((code >= 0x0370) && (code <= 0x03FF)));
1585}
1586
1587/**
1588 * xmlUCSIsGujarati:
1589 * @code: UCS code point
1590 *
1591 * Check whether the character is part of Gujarati UCS Block
1592 *
1593 * Returns 1 if true 0 otherwise
1594 */
1595int
1596xmlUCSIsGujarati(int code) {
1597    return(((code >= 0x0A80) && (code <= 0x0AFF)));
1598}
1599
1600/**
1601 * xmlUCSIsGurmukhi:
1602 * @code: UCS code point
1603 *
1604 * Check whether the character is part of Gurmukhi UCS Block
1605 *
1606 * Returns 1 if true 0 otherwise
1607 */
1608int
1609xmlUCSIsGurmukhi(int code) {
1610    return(((code >= 0x0A00) && (code <= 0x0A7F)));
1611}
1612
1613/**
1614 * xmlUCSIsHalfwidthandFullwidthForms:
1615 * @code: UCS code point
1616 *
1617 * Check whether the character is part of HalfwidthandFullwidthForms UCS Block
1618 *
1619 * Returns 1 if true 0 otherwise
1620 */
1621int
1622xmlUCSIsHalfwidthandFullwidthForms(int code) {
1623    return(((code >= 0xFF00) && (code <= 0xFFEF)));
1624}
1625
1626/**
1627 * xmlUCSIsHangulCompatibilityJamo:
1628 * @code: UCS code point
1629 *
1630 * Check whether the character is part of HangulCompatibilityJamo UCS Block
1631 *
1632 * Returns 1 if true 0 otherwise
1633 */
1634int
1635xmlUCSIsHangulCompatibilityJamo(int code) {
1636    return(((code >= 0x3130) && (code <= 0x318F)));
1637}
1638
1639/**
1640 * xmlUCSIsHangulJamo:
1641 * @code: UCS code point
1642 *
1643 * Check whether the character is part of HangulJamo UCS Block
1644 *
1645 * Returns 1 if true 0 otherwise
1646 */
1647int
1648xmlUCSIsHangulJamo(int code) {
1649    return(((code >= 0x1100) && (code <= 0x11FF)));
1650}
1651
1652/**
1653 * xmlUCSIsHangulSyllables:
1654 * @code: UCS code point
1655 *
1656 * Check whether the character is part of HangulSyllables UCS Block
1657 *
1658 * Returns 1 if true 0 otherwise
1659 */
1660int
1661xmlUCSIsHangulSyllables(int code) {
1662    return(((code >= 0xAC00) && (code <= 0xD7AF)));
1663}
1664
1665/**
1666 * xmlUCSIsHanunoo:
1667 * @code: UCS code point
1668 *
1669 * Check whether the character is part of Hanunoo UCS Block
1670 *
1671 * Returns 1 if true 0 otherwise
1672 */
1673int
1674xmlUCSIsHanunoo(int code) {
1675    return(((code >= 0x1720) && (code <= 0x173F)));
1676}
1677
1678/**
1679 * xmlUCSIsHebrew:
1680 * @code: UCS code point
1681 *
1682 * Check whether the character is part of Hebrew UCS Block
1683 *
1684 * Returns 1 if true 0 otherwise
1685 */
1686int
1687xmlUCSIsHebrew(int code) {
1688    return(((code >= 0x0590) && (code <= 0x05FF)));
1689}
1690
1691/**
1692 * xmlUCSIsHighPrivateUseSurrogates:
1693 * @code: UCS code point
1694 *
1695 * Check whether the character is part of HighPrivateUseSurrogates UCS Block
1696 *
1697 * Returns 1 if true 0 otherwise
1698 */
1699int
1700xmlUCSIsHighPrivateUseSurrogates(int code) {
1701    return(((code >= 0xDB80) && (code <= 0xDBFF)));
1702}
1703
1704/**
1705 * xmlUCSIsHighSurrogates:
1706 * @code: UCS code point
1707 *
1708 * Check whether the character is part of HighSurrogates UCS Block
1709 *
1710 * Returns 1 if true 0 otherwise
1711 */
1712int
1713xmlUCSIsHighSurrogates(int code) {
1714    return(((code >= 0xD800) && (code <= 0xDB7F)));
1715}
1716
1717/**
1718 * xmlUCSIsHiragana:
1719 * @code: UCS code point
1720 *
1721 * Check whether the character is part of Hiragana UCS Block
1722 *
1723 * Returns 1 if true 0 otherwise
1724 */
1725int
1726xmlUCSIsHiragana(int code) {
1727    return(((code >= 0x3040) && (code <= 0x309F)));
1728}
1729
1730/**
1731 * xmlUCSIsIPAExtensions:
1732 * @code: UCS code point
1733 *
1734 * Check whether the character is part of IPAExtensions UCS Block
1735 *
1736 * Returns 1 if true 0 otherwise
1737 */
1738int
1739xmlUCSIsIPAExtensions(int code) {
1740    return(((code >= 0x0250) && (code <= 0x02AF)));
1741}
1742
1743/**
1744 * xmlUCSIsIdeographicDescriptionCharacters:
1745 * @code: UCS code point
1746 *
1747 * Check whether the character is part of IdeographicDescriptionCharacters UCS Block
1748 *
1749 * Returns 1 if true 0 otherwise
1750 */
1751int
1752xmlUCSIsIdeographicDescriptionCharacters(int code) {
1753    return(((code >= 0x2FF0) && (code <= 0x2FFF)));
1754}
1755
1756/**
1757 * xmlUCSIsKanbun:
1758 * @code: UCS code point
1759 *
1760 * Check whether the character is part of Kanbun UCS Block
1761 *
1762 * Returns 1 if true 0 otherwise
1763 */
1764int
1765xmlUCSIsKanbun(int code) {
1766    return(((code >= 0x3190) && (code <= 0x319F)));
1767}
1768
1769/**
1770 * xmlUCSIsKangxiRadicals:
1771 * @code: UCS code point
1772 *
1773 * Check whether the character is part of KangxiRadicals UCS Block
1774 *
1775 * Returns 1 if true 0 otherwise
1776 */
1777int
1778xmlUCSIsKangxiRadicals(int code) {
1779    return(((code >= 0x2F00) && (code <= 0x2FDF)));
1780}
1781
1782/**
1783 * xmlUCSIsKannada:
1784 * @code: UCS code point
1785 *
1786 * Check whether the character is part of Kannada UCS Block
1787 *
1788 * Returns 1 if true 0 otherwise
1789 */
1790int
1791xmlUCSIsKannada(int code) {
1792    return(((code >= 0x0C80) && (code <= 0x0CFF)));
1793}
1794
1795/**
1796 * xmlUCSIsKatakana:
1797 * @code: UCS code point
1798 *
1799 * Check whether the character is part of Katakana UCS Block
1800 *
1801 * Returns 1 if true 0 otherwise
1802 */
1803int
1804xmlUCSIsKatakana(int code) {
1805    return(((code >= 0x30A0) && (code <= 0x30FF)));
1806}
1807
1808/**
1809 * xmlUCSIsKatakanaPhoneticExtensions:
1810 * @code: UCS code point
1811 *
1812 * Check whether the character is part of KatakanaPhoneticExtensions UCS Block
1813 *
1814 * Returns 1 if true 0 otherwise
1815 */
1816int
1817xmlUCSIsKatakanaPhoneticExtensions(int code) {
1818    return(((code >= 0x31F0) && (code <= 0x31FF)));
1819}
1820
1821/**
1822 * xmlUCSIsKhmer:
1823 * @code: UCS code point
1824 *
1825 * Check whether the character is part of Khmer UCS Block
1826 *
1827 * Returns 1 if true 0 otherwise
1828 */
1829int
1830xmlUCSIsKhmer(int code) {
1831    return(((code >= 0x1780) && (code <= 0x17FF)));
1832}
1833
1834/**
1835 * xmlUCSIsKhmerSymbols:
1836 * @code: UCS code point
1837 *
1838 * Check whether the character is part of KhmerSymbols UCS Block
1839 *
1840 * Returns 1 if true 0 otherwise
1841 */
1842int
1843xmlUCSIsKhmerSymbols(int code) {
1844    return(((code >= 0x19E0) && (code <= 0x19FF)));
1845}
1846
1847/**
1848 * xmlUCSIsLao:
1849 * @code: UCS code point
1850 *
1851 * Check whether the character is part of Lao UCS Block
1852 *
1853 * Returns 1 if true 0 otherwise
1854 */
1855int
1856xmlUCSIsLao(int code) {
1857    return(((code >= 0x0E80) && (code <= 0x0EFF)));
1858}
1859
1860/**
1861 * xmlUCSIsLatin1Supplement:
1862 * @code: UCS code point
1863 *
1864 * Check whether the character is part of Latin-1Supplement UCS Block
1865 *
1866 * Returns 1 if true 0 otherwise
1867 */
1868int
1869xmlUCSIsLatin1Supplement(int code) {
1870    return(((code >= 0x0080) && (code <= 0x00FF)));
1871}
1872
1873/**
1874 * xmlUCSIsLatinExtendedA:
1875 * @code: UCS code point
1876 *
1877 * Check whether the character is part of LatinExtended-A UCS Block
1878 *
1879 * Returns 1 if true 0 otherwise
1880 */
1881int
1882xmlUCSIsLatinExtendedA(int code) {
1883    return(((code >= 0x0100) && (code <= 0x017F)));
1884}
1885
1886/**
1887 * xmlUCSIsLatinExtendedB:
1888 * @code: UCS code point
1889 *
1890 * Check whether the character is part of LatinExtended-B UCS Block
1891 *
1892 * Returns 1 if true 0 otherwise
1893 */
1894int
1895xmlUCSIsLatinExtendedB(int code) {
1896    return(((code >= 0x0180) && (code <= 0x024F)));
1897}
1898
1899/**
1900 * xmlUCSIsLatinExtendedAdditional:
1901 * @code: UCS code point
1902 *
1903 * Check whether the character is part of LatinExtendedAdditional UCS Block
1904 *
1905 * Returns 1 if true 0 otherwise
1906 */
1907int
1908xmlUCSIsLatinExtendedAdditional(int code) {
1909    return(((code >= 0x1E00) && (code <= 0x1EFF)));
1910}
1911
1912/**
1913 * xmlUCSIsLetterlikeSymbols:
1914 * @code: UCS code point
1915 *
1916 * Check whether the character is part of LetterlikeSymbols UCS Block
1917 *
1918 * Returns 1 if true 0 otherwise
1919 */
1920int
1921xmlUCSIsLetterlikeSymbols(int code) {
1922    return(((code >= 0x2100) && (code <= 0x214F)));
1923}
1924
1925/**
1926 * xmlUCSIsLimbu:
1927 * @code: UCS code point
1928 *
1929 * Check whether the character is part of Limbu UCS Block
1930 *
1931 * Returns 1 if true 0 otherwise
1932 */
1933int
1934xmlUCSIsLimbu(int code) {
1935    return(((code >= 0x1900) && (code <= 0x194F)));
1936}
1937
1938/**
1939 * xmlUCSIsLinearBIdeograms:
1940 * @code: UCS code point
1941 *
1942 * Check whether the character is part of LinearBIdeograms UCS Block
1943 *
1944 * Returns 1 if true 0 otherwise
1945 */
1946int
1947xmlUCSIsLinearBIdeograms(int code) {
1948    return(((code >= 0x10080) && (code <= 0x100FF)));
1949}
1950
1951/**
1952 * xmlUCSIsLinearBSyllabary:
1953 * @code: UCS code point
1954 *
1955 * Check whether the character is part of LinearBSyllabary UCS Block
1956 *
1957 * Returns 1 if true 0 otherwise
1958 */
1959int
1960xmlUCSIsLinearBSyllabary(int code) {
1961    return(((code >= 0x10000) && (code <= 0x1007F)));
1962}
1963
1964/**
1965 * xmlUCSIsLowSurrogates:
1966 * @code: UCS code point
1967 *
1968 * Check whether the character is part of LowSurrogates UCS Block
1969 *
1970 * Returns 1 if true 0 otherwise
1971 */
1972int
1973xmlUCSIsLowSurrogates(int code) {
1974    return(((code >= 0xDC00) && (code <= 0xDFFF)));
1975}
1976
1977/**
1978 * xmlUCSIsMalayalam:
1979 * @code: UCS code point
1980 *
1981 * Check whether the character is part of Malayalam UCS Block
1982 *
1983 * Returns 1 if true 0 otherwise
1984 */
1985int
1986xmlUCSIsMalayalam(int code) {
1987    return(((code >= 0x0D00) && (code <= 0x0D7F)));
1988}
1989
1990/**
1991 * xmlUCSIsMathematicalAlphanumericSymbols:
1992 * @code: UCS code point
1993 *
1994 * Check whether the character is part of MathematicalAlphanumericSymbols UCS Block
1995 *
1996 * Returns 1 if true 0 otherwise
1997 */
1998int
1999xmlUCSIsMathematicalAlphanumericSymbols(int code) {
2000    return(((code >= 0x1D400) && (code <= 0x1D7FF)));
2001}
2002
2003/**
2004 * xmlUCSIsMathematicalOperators:
2005 * @code: UCS code point
2006 *
2007 * Check whether the character is part of MathematicalOperators UCS Block
2008 *
2009 * Returns 1 if true 0 otherwise
2010 */
2011int
2012xmlUCSIsMathematicalOperators(int code) {
2013    return(((code >= 0x2200) && (code <= 0x22FF)));
2014}
2015
2016/**
2017 * xmlUCSIsMiscellaneousMathematicalSymbolsA:
2018 * @code: UCS code point
2019 *
2020 * Check whether the character is part of MiscellaneousMathematicalSymbols-A UCS Block
2021 *
2022 * Returns 1 if true 0 otherwise
2023 */
2024int
2025xmlUCSIsMiscellaneousMathematicalSymbolsA(int code) {
2026    return(((code >= 0x27C0) && (code <= 0x27EF)));
2027}
2028
2029/**
2030 * xmlUCSIsMiscellaneousMathematicalSymbolsB:
2031 * @code: UCS code point
2032 *
2033 * Check whether the character is part of MiscellaneousMathematicalSymbols-B UCS Block
2034 *
2035 * Returns 1 if true 0 otherwise
2036 */
2037int
2038xmlUCSIsMiscellaneousMathematicalSymbolsB(int code) {
2039    return(((code >= 0x2980) && (code <= 0x29FF)));
2040}
2041
2042/**
2043 * xmlUCSIsMiscellaneousSymbols:
2044 * @code: UCS code point
2045 *
2046 * Check whether the character is part of MiscellaneousSymbols UCS Block
2047 *
2048 * Returns 1 if true 0 otherwise
2049 */
2050int
2051xmlUCSIsMiscellaneousSymbols(int code) {
2052    return(((code >= 0x2600) && (code <= 0x26FF)));
2053}
2054
2055/**
2056 * xmlUCSIsMiscellaneousSymbolsandArrows:
2057 * @code: UCS code point
2058 *
2059 * Check whether the character is part of MiscellaneousSymbolsandArrows UCS Block
2060 *
2061 * Returns 1 if true 0 otherwise
2062 */
2063int
2064xmlUCSIsMiscellaneousSymbolsandArrows(int code) {
2065    return(((code >= 0x2B00) && (code <= 0x2BFF)));
2066}
2067
2068/**
2069 * xmlUCSIsMiscellaneousTechnical:
2070 * @code: UCS code point
2071 *
2072 * Check whether the character is part of MiscellaneousTechnical UCS Block
2073 *
2074 * Returns 1 if true 0 otherwise
2075 */
2076int
2077xmlUCSIsMiscellaneousTechnical(int code) {
2078    return(((code >= 0x2300) && (code <= 0x23FF)));
2079}
2080
2081/**
2082 * xmlUCSIsMongolian:
2083 * @code: UCS code point
2084 *
2085 * Check whether the character is part of Mongolian UCS Block
2086 *
2087 * Returns 1 if true 0 otherwise
2088 */
2089int
2090xmlUCSIsMongolian(int code) {
2091    return(((code >= 0x1800) && (code <= 0x18AF)));
2092}
2093
2094/**
2095 * xmlUCSIsMusicalSymbols:
2096 * @code: UCS code point
2097 *
2098 * Check whether the character is part of MusicalSymbols UCS Block
2099 *
2100 * Returns 1 if true 0 otherwise
2101 */
2102int
2103xmlUCSIsMusicalSymbols(int code) {
2104    return(((code >= 0x1D100) && (code <= 0x1D1FF)));
2105}
2106
2107/**
2108 * xmlUCSIsMyanmar:
2109 * @code: UCS code point
2110 *
2111 * Check whether the character is part of Myanmar UCS Block
2112 *
2113 * Returns 1 if true 0 otherwise
2114 */
2115int
2116xmlUCSIsMyanmar(int code) {
2117    return(((code >= 0x1000) && (code <= 0x109F)));
2118}
2119
2120/**
2121 * xmlUCSIsNumberForms:
2122 * @code: UCS code point
2123 *
2124 * Check whether the character is part of NumberForms UCS Block
2125 *
2126 * Returns 1 if true 0 otherwise
2127 */
2128int
2129xmlUCSIsNumberForms(int code) {
2130    return(((code >= 0x2150) && (code <= 0x218F)));
2131}
2132
2133/**
2134 * xmlUCSIsOgham:
2135 * @code: UCS code point
2136 *
2137 * Check whether the character is part of Ogham UCS Block
2138 *
2139 * Returns 1 if true 0 otherwise
2140 */
2141int
2142xmlUCSIsOgham(int code) {
2143    return(((code >= 0x1680) && (code <= 0x169F)));
2144}
2145
2146/**
2147 * xmlUCSIsOldItalic:
2148 * @code: UCS code point
2149 *
2150 * Check whether the character is part of OldItalic UCS Block
2151 *
2152 * Returns 1 if true 0 otherwise
2153 */
2154int
2155xmlUCSIsOldItalic(int code) {
2156    return(((code >= 0x10300) && (code <= 0x1032F)));
2157}
2158
2159/**
2160 * xmlUCSIsOpticalCharacterRecognition:
2161 * @code: UCS code point
2162 *
2163 * Check whether the character is part of OpticalCharacterRecognition UCS Block
2164 *
2165 * Returns 1 if true 0 otherwise
2166 */
2167int
2168xmlUCSIsOpticalCharacterRecognition(int code) {
2169    return(((code >= 0x2440) && (code <= 0x245F)));
2170}
2171
2172/**
2173 * xmlUCSIsOriya:
2174 * @code: UCS code point
2175 *
2176 * Check whether the character is part of Oriya UCS Block
2177 *
2178 * Returns 1 if true 0 otherwise
2179 */
2180int
2181xmlUCSIsOriya(int code) {
2182    return(((code >= 0x0B00) && (code <= 0x0B7F)));
2183}
2184
2185/**
2186 * xmlUCSIsOsmanya:
2187 * @code: UCS code point
2188 *
2189 * Check whether the character is part of Osmanya UCS Block
2190 *
2191 * Returns 1 if true 0 otherwise
2192 */
2193int
2194xmlUCSIsOsmanya(int code) {
2195    return(((code >= 0x10480) && (code <= 0x104AF)));
2196}
2197
2198/**
2199 * xmlUCSIsPhoneticExtensions:
2200 * @code: UCS code point
2201 *
2202 * Check whether the character is part of PhoneticExtensions UCS Block
2203 *
2204 * Returns 1 if true 0 otherwise
2205 */
2206int
2207xmlUCSIsPhoneticExtensions(int code) {
2208    return(((code >= 0x1D00) && (code <= 0x1D7F)));
2209}
2210
2211/**
2212 * xmlUCSIsPrivateUse:
2213 * @code: UCS code point
2214 *
2215 * Check whether the character is part of PrivateUse UCS Block
2216 *
2217 * Returns 1 if true 0 otherwise
2218 */
2219int
2220xmlUCSIsPrivateUse(int code) {
2221    return(((code >= 0xE000) && (code <= 0xF8FF)) ||
2222           ((code >= 0xF0000) && (code <= 0xFFFFF)) ||
2223           ((code >= 0x100000) && (code <= 0x10FFFF)));
2224}
2225
2226/**
2227 * xmlUCSIsPrivateUseArea:
2228 * @code: UCS code point
2229 *
2230 * Check whether the character is part of PrivateUseArea UCS Block
2231 *
2232 * Returns 1 if true 0 otherwise
2233 */
2234int
2235xmlUCSIsPrivateUseArea(int code) {
2236    return(((code >= 0xE000) && (code <= 0xF8FF)));
2237}
2238
2239/**
2240 * xmlUCSIsRunic:
2241 * @code: UCS code point
2242 *
2243 * Check whether the character is part of Runic UCS Block
2244 *
2245 * Returns 1 if true 0 otherwise
2246 */
2247int
2248xmlUCSIsRunic(int code) {
2249    return(((code >= 0x16A0) && (code <= 0x16FF)));
2250}
2251
2252/**
2253 * xmlUCSIsShavian:
2254 * @code: UCS code point
2255 *
2256 * Check whether the character is part of Shavian UCS Block
2257 *
2258 * Returns 1 if true 0 otherwise
2259 */
2260int
2261xmlUCSIsShavian(int code) {
2262    return(((code >= 0x10450) && (code <= 0x1047F)));
2263}
2264
2265/**
2266 * xmlUCSIsSinhala:
2267 * @code: UCS code point
2268 *
2269 * Check whether the character is part of Sinhala UCS Block
2270 *
2271 * Returns 1 if true 0 otherwise
2272 */
2273int
2274xmlUCSIsSinhala(int code) {
2275    return(((code >= 0x0D80) && (code <= 0x0DFF)));
2276}
2277
2278/**
2279 * xmlUCSIsSmallFormVariants:
2280 * @code: UCS code point
2281 *
2282 * Check whether the character is part of SmallFormVariants UCS Block
2283 *
2284 * Returns 1 if true 0 otherwise
2285 */
2286int
2287xmlUCSIsSmallFormVariants(int code) {
2288    return(((code >= 0xFE50) && (code <= 0xFE6F)));
2289}
2290
2291/**
2292 * xmlUCSIsSpacingModifierLetters:
2293 * @code: UCS code point
2294 *
2295 * Check whether the character is part of SpacingModifierLetters UCS Block
2296 *
2297 * Returns 1 if true 0 otherwise
2298 */
2299int
2300xmlUCSIsSpacingModifierLetters(int code) {
2301    return(((code >= 0x02B0) && (code <= 0x02FF)));
2302}
2303
2304/**
2305 * xmlUCSIsSpecials:
2306 * @code: UCS code point
2307 *
2308 * Check whether the character is part of Specials UCS Block
2309 *
2310 * Returns 1 if true 0 otherwise
2311 */
2312int
2313xmlUCSIsSpecials(int code) {
2314    return(((code >= 0xFFF0) && (code <= 0xFFFF)));
2315}
2316
2317/**
2318 * xmlUCSIsSuperscriptsandSubscripts:
2319 * @code: UCS code point
2320 *
2321 * Check whether the character is part of SuperscriptsandSubscripts UCS Block
2322 *
2323 * Returns 1 if true 0 otherwise
2324 */
2325int
2326xmlUCSIsSuperscriptsandSubscripts(int code) {
2327    return(((code >= 0x2070) && (code <= 0x209F)));
2328}
2329
2330/**
2331 * xmlUCSIsSupplementalArrowsA:
2332 * @code: UCS code point
2333 *
2334 * Check whether the character is part of SupplementalArrows-A UCS Block
2335 *
2336 * Returns 1 if true 0 otherwise
2337 */
2338int
2339xmlUCSIsSupplementalArrowsA(int code) {
2340    return(((code >= 0x27F0) && (code <= 0x27FF)));
2341}
2342
2343/**
2344 * xmlUCSIsSupplementalArrowsB:
2345 * @code: UCS code point
2346 *
2347 * Check whether the character is part of SupplementalArrows-B UCS Block
2348 *
2349 * Returns 1 if true 0 otherwise
2350 */
2351int
2352xmlUCSIsSupplementalArrowsB(int code) {
2353    return(((code >= 0x2900) && (code <= 0x297F)));
2354}
2355
2356/**
2357 * xmlUCSIsSupplementalMathematicalOperators:
2358 * @code: UCS code point
2359 *
2360 * Check whether the character is part of SupplementalMathematicalOperators UCS Block
2361 *
2362 * Returns 1 if true 0 otherwise
2363 */
2364int
2365xmlUCSIsSupplementalMathematicalOperators(int code) {
2366    return(((code >= 0x2A00) && (code <= 0x2AFF)));
2367}
2368
2369/**
2370 * xmlUCSIsSupplementaryPrivateUseAreaA:
2371 * @code: UCS code point
2372 *
2373 * Check whether the character is part of SupplementaryPrivateUseArea-A UCS Block
2374 *
2375 * Returns 1 if true 0 otherwise
2376 */
2377int
2378xmlUCSIsSupplementaryPrivateUseAreaA(int code) {
2379    return(((code >= 0xF0000) && (code <= 0xFFFFF)));
2380}
2381
2382/**
2383 * xmlUCSIsSupplementaryPrivateUseAreaB:
2384 * @code: UCS code point
2385 *
2386 * Check whether the character is part of SupplementaryPrivateUseArea-B UCS Block
2387 *
2388 * Returns 1 if true 0 otherwise
2389 */
2390int
2391xmlUCSIsSupplementaryPrivateUseAreaB(int code) {
2392    return(((code >= 0x100000) && (code <= 0x10FFFF)));
2393}
2394
2395/**
2396 * xmlUCSIsSyriac:
2397 * @code: UCS code point
2398 *
2399 * Check whether the character is part of Syriac UCS Block
2400 *
2401 * Returns 1 if true 0 otherwise
2402 */
2403int
2404xmlUCSIsSyriac(int code) {
2405    return(((code >= 0x0700) && (code <= 0x074F)));
2406}
2407
2408/**
2409 * xmlUCSIsTagalog:
2410 * @code: UCS code point
2411 *
2412 * Check whether the character is part of Tagalog UCS Block
2413 *
2414 * Returns 1 if true 0 otherwise
2415 */
2416int
2417xmlUCSIsTagalog(int code) {
2418    return(((code >= 0x1700) && (code <= 0x171F)));
2419}
2420
2421/**
2422 * xmlUCSIsTagbanwa:
2423 * @code: UCS code point
2424 *
2425 * Check whether the character is part of Tagbanwa UCS Block
2426 *
2427 * Returns 1 if true 0 otherwise
2428 */
2429int
2430xmlUCSIsTagbanwa(int code) {
2431    return(((code >= 0x1760) && (code <= 0x177F)));
2432}
2433
2434/**
2435 * xmlUCSIsTags:
2436 * @code: UCS code point
2437 *
2438 * Check whether the character is part of Tags UCS Block
2439 *
2440 * Returns 1 if true 0 otherwise
2441 */
2442int
2443xmlUCSIsTags(int code) {
2444    return(((code >= 0xE0000) && (code <= 0xE007F)));
2445}
2446
2447/**
2448 * xmlUCSIsTaiLe:
2449 * @code: UCS code point
2450 *
2451 * Check whether the character is part of TaiLe UCS Block
2452 *
2453 * Returns 1 if true 0 otherwise
2454 */
2455int
2456xmlUCSIsTaiLe(int code) {
2457    return(((code >= 0x1950) && (code <= 0x197F)));
2458}
2459
2460/**
2461 * xmlUCSIsTaiXuanJingSymbols:
2462 * @code: UCS code point
2463 *
2464 * Check whether the character is part of TaiXuanJingSymbols UCS Block
2465 *
2466 * Returns 1 if true 0 otherwise
2467 */
2468int
2469xmlUCSIsTaiXuanJingSymbols(int code) {
2470    return(((code >= 0x1D300) && (code <= 0x1D35F)));
2471}
2472
2473/**
2474 * xmlUCSIsTamil:
2475 * @code: UCS code point
2476 *
2477 * Check whether the character is part of Tamil UCS Block
2478 *
2479 * Returns 1 if true 0 otherwise
2480 */
2481int
2482xmlUCSIsTamil(int code) {
2483    return(((code >= 0x0B80) && (code <= 0x0BFF)));
2484}
2485
2486/**
2487 * xmlUCSIsTelugu:
2488 * @code: UCS code point
2489 *
2490 * Check whether the character is part of Telugu UCS Block
2491 *
2492 * Returns 1 if true 0 otherwise
2493 */
2494int
2495xmlUCSIsTelugu(int code) {
2496    return(((code >= 0x0C00) && (code <= 0x0C7F)));
2497}
2498
2499/**
2500 * xmlUCSIsThaana:
2501 * @code: UCS code point
2502 *
2503 * Check whether the character is part of Thaana UCS Block
2504 *
2505 * Returns 1 if true 0 otherwise
2506 */
2507int
2508xmlUCSIsThaana(int code) {
2509    return(((code >= 0x0780) && (code <= 0x07BF)));
2510}
2511
2512/**
2513 * xmlUCSIsThai:
2514 * @code: UCS code point
2515 *
2516 * Check whether the character is part of Thai UCS Block
2517 *
2518 * Returns 1 if true 0 otherwise
2519 */
2520int
2521xmlUCSIsThai(int code) {
2522    return(((code >= 0x0E00) && (code <= 0x0E7F)));
2523}
2524
2525/**
2526 * xmlUCSIsTibetan:
2527 * @code: UCS code point
2528 *
2529 * Check whether the character is part of Tibetan UCS Block
2530 *
2531 * Returns 1 if true 0 otherwise
2532 */
2533int
2534xmlUCSIsTibetan(int code) {
2535    return(((code >= 0x0F00) && (code <= 0x0FFF)));
2536}
2537
2538/**
2539 * xmlUCSIsUgaritic:
2540 * @code: UCS code point
2541 *
2542 * Check whether the character is part of Ugaritic UCS Block
2543 *
2544 * Returns 1 if true 0 otherwise
2545 */
2546int
2547xmlUCSIsUgaritic(int code) {
2548    return(((code >= 0x10380) && (code <= 0x1039F)));
2549}
2550
2551/**
2552 * xmlUCSIsUnifiedCanadianAboriginalSyllabics:
2553 * @code: UCS code point
2554 *
2555 * Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block
2556 *
2557 * Returns 1 if true 0 otherwise
2558 */
2559int
2560xmlUCSIsUnifiedCanadianAboriginalSyllabics(int code) {
2561    return(((code >= 0x1400) && (code <= 0x167F)));
2562}
2563
2564/**
2565 * xmlUCSIsVariationSelectors:
2566 * @code: UCS code point
2567 *
2568 * Check whether the character is part of VariationSelectors UCS Block
2569 *
2570 * Returns 1 if true 0 otherwise
2571 */
2572int
2573xmlUCSIsVariationSelectors(int code) {
2574    return(((code >= 0xFE00) && (code <= 0xFE0F)));
2575}
2576
2577/**
2578 * xmlUCSIsVariationSelectorsSupplement:
2579 * @code: UCS code point
2580 *
2581 * Check whether the character is part of VariationSelectorsSupplement UCS Block
2582 *
2583 * Returns 1 if true 0 otherwise
2584 */
2585int
2586xmlUCSIsVariationSelectorsSupplement(int code) {
2587    return(((code >= 0xE0100) && (code <= 0xE01EF)));
2588}
2589
2590/**
2591 * xmlUCSIsYiRadicals:
2592 * @code: UCS code point
2593 *
2594 * Check whether the character is part of YiRadicals UCS Block
2595 *
2596 * Returns 1 if true 0 otherwise
2597 */
2598int
2599xmlUCSIsYiRadicals(int code) {
2600    return(((code >= 0xA490) && (code <= 0xA4CF)));
2601}
2602
2603/**
2604 * xmlUCSIsYiSyllables:
2605 * @code: UCS code point
2606 *
2607 * Check whether the character is part of YiSyllables UCS Block
2608 *
2609 * Returns 1 if true 0 otherwise
2610 */
2611int
2612xmlUCSIsYiSyllables(int code) {
2613    return(((code >= 0xA000) && (code <= 0xA48F)));
2614}
2615
2616/**
2617 * xmlUCSIsYijingHexagramSymbols:
2618 * @code: UCS code point
2619 *
2620 * Check whether the character is part of YijingHexagramSymbols UCS Block
2621 *
2622 * Returns 1 if true 0 otherwise
2623 */
2624int
2625xmlUCSIsYijingHexagramSymbols(int code) {
2626    return(((code >= 0x4DC0) && (code <= 0x4DFF)));
2627}
2628
2629/**
2630 * xmlUCSIsBlock:
2631 * @code: UCS code point
2632 * @block: UCS block name
2633 *
2634 * Check whether the character is part of the UCS Block
2635 *
2636 * Returns 1 if true, 0 if false and -1 on unknown block
2637 */
2638int
2639xmlUCSIsBlock(int code, const char *block) {
2640    xmlIntFunc *func;
2641
2642    func = xmlUnicodeLookup(&xmlUnicodeBlockTbl, block);
2643    if (func == NULL)
2644        return (-1);
2645    return (func(code));
2646}
2647
2648/**
2649 * xmlUCSIsCatC:
2650 * @code: UCS code point
2651 *
2652 * Check whether the character is part of C UCS Category
2653 *
2654 * Returns 1 if true 0 otherwise
2655 */
2656int
2657xmlUCSIsCatC(int code) {
2658    return(xmlCharInRange((unsigned int)code, &xmlCG));
2659}
2660
2661/**
2662 * xmlUCSIsCatCc:
2663 * @code: UCS code point
2664 *
2665 * Check whether the character is part of Cc UCS Category
2666 *
2667 * Returns 1 if true 0 otherwise
2668 */
2669int
2670xmlUCSIsCatCc(int code) {
2671    return(((code >= 0x0) && (code <= 0x1f)) ||
2672           ((code >= 0x7f) && (code <= 0x9f)));
2673}
2674
2675/**
2676 * xmlUCSIsCatCf:
2677 * @code: UCS code point
2678 *
2679 * Check whether the character is part of Cf UCS Category
2680 *
2681 * Returns 1 if true 0 otherwise
2682 */
2683int
2684xmlUCSIsCatCf(int code) {
2685    return(xmlCharInRange((unsigned int)code, &xmlCfG));
2686}
2687
2688/**
2689 * xmlUCSIsCatCo:
2690 * @code: UCS code point
2691 *
2692 * Check whether the character is part of Co UCS Category
2693 *
2694 * Returns 1 if true 0 otherwise
2695 */
2696int
2697xmlUCSIsCatCo(int code) {
2698    return((code == 0xe000) ||
2699           (code == 0xf8ff) ||
2700           (code == 0xf0000) ||
2701           (code == 0xffffd) ||
2702           (code == 0x100000) ||
2703           (code == 0x10fffd));
2704}
2705
2706/**
2707 * xmlUCSIsCatCs:
2708 * @code: UCS code point
2709 *
2710 * Check whether the character is part of Cs UCS Category
2711 *
2712 * Returns 1 if true 0 otherwise
2713 */
2714int
2715xmlUCSIsCatCs(int code) {
2716    return((code == 0xd800) ||
2717           ((code >= 0xdb7f) && (code <= 0xdb80)) ||
2718           ((code >= 0xdbff) && (code <= 0xdc00)) ||
2719           (code == 0xdfff));
2720}
2721
2722/**
2723 * xmlUCSIsCatL:
2724 * @code: UCS code point
2725 *
2726 * Check whether the character is part of L UCS Category
2727 *
2728 * Returns 1 if true 0 otherwise
2729 */
2730int
2731xmlUCSIsCatL(int code) {
2732    return(xmlCharInRange((unsigned int)code, &xmlLG));
2733}
2734
2735/**
2736 * xmlUCSIsCatLl:
2737 * @code: UCS code point
2738 *
2739 * Check whether the character is part of Ll UCS Category
2740 *
2741 * Returns 1 if true 0 otherwise
2742 */
2743int
2744xmlUCSIsCatLl(int code) {
2745    return(xmlCharInRange((unsigned int)code, &xmlLlG));
2746}
2747
2748/**
2749 * xmlUCSIsCatLm:
2750 * @code: UCS code point
2751 *
2752 * Check whether the character is part of Lm UCS Category
2753 *
2754 * Returns 1 if true 0 otherwise
2755 */
2756int
2757xmlUCSIsCatLm(int code) {
2758    return(xmlCharInRange((unsigned int)code, &xmlLmG));
2759}
2760
2761/**
2762 * xmlUCSIsCatLo:
2763 * @code: UCS code point
2764 *
2765 * Check whether the character is part of Lo UCS Category
2766 *
2767 * Returns 1 if true 0 otherwise
2768 */
2769int
2770xmlUCSIsCatLo(int code) {
2771    return(xmlCharInRange((unsigned int)code, &xmlLoG));
2772}
2773
2774/**
2775 * xmlUCSIsCatLt:
2776 * @code: UCS code point
2777 *
2778 * Check whether the character is part of Lt UCS Category
2779 *
2780 * Returns 1 if true 0 otherwise
2781 */
2782int
2783xmlUCSIsCatLt(int code) {
2784    return(xmlCharInRange((unsigned int)code, &xmlLtG));
2785}
2786
2787/**
2788 * xmlUCSIsCatLu:
2789 * @code: UCS code point
2790 *
2791 * Check whether the character is part of Lu UCS Category
2792 *
2793 * Returns 1 if true 0 otherwise
2794 */
2795int
2796xmlUCSIsCatLu(int code) {
2797    return(xmlCharInRange((unsigned int)code, &xmlLuG));
2798}
2799
2800/**
2801 * xmlUCSIsCatM:
2802 * @code: UCS code point
2803 *
2804 * Check whether the character is part of M UCS Category
2805 *
2806 * Returns 1 if true 0 otherwise
2807 */
2808int
2809xmlUCSIsCatM(int code) {
2810    return(xmlCharInRange((unsigned int)code, &xmlMG));
2811}
2812
2813/**
2814 * xmlUCSIsCatMc:
2815 * @code: UCS code point
2816 *
2817 * Check whether the character is part of Mc UCS Category
2818 *
2819 * Returns 1 if true 0 otherwise
2820 */
2821int
2822xmlUCSIsCatMc(int code) {
2823    return(xmlCharInRange((unsigned int)code, &xmlMcG));
2824}
2825
2826/**
2827 * xmlUCSIsCatMe:
2828 * @code: UCS code point
2829 *
2830 * Check whether the character is part of Me UCS Category
2831 *
2832 * Returns 1 if true 0 otherwise
2833 */
2834int
2835xmlUCSIsCatMe(int code) {
2836    return(((code >= 0x488) && (code <= 0x489)) ||
2837           (code == 0x6de) ||
2838           ((code >= 0x20dd) && (code <= 0x20e0)) ||
2839           ((code >= 0x20e2) && (code <= 0x20e4)));
2840}
2841
2842/**
2843 * xmlUCSIsCatMn:
2844 * @code: UCS code point
2845 *
2846 * Check whether the character is part of Mn UCS Category
2847 *
2848 * Returns 1 if true 0 otherwise
2849 */
2850int
2851xmlUCSIsCatMn(int code) {
2852    return(xmlCharInRange((unsigned int)code, &xmlMnG));
2853}
2854
2855/**
2856 * xmlUCSIsCatN:
2857 * @code: UCS code point
2858 *
2859 * Check whether the character is part of N UCS Category
2860 *
2861 * Returns 1 if true 0 otherwise
2862 */
2863int
2864xmlUCSIsCatN(int code) {
2865    return(xmlCharInRange((unsigned int)code, &xmlNG));
2866}
2867
2868/**
2869 * xmlUCSIsCatNd:
2870 * @code: UCS code point
2871 *
2872 * Check whether the character is part of Nd UCS Category
2873 *
2874 * Returns 1 if true 0 otherwise
2875 */
2876int
2877xmlUCSIsCatNd(int code) {
2878    return(xmlCharInRange((unsigned int)code, &xmlNdG));
2879}
2880
2881/**
2882 * xmlUCSIsCatNl:
2883 * @code: UCS code point
2884 *
2885 * Check whether the character is part of Nl UCS Category
2886 *
2887 * Returns 1 if true 0 otherwise
2888 */
2889int
2890xmlUCSIsCatNl(int code) {
2891    return(((code >= 0x16ee) && (code <= 0x16f0)) ||
2892           ((code >= 0x2160) && (code <= 0x2183)) ||
2893           (code == 0x3007) ||
2894           ((code >= 0x3021) && (code <= 0x3029)) ||
2895           ((code >= 0x3038) && (code <= 0x303a)) ||
2896           (code == 0x1034a));
2897}
2898
2899/**
2900 * xmlUCSIsCatNo:
2901 * @code: UCS code point
2902 *
2903 * Check whether the character is part of No UCS Category
2904 *
2905 * Returns 1 if true 0 otherwise
2906 */
2907int
2908xmlUCSIsCatNo(int code) {
2909    return(xmlCharInRange((unsigned int)code, &xmlNoG));
2910}
2911
2912/**
2913 * xmlUCSIsCatP:
2914 * @code: UCS code point
2915 *
2916 * Check whether the character is part of P UCS Category
2917 *
2918 * Returns 1 if true 0 otherwise
2919 */
2920int
2921xmlUCSIsCatP(int code) {
2922    return(xmlCharInRange((unsigned int)code, &xmlPG));
2923}
2924
2925/**
2926 * xmlUCSIsCatPc:
2927 * @code: UCS code point
2928 *
2929 * Check whether the character is part of Pc UCS Category
2930 *
2931 * Returns 1 if true 0 otherwise
2932 */
2933int
2934xmlUCSIsCatPc(int code) {
2935    return((code == 0x5f) ||
2936           ((code >= 0x203f) && (code <= 0x2040)) ||
2937           (code == 0x2054) ||
2938           (code == 0x30fb) ||
2939           ((code >= 0xfe33) && (code <= 0xfe34)) ||
2940           ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
2941           (code == 0xff3f) ||
2942           (code == 0xff65));
2943}
2944
2945/**
2946 * xmlUCSIsCatPd:
2947 * @code: UCS code point
2948 *
2949 * Check whether the character is part of Pd UCS Category
2950 *
2951 * Returns 1 if true 0 otherwise
2952 */
2953int
2954xmlUCSIsCatPd(int code) {
2955    return(xmlCharInRange((unsigned int)code, &xmlPdG));
2956}
2957
2958/**
2959 * xmlUCSIsCatPe:
2960 * @code: UCS code point
2961 *
2962 * Check whether the character is part of Pe UCS Category
2963 *
2964 * Returns 1 if true 0 otherwise
2965 */
2966int
2967xmlUCSIsCatPe(int code) {
2968    return(xmlCharInRange((unsigned int)code, &xmlPeG));
2969}
2970
2971/**
2972 * xmlUCSIsCatPf:
2973 * @code: UCS code point
2974 *
2975 * Check whether the character is part of Pf UCS Category
2976 *
2977 * Returns 1 if true 0 otherwise
2978 */
2979int
2980xmlUCSIsCatPf(int code) {
2981    return((code == 0xbb) ||
2982           (code == 0x2019) ||
2983           (code == 0x201d) ||
2984           (code == 0x203a));
2985}
2986
2987/**
2988 * xmlUCSIsCatPi:
2989 * @code: UCS code point
2990 *
2991 * Check whether the character is part of Pi UCS Category
2992 *
2993 * Returns 1 if true 0 otherwise
2994 */
2995int
2996xmlUCSIsCatPi(int code) {
2997    return((code == 0xab) ||
2998           (code == 0x2018) ||
2999           ((code >= 0x201b) && (code <= 0x201c)) ||
3000           (code == 0x201f) ||
3001           (code == 0x2039));
3002}
3003
3004/**
3005 * xmlUCSIsCatPo:
3006 * @code: UCS code point
3007 *
3008 * Check whether the character is part of Po UCS Category
3009 *
3010 * Returns 1 if true 0 otherwise
3011 */
3012int
3013xmlUCSIsCatPo(int code) {
3014    return(xmlCharInRange((unsigned int)code, &xmlPoG));
3015}
3016
3017/**
3018 * xmlUCSIsCatPs:
3019 * @code: UCS code point
3020 *
3021 * Check whether the character is part of Ps UCS Category
3022 *
3023 * Returns 1 if true 0 otherwise
3024 */
3025int
3026xmlUCSIsCatPs(int code) {
3027    return(xmlCharInRange((unsigned int)code, &xmlPsG));
3028}
3029
3030/**
3031 * xmlUCSIsCatS:
3032 * @code: UCS code point
3033 *
3034 * Check whether the character is part of S UCS Category
3035 *
3036 * Returns 1 if true 0 otherwise
3037 */
3038int
3039xmlUCSIsCatS(int code) {
3040    return(xmlCharInRange((unsigned int)code, &xmlSG));
3041}
3042
3043/**
3044 * xmlUCSIsCatSc:
3045 * @code: UCS code point
3046 *
3047 * Check whether the character is part of Sc UCS Category
3048 *
3049 * Returns 1 if true 0 otherwise
3050 */
3051int
3052xmlUCSIsCatSc(int code) {
3053    return(xmlCharInRange((unsigned int)code, &xmlScG));
3054}
3055
3056/**
3057 * xmlUCSIsCatSk:
3058 * @code: UCS code point
3059 *
3060 * Check whether the character is part of Sk UCS Category
3061 *
3062 * Returns 1 if true 0 otherwise
3063 */
3064int
3065xmlUCSIsCatSk(int code) {
3066    return(xmlCharInRange((unsigned int)code, &xmlSkG));
3067}
3068
3069/**
3070 * xmlUCSIsCatSm:
3071 * @code: UCS code point
3072 *
3073 * Check whether the character is part of Sm UCS Category
3074 *
3075 * Returns 1 if true 0 otherwise
3076 */
3077int
3078xmlUCSIsCatSm(int code) {
3079    return(xmlCharInRange((unsigned int)code, &xmlSmG));
3080}
3081
3082/**
3083 * xmlUCSIsCatSo:
3084 * @code: UCS code point
3085 *
3086 * Check whether the character is part of So UCS Category
3087 *
3088 * Returns 1 if true 0 otherwise
3089 */
3090int
3091xmlUCSIsCatSo(int code) {
3092    return(xmlCharInRange((unsigned int)code, &xmlSoG));
3093}
3094
3095/**
3096 * xmlUCSIsCatZ:
3097 * @code: UCS code point
3098 *
3099 * Check whether the character is part of Z UCS Category
3100 *
3101 * Returns 1 if true 0 otherwise
3102 */
3103int
3104xmlUCSIsCatZ(int code) {
3105    return(xmlCharInRange((unsigned int)code, &xmlZG));
3106}
3107
3108/**
3109 * xmlUCSIsCatZl:
3110 * @code: UCS code point
3111 *
3112 * Check whether the character is part of Zl UCS Category
3113 *
3114 * Returns 1 if true 0 otherwise
3115 */
3116int
3117xmlUCSIsCatZl(int code) {
3118    return((code == 0x2028));
3119}
3120
3121/**
3122 * xmlUCSIsCatZp:
3123 * @code: UCS code point
3124 *
3125 * Check whether the character is part of Zp UCS Category
3126 *
3127 * Returns 1 if true 0 otherwise
3128 */
3129int
3130xmlUCSIsCatZp(int code) {
3131    return((code == 0x2029));
3132}
3133
3134/**
3135 * xmlUCSIsCatZs:
3136 * @code: UCS code point
3137 *
3138 * Check whether the character is part of Zs UCS Category
3139 *
3140 * Returns 1 if true 0 otherwise
3141 */
3142int
3143xmlUCSIsCatZs(int code) {
3144    return((code == 0x20) ||
3145           (code == 0xa0) ||
3146           (code == 0x1680) ||
3147           (code == 0x180e) ||
3148           ((code >= 0x2000) && (code <= 0x200b)) ||
3149           (code == 0x202f) ||
3150           (code == 0x205f) ||
3151           (code == 0x3000));
3152}
3153
3154/**
3155 * xmlUCSIsCat:
3156 * @code: UCS code point
3157 * @cat: UCS Category name
3158 *
3159 * Check whether the character is part of the UCS Category
3160 *
3161 * Returns 1 if true, 0 if false and -1 on unknown category
3162 */
3163int
3164xmlUCSIsCat(int code, const char *cat) {
3165    xmlIntFunc *func;
3166
3167    func = xmlUnicodeLookup(&xmlUnicodeCatTbl, cat);
3168    if (func == NULL)
3169        return (-1);
3170    return (func(code));
3171}
3172
3173
3174#endif /* LIBXML_UNICODE_ENABLED */
Note: See TracBrowser for help on using the repository browser.