blob: 8baf8d18c720436e513d18a0eeb94b39fee707e8 [file] [log] [blame]
Daniel Veillard4255d502002-04-16 15:50:10 +00001/*
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/3.1-Update/UnicodeCharacterDatabase-3.1.0.html
7 * using the genUnicode.py Python script.
8 *
9 * Generation date: Tue Apr 16 17:28:05 2002
10 * Sources: Blocks-4.txt UnicodeData-3.1.0.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
23/**
24 * xmlUCSIsAlphabeticPresentationForms:
25 * @code: UCS code point
26 *
27 * Check whether the character is part of AlphabeticPresentationForms UCS Block
28 *
29 * Returns 1 if true 0 otherwise
30 */
31int
32xmlUCSIsAlphabeticPresentationForms(int code) {
33 return((code >= 0xFB00) && (code <= 0xFB4F));
34}
35
36/**
37 * xmlUCSIsArabic:
38 * @code: UCS code point
39 *
40 * Check whether the character is part of Arabic UCS Block
41 *
42 * Returns 1 if true 0 otherwise
43 */
44int
45xmlUCSIsArabic(int code) {
46 return((code >= 0x0600) && (code <= 0x06FF));
47}
48
49/**
50 * xmlUCSIsArabicPresentationFormsA:
51 * @code: UCS code point
52 *
53 * Check whether the character is part of ArabicPresentationForms-A UCS Block
54 *
55 * Returns 1 if true 0 otherwise
56 */
57int
58xmlUCSIsArabicPresentationFormsA(int code) {
59 return((code >= 0xFB50) && (code <= 0xFDFF));
60}
61
62/**
63 * xmlUCSIsArabicPresentationFormsB:
64 * @code: UCS code point
65 *
66 * Check whether the character is part of ArabicPresentationForms-B UCS Block
67 *
68 * Returns 1 if true 0 otherwise
69 */
70int
71xmlUCSIsArabicPresentationFormsB(int code) {
72 return((code >= 0xFE70) && (code <= 0xFEFE));
73}
74
75/**
76 * xmlUCSIsArmenian:
77 * @code: UCS code point
78 *
79 * Check whether the character is part of Armenian UCS Block
80 *
81 * Returns 1 if true 0 otherwise
82 */
83int
84xmlUCSIsArmenian(int code) {
85 return((code >= 0x0530) && (code <= 0x058F));
86}
87
88/**
89 * xmlUCSIsArrows:
90 * @code: UCS code point
91 *
92 * Check whether the character is part of Arrows UCS Block
93 *
94 * Returns 1 if true 0 otherwise
95 */
96int
97xmlUCSIsArrows(int code) {
98 return((code >= 0x2190) && (code <= 0x21FF));
99}
100
101/**
102 * xmlUCSIsBasicLatin:
103 * @code: UCS code point
104 *
105 * Check whether the character is part of BasicLatin UCS Block
106 *
107 * Returns 1 if true 0 otherwise
108 */
109int
110xmlUCSIsBasicLatin(int code) {
111 return((code >= 0x0000) && (code <= 0x007F));
112}
113
114/**
115 * xmlUCSIsBengali:
116 * @code: UCS code point
117 *
118 * Check whether the character is part of Bengali UCS Block
119 *
120 * Returns 1 if true 0 otherwise
121 */
122int
123xmlUCSIsBengali(int code) {
124 return((code >= 0x0980) && (code <= 0x09FF));
125}
126
127/**
128 * xmlUCSIsBlockElements:
129 * @code: UCS code point
130 *
131 * Check whether the character is part of BlockElements UCS Block
132 *
133 * Returns 1 if true 0 otherwise
134 */
135int
136xmlUCSIsBlockElements(int code) {
137 return((code >= 0x2580) && (code <= 0x259F));
138}
139
140/**
141 * xmlUCSIsBopomofo:
142 * @code: UCS code point
143 *
144 * Check whether the character is part of Bopomofo UCS Block
145 *
146 * Returns 1 if true 0 otherwise
147 */
148int
149xmlUCSIsBopomofo(int code) {
150 return((code >= 0x3100) && (code <= 0x312F));
151}
152
153/**
154 * xmlUCSIsBopomofoExtended:
155 * @code: UCS code point
156 *
157 * Check whether the character is part of BopomofoExtended UCS Block
158 *
159 * Returns 1 if true 0 otherwise
160 */
161int
162xmlUCSIsBopomofoExtended(int code) {
163 return((code >= 0x31A0) && (code <= 0x31BF));
164}
165
166/**
167 * xmlUCSIsBoxDrawing:
168 * @code: UCS code point
169 *
170 * Check whether the character is part of BoxDrawing UCS Block
171 *
172 * Returns 1 if true 0 otherwise
173 */
174int
175xmlUCSIsBoxDrawing(int code) {
176 return((code >= 0x2500) && (code <= 0x257F));
177}
178
179/**
180 * xmlUCSIsBraillePatterns:
181 * @code: UCS code point
182 *
183 * Check whether the character is part of BraillePatterns UCS Block
184 *
185 * Returns 1 if true 0 otherwise
186 */
187int
188xmlUCSIsBraillePatterns(int code) {
189 return((code >= 0x2800) && (code <= 0x28FF));
190}
191
192/**
193 * xmlUCSIsByzantineMusicalSymbols:
194 * @code: UCS code point
195 *
196 * Check whether the character is part of ByzantineMusicalSymbols UCS Block
197 *
198 * Returns 1 if true 0 otherwise
199 */
200int
201xmlUCSIsByzantineMusicalSymbols(int code) {
202 return((code >= 0x1D000) && (code <= 0x1D0FF));
203}
204
205/**
206 * xmlUCSIsCJKCompatibility:
207 * @code: UCS code point
208 *
209 * Check whether the character is part of CJKCompatibility UCS Block
210 *
211 * Returns 1 if true 0 otherwise
212 */
213int
214xmlUCSIsCJKCompatibility(int code) {
215 return((code >= 0x3300) && (code <= 0x33FF));
216}
217
218/**
219 * xmlUCSIsCJKCompatibilityForms:
220 * @code: UCS code point
221 *
222 * Check whether the character is part of CJKCompatibilityForms UCS Block
223 *
224 * Returns 1 if true 0 otherwise
225 */
226int
227xmlUCSIsCJKCompatibilityForms(int code) {
228 return((code >= 0xFE30) && (code <= 0xFE4F));
229}
230
231/**
232 * xmlUCSIsCJKCompatibilityIdeographs:
233 * @code: UCS code point
234 *
235 * Check whether the character is part of CJKCompatibilityIdeographs UCS Block
236 *
237 * Returns 1 if true 0 otherwise
238 */
239int
240xmlUCSIsCJKCompatibilityIdeographs(int code) {
241 return((code >= 0xF900) && (code <= 0xFAFF));
242}
243
244/**
245 * xmlUCSIsCJKCompatibilityIdeographsSupplement:
246 * @code: UCS code point
247 *
248 * Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block
249 *
250 * Returns 1 if true 0 otherwise
251 */
252int
253xmlUCSIsCJKCompatibilityIdeographsSupplement(int code) {
254 return((code >= 0x2F800) && (code <= 0x2FA1F));
255}
256
257/**
258 * xmlUCSIsCJKRadicalsSupplement:
259 * @code: UCS code point
260 *
261 * Check whether the character is part of CJKRadicalsSupplement UCS Block
262 *
263 * Returns 1 if true 0 otherwise
264 */
265int
266xmlUCSIsCJKRadicalsSupplement(int code) {
267 return((code >= 0x2E80) && (code <= 0x2EFF));
268}
269
270/**
271 * xmlUCSIsCJKSymbolsandPunctuation:
272 * @code: UCS code point
273 *
274 * Check whether the character is part of CJKSymbolsandPunctuation UCS Block
275 *
276 * Returns 1 if true 0 otherwise
277 */
278int
279xmlUCSIsCJKSymbolsandPunctuation(int code) {
280 return((code >= 0x3000) && (code <= 0x303F));
281}
282
283/**
284 * xmlUCSIsCJKUnifiedIdeographs:
285 * @code: UCS code point
286 *
287 * Check whether the character is part of CJKUnifiedIdeographs UCS Block
288 *
289 * Returns 1 if true 0 otherwise
290 */
291int
292xmlUCSIsCJKUnifiedIdeographs(int code) {
293 return((code >= 0x4E00) && (code <= 0x9FFF));
294}
295
296/**
297 * xmlUCSIsCJKUnifiedIdeographsExtensionA:
298 * @code: UCS code point
299 *
300 * Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block
301 *
302 * Returns 1 if true 0 otherwise
303 */
304int
305xmlUCSIsCJKUnifiedIdeographsExtensionA(int code) {
306 return((code >= 0x3400) && (code <= 0x4DB5));
307}
308
309/**
310 * xmlUCSIsCJKUnifiedIdeographsExtensionB:
311 * @code: UCS code point
312 *
313 * Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block
314 *
315 * Returns 1 if true 0 otherwise
316 */
317int
318xmlUCSIsCJKUnifiedIdeographsExtensionB(int code) {
319 return((code >= 0x20000) && (code <= 0x2A6D6));
320}
321
322/**
323 * xmlUCSIsCherokee:
324 * @code: UCS code point
325 *
326 * Check whether the character is part of Cherokee UCS Block
327 *
328 * Returns 1 if true 0 otherwise
329 */
330int
331xmlUCSIsCherokee(int code) {
332 return((code >= 0x13A0) && (code <= 0x13FF));
333}
334
335/**
336 * xmlUCSIsCombiningDiacriticalMarks:
337 * @code: UCS code point
338 *
339 * Check whether the character is part of CombiningDiacriticalMarks UCS Block
340 *
341 * Returns 1 if true 0 otherwise
342 */
343int
344xmlUCSIsCombiningDiacriticalMarks(int code) {
345 return((code >= 0x0300) && (code <= 0x036F));
346}
347
348/**
349 * xmlUCSIsCombiningHalfMarks:
350 * @code: UCS code point
351 *
352 * Check whether the character is part of CombiningHalfMarks UCS Block
353 *
354 * Returns 1 if true 0 otherwise
355 */
356int
357xmlUCSIsCombiningHalfMarks(int code) {
358 return((code >= 0xFE20) && (code <= 0xFE2F));
359}
360
361/**
362 * xmlUCSIsCombiningMarksforSymbols:
363 * @code: UCS code point
364 *
365 * Check whether the character is part of CombiningMarksforSymbols UCS Block
366 *
367 * Returns 1 if true 0 otherwise
368 */
369int
370xmlUCSIsCombiningMarksforSymbols(int code) {
371 return((code >= 0x20D0) && (code <= 0x20FF));
372}
373
374/**
375 * xmlUCSIsControlPictures:
376 * @code: UCS code point
377 *
378 * Check whether the character is part of ControlPictures UCS Block
379 *
380 * Returns 1 if true 0 otherwise
381 */
382int
383xmlUCSIsControlPictures(int code) {
384 return((code >= 0x2400) && (code <= 0x243F));
385}
386
387/**
388 * xmlUCSIsCurrencySymbols:
389 * @code: UCS code point
390 *
391 * Check whether the character is part of CurrencySymbols UCS Block
392 *
393 * Returns 1 if true 0 otherwise
394 */
395int
396xmlUCSIsCurrencySymbols(int code) {
397 return((code >= 0x20A0) && (code <= 0x20CF));
398}
399
400/**
401 * xmlUCSIsCyrillic:
402 * @code: UCS code point
403 *
404 * Check whether the character is part of Cyrillic UCS Block
405 *
406 * Returns 1 if true 0 otherwise
407 */
408int
409xmlUCSIsCyrillic(int code) {
410 return((code >= 0x0400) && (code <= 0x04FF));
411}
412
413/**
414 * xmlUCSIsDeseret:
415 * @code: UCS code point
416 *
417 * Check whether the character is part of Deseret UCS Block
418 *
419 * Returns 1 if true 0 otherwise
420 */
421int
422xmlUCSIsDeseret(int code) {
423 return((code >= 0x10400) && (code <= 0x1044F));
424}
425
426/**
427 * xmlUCSIsDevanagari:
428 * @code: UCS code point
429 *
430 * Check whether the character is part of Devanagari UCS Block
431 *
432 * Returns 1 if true 0 otherwise
433 */
434int
435xmlUCSIsDevanagari(int code) {
436 return((code >= 0x0900) && (code <= 0x097F));
437}
438
439/**
440 * xmlUCSIsDingbats:
441 * @code: UCS code point
442 *
443 * Check whether the character is part of Dingbats UCS Block
444 *
445 * Returns 1 if true 0 otherwise
446 */
447int
448xmlUCSIsDingbats(int code) {
449 return((code >= 0x2700) && (code <= 0x27BF));
450}
451
452/**
453 * xmlUCSIsEnclosedAlphanumerics:
454 * @code: UCS code point
455 *
456 * Check whether the character is part of EnclosedAlphanumerics UCS Block
457 *
458 * Returns 1 if true 0 otherwise
459 */
460int
461xmlUCSIsEnclosedAlphanumerics(int code) {
462 return((code >= 0x2460) && (code <= 0x24FF));
463}
464
465/**
466 * xmlUCSIsEnclosedCJKLettersandMonths:
467 * @code: UCS code point
468 *
469 * Check whether the character is part of EnclosedCJKLettersandMonths UCS Block
470 *
471 * Returns 1 if true 0 otherwise
472 */
473int
474xmlUCSIsEnclosedCJKLettersandMonths(int code) {
475 return((code >= 0x3200) && (code <= 0x32FF));
476}
477
478/**
479 * xmlUCSIsEthiopic:
480 * @code: UCS code point
481 *
482 * Check whether the character is part of Ethiopic UCS Block
483 *
484 * Returns 1 if true 0 otherwise
485 */
486int
487xmlUCSIsEthiopic(int code) {
488 return((code >= 0x1200) && (code <= 0x137F));
489}
490
491/**
492 * xmlUCSIsGeneralPunctuation:
493 * @code: UCS code point
494 *
495 * Check whether the character is part of GeneralPunctuation UCS Block
496 *
497 * Returns 1 if true 0 otherwise
498 */
499int
500xmlUCSIsGeneralPunctuation(int code) {
501 return((code >= 0x2000) && (code <= 0x206F));
502}
503
504/**
505 * xmlUCSIsGeometricShapes:
506 * @code: UCS code point
507 *
508 * Check whether the character is part of GeometricShapes UCS Block
509 *
510 * Returns 1 if true 0 otherwise
511 */
512int
513xmlUCSIsGeometricShapes(int code) {
514 return((code >= 0x25A0) && (code <= 0x25FF));
515}
516
517/**
518 * xmlUCSIsGeorgian:
519 * @code: UCS code point
520 *
521 * Check whether the character is part of Georgian UCS Block
522 *
523 * Returns 1 if true 0 otherwise
524 */
525int
526xmlUCSIsGeorgian(int code) {
527 return((code >= 0x10A0) && (code <= 0x10FF));
528}
529
530/**
531 * xmlUCSIsGothic:
532 * @code: UCS code point
533 *
534 * Check whether the character is part of Gothic UCS Block
535 *
536 * Returns 1 if true 0 otherwise
537 */
538int
539xmlUCSIsGothic(int code) {
540 return((code >= 0x10330) && (code <= 0x1034F));
541}
542
543/**
544 * xmlUCSIsGreek:
545 * @code: UCS code point
546 *
547 * Check whether the character is part of Greek UCS Block
548 *
549 * Returns 1 if true 0 otherwise
550 */
551int
552xmlUCSIsGreek(int code) {
553 return((code >= 0x0370) && (code <= 0x03FF));
554}
555
556/**
557 * xmlUCSIsGreekExtended:
558 * @code: UCS code point
559 *
560 * Check whether the character is part of GreekExtended UCS Block
561 *
562 * Returns 1 if true 0 otherwise
563 */
564int
565xmlUCSIsGreekExtended(int code) {
566 return((code >= 0x1F00) && (code <= 0x1FFF));
567}
568
569/**
570 * xmlUCSIsGujarati:
571 * @code: UCS code point
572 *
573 * Check whether the character is part of Gujarati UCS Block
574 *
575 * Returns 1 if true 0 otherwise
576 */
577int
578xmlUCSIsGujarati(int code) {
579 return((code >= 0x0A80) && (code <= 0x0AFF));
580}
581
582/**
583 * xmlUCSIsGurmukhi:
584 * @code: UCS code point
585 *
586 * Check whether the character is part of Gurmukhi UCS Block
587 *
588 * Returns 1 if true 0 otherwise
589 */
590int
591xmlUCSIsGurmukhi(int code) {
592 return((code >= 0x0A00) && (code <= 0x0A7F));
593}
594
595/**
596 * xmlUCSIsHalfwidthandFullwidthForms:
597 * @code: UCS code point
598 *
599 * Check whether the character is part of HalfwidthandFullwidthForms UCS Block
600 *
601 * Returns 1 if true 0 otherwise
602 */
603int
604xmlUCSIsHalfwidthandFullwidthForms(int code) {
605 return((code >= 0xFF00) && (code <= 0xFFEF));
606}
607
608/**
609 * xmlUCSIsHangulCompatibilityJamo:
610 * @code: UCS code point
611 *
612 * Check whether the character is part of HangulCompatibilityJamo UCS Block
613 *
614 * Returns 1 if true 0 otherwise
615 */
616int
617xmlUCSIsHangulCompatibilityJamo(int code) {
618 return((code >= 0x3130) && (code <= 0x318F));
619}
620
621/**
622 * xmlUCSIsHangulJamo:
623 * @code: UCS code point
624 *
625 * Check whether the character is part of HangulJamo UCS Block
626 *
627 * Returns 1 if true 0 otherwise
628 */
629int
630xmlUCSIsHangulJamo(int code) {
631 return((code >= 0x1100) && (code <= 0x11FF));
632}
633
634/**
635 * xmlUCSIsHangulSyllables:
636 * @code: UCS code point
637 *
638 * Check whether the character is part of HangulSyllables UCS Block
639 *
640 * Returns 1 if true 0 otherwise
641 */
642int
643xmlUCSIsHangulSyllables(int code) {
644 return((code >= 0xAC00) && (code <= 0xD7A3));
645}
646
647/**
648 * xmlUCSIsHebrew:
649 * @code: UCS code point
650 *
651 * Check whether the character is part of Hebrew UCS Block
652 *
653 * Returns 1 if true 0 otherwise
654 */
655int
656xmlUCSIsHebrew(int code) {
657 return((code >= 0x0590) && (code <= 0x05FF));
658}
659
660/**
661 * xmlUCSIsHighPrivateUseSurrogates:
662 * @code: UCS code point
663 *
664 * Check whether the character is part of HighPrivateUseSurrogates UCS Block
665 *
666 * Returns 1 if true 0 otherwise
667 */
668int
669xmlUCSIsHighPrivateUseSurrogates(int code) {
670 return((code >= 0xDB80) && (code <= 0xDBFF));
671}
672
673/**
674 * xmlUCSIsHighSurrogates:
675 * @code: UCS code point
676 *
677 * Check whether the character is part of HighSurrogates UCS Block
678 *
679 * Returns 1 if true 0 otherwise
680 */
681int
682xmlUCSIsHighSurrogates(int code) {
683 return((code >= 0xD800) && (code <= 0xDB7F));
684}
685
686/**
687 * xmlUCSIsHiragana:
688 * @code: UCS code point
689 *
690 * Check whether the character is part of Hiragana UCS Block
691 *
692 * Returns 1 if true 0 otherwise
693 */
694int
695xmlUCSIsHiragana(int code) {
696 return((code >= 0x3040) && (code <= 0x309F));
697}
698
699/**
700 * xmlUCSIsIPAExtensions:
701 * @code: UCS code point
702 *
703 * Check whether the character is part of IPAExtensions UCS Block
704 *
705 * Returns 1 if true 0 otherwise
706 */
707int
708xmlUCSIsIPAExtensions(int code) {
709 return((code >= 0x0250) && (code <= 0x02AF));
710}
711
712/**
713 * xmlUCSIsIdeographicDescriptionCharacters:
714 * @code: UCS code point
715 *
716 * Check whether the character is part of IdeographicDescriptionCharacters UCS Block
717 *
718 * Returns 1 if true 0 otherwise
719 */
720int
721xmlUCSIsIdeographicDescriptionCharacters(int code) {
722 return((code >= 0x2FF0) && (code <= 0x2FFF));
723}
724
725/**
726 * xmlUCSIsKanbun:
727 * @code: UCS code point
728 *
729 * Check whether the character is part of Kanbun UCS Block
730 *
731 * Returns 1 if true 0 otherwise
732 */
733int
734xmlUCSIsKanbun(int code) {
735 return((code >= 0x3190) && (code <= 0x319F));
736}
737
738/**
739 * xmlUCSIsKangxiRadicals:
740 * @code: UCS code point
741 *
742 * Check whether the character is part of KangxiRadicals UCS Block
743 *
744 * Returns 1 if true 0 otherwise
745 */
746int
747xmlUCSIsKangxiRadicals(int code) {
748 return((code >= 0x2F00) && (code <= 0x2FDF));
749}
750
751/**
752 * xmlUCSIsKannada:
753 * @code: UCS code point
754 *
755 * Check whether the character is part of Kannada UCS Block
756 *
757 * Returns 1 if true 0 otherwise
758 */
759int
760xmlUCSIsKannada(int code) {
761 return((code >= 0x0C80) && (code <= 0x0CFF));
762}
763
764/**
765 * xmlUCSIsKatakana:
766 * @code: UCS code point
767 *
768 * Check whether the character is part of Katakana UCS Block
769 *
770 * Returns 1 if true 0 otherwise
771 */
772int
773xmlUCSIsKatakana(int code) {
774 return((code >= 0x30A0) && (code <= 0x30FF));
775}
776
777/**
778 * xmlUCSIsKhmer:
779 * @code: UCS code point
780 *
781 * Check whether the character is part of Khmer UCS Block
782 *
783 * Returns 1 if true 0 otherwise
784 */
785int
786xmlUCSIsKhmer(int code) {
787 return((code >= 0x1780) && (code <= 0x17FF));
788}
789
790/**
791 * xmlUCSIsLao:
792 * @code: UCS code point
793 *
794 * Check whether the character is part of Lao UCS Block
795 *
796 * Returns 1 if true 0 otherwise
797 */
798int
799xmlUCSIsLao(int code) {
800 return((code >= 0x0E80) && (code <= 0x0EFF));
801}
802
803/**
804 * xmlUCSIsLatin1Supplement:
805 * @code: UCS code point
806 *
807 * Check whether the character is part of Latin-1Supplement UCS Block
808 *
809 * Returns 1 if true 0 otherwise
810 */
811int
812xmlUCSIsLatin1Supplement(int code) {
813 return((code >= 0x0080) && (code <= 0x00FF));
814}
815
816/**
817 * xmlUCSIsLatinExtendedA:
818 * @code: UCS code point
819 *
820 * Check whether the character is part of LatinExtended-A UCS Block
821 *
822 * Returns 1 if true 0 otherwise
823 */
824int
825xmlUCSIsLatinExtendedA(int code) {
826 return((code >= 0x0100) && (code <= 0x017F));
827}
828
829/**
830 * xmlUCSIsLatinExtendedB:
831 * @code: UCS code point
832 *
833 * Check whether the character is part of LatinExtended-B UCS Block
834 *
835 * Returns 1 if true 0 otherwise
836 */
837int
838xmlUCSIsLatinExtendedB(int code) {
839 return((code >= 0x0180) && (code <= 0x024F));
840}
841
842/**
843 * xmlUCSIsLatinExtendedAdditional:
844 * @code: UCS code point
845 *
846 * Check whether the character is part of LatinExtendedAdditional UCS Block
847 *
848 * Returns 1 if true 0 otherwise
849 */
850int
851xmlUCSIsLatinExtendedAdditional(int code) {
852 return((code >= 0x1E00) && (code <= 0x1EFF));
853}
854
855/**
856 * xmlUCSIsLetterlikeSymbols:
857 * @code: UCS code point
858 *
859 * Check whether the character is part of LetterlikeSymbols UCS Block
860 *
861 * Returns 1 if true 0 otherwise
862 */
863int
864xmlUCSIsLetterlikeSymbols(int code) {
865 return((code >= 0x2100) && (code <= 0x214F));
866}
867
868/**
869 * xmlUCSIsLowSurrogates:
870 * @code: UCS code point
871 *
872 * Check whether the character is part of LowSurrogates UCS Block
873 *
874 * Returns 1 if true 0 otherwise
875 */
876int
877xmlUCSIsLowSurrogates(int code) {
878 return((code >= 0xDC00) && (code <= 0xDFFF));
879}
880
881/**
882 * xmlUCSIsMalayalam:
883 * @code: UCS code point
884 *
885 * Check whether the character is part of Malayalam UCS Block
886 *
887 * Returns 1 if true 0 otherwise
888 */
889int
890xmlUCSIsMalayalam(int code) {
891 return((code >= 0x0D00) && (code <= 0x0D7F));
892}
893
894/**
895 * xmlUCSIsMathematicalAlphanumericSymbols:
896 * @code: UCS code point
897 *
898 * Check whether the character is part of MathematicalAlphanumericSymbols UCS Block
899 *
900 * Returns 1 if true 0 otherwise
901 */
902int
903xmlUCSIsMathematicalAlphanumericSymbols(int code) {
904 return((code >= 0x1D400) && (code <= 0x1D7FF));
905}
906
907/**
908 * xmlUCSIsMathematicalOperators:
909 * @code: UCS code point
910 *
911 * Check whether the character is part of MathematicalOperators UCS Block
912 *
913 * Returns 1 if true 0 otherwise
914 */
915int
916xmlUCSIsMathematicalOperators(int code) {
917 return((code >= 0x2200) && (code <= 0x22FF));
918}
919
920/**
921 * xmlUCSIsMiscellaneousSymbols:
922 * @code: UCS code point
923 *
924 * Check whether the character is part of MiscellaneousSymbols UCS Block
925 *
926 * Returns 1 if true 0 otherwise
927 */
928int
929xmlUCSIsMiscellaneousSymbols(int code) {
930 return((code >= 0x2600) && (code <= 0x26FF));
931}
932
933/**
934 * xmlUCSIsMiscellaneousTechnical:
935 * @code: UCS code point
936 *
937 * Check whether the character is part of MiscellaneousTechnical UCS Block
938 *
939 * Returns 1 if true 0 otherwise
940 */
941int
942xmlUCSIsMiscellaneousTechnical(int code) {
943 return((code >= 0x2300) && (code <= 0x23FF));
944}
945
946/**
947 * xmlUCSIsMongolian:
948 * @code: UCS code point
949 *
950 * Check whether the character is part of Mongolian UCS Block
951 *
952 * Returns 1 if true 0 otherwise
953 */
954int
955xmlUCSIsMongolian(int code) {
956 return((code >= 0x1800) && (code <= 0x18AF));
957}
958
959/**
960 * xmlUCSIsMusicalSymbols:
961 * @code: UCS code point
962 *
963 * Check whether the character is part of MusicalSymbols UCS Block
964 *
965 * Returns 1 if true 0 otherwise
966 */
967int
968xmlUCSIsMusicalSymbols(int code) {
969 return((code >= 0x1D100) && (code <= 0x1D1FF));
970}
971
972/**
973 * xmlUCSIsMyanmar:
974 * @code: UCS code point
975 *
976 * Check whether the character is part of Myanmar UCS Block
977 *
978 * Returns 1 if true 0 otherwise
979 */
980int
981xmlUCSIsMyanmar(int code) {
982 return((code >= 0x1000) && (code <= 0x109F));
983}
984
985/**
986 * xmlUCSIsNumberForms:
987 * @code: UCS code point
988 *
989 * Check whether the character is part of NumberForms UCS Block
990 *
991 * Returns 1 if true 0 otherwise
992 */
993int
994xmlUCSIsNumberForms(int code) {
995 return((code >= 0x2150) && (code <= 0x218F));
996}
997
998/**
999 * xmlUCSIsOgham:
1000 * @code: UCS code point
1001 *
1002 * Check whether the character is part of Ogham UCS Block
1003 *
1004 * Returns 1 if true 0 otherwise
1005 */
1006int
1007xmlUCSIsOgham(int code) {
1008 return((code >= 0x1680) && (code <= 0x169F));
1009}
1010
1011/**
1012 * xmlUCSIsOldItalic:
1013 * @code: UCS code point
1014 *
1015 * Check whether the character is part of OldItalic UCS Block
1016 *
1017 * Returns 1 if true 0 otherwise
1018 */
1019int
1020xmlUCSIsOldItalic(int code) {
1021 return((code >= 0x10300) && (code <= 0x1032F));
1022}
1023
1024/**
1025 * xmlUCSIsOpticalCharacterRecognition:
1026 * @code: UCS code point
1027 *
1028 * Check whether the character is part of OpticalCharacterRecognition UCS Block
1029 *
1030 * Returns 1 if true 0 otherwise
1031 */
1032int
1033xmlUCSIsOpticalCharacterRecognition(int code) {
1034 return((code >= 0x2440) && (code <= 0x245F));
1035}
1036
1037/**
1038 * xmlUCSIsOriya:
1039 * @code: UCS code point
1040 *
1041 * Check whether the character is part of Oriya UCS Block
1042 *
1043 * Returns 1 if true 0 otherwise
1044 */
1045int
1046xmlUCSIsOriya(int code) {
1047 return((code >= 0x0B00) && (code <= 0x0B7F));
1048}
1049
1050/**
1051 * xmlUCSIsPrivateUse:
1052 * @code: UCS code point
1053 *
1054 * Check whether the character is part of PrivateUse UCS Block
1055 *
1056 * Returns 1 if true 0 otherwise
1057 */
1058int
1059xmlUCSIsPrivateUse(int code) {
1060 return((code >= 0x100000) && (code <= 0x10FFFD));
1061}
1062
1063/**
1064 * xmlUCSIsRunic:
1065 * @code: UCS code point
1066 *
1067 * Check whether the character is part of Runic UCS Block
1068 *
1069 * Returns 1 if true 0 otherwise
1070 */
1071int
1072xmlUCSIsRunic(int code) {
1073 return((code >= 0x16A0) && (code <= 0x16FF));
1074}
1075
1076/**
1077 * xmlUCSIsSinhala:
1078 * @code: UCS code point
1079 *
1080 * Check whether the character is part of Sinhala UCS Block
1081 *
1082 * Returns 1 if true 0 otherwise
1083 */
1084int
1085xmlUCSIsSinhala(int code) {
1086 return((code >= 0x0D80) && (code <= 0x0DFF));
1087}
1088
1089/**
1090 * xmlUCSIsSmallFormVariants:
1091 * @code: UCS code point
1092 *
1093 * Check whether the character is part of SmallFormVariants UCS Block
1094 *
1095 * Returns 1 if true 0 otherwise
1096 */
1097int
1098xmlUCSIsSmallFormVariants(int code) {
1099 return((code >= 0xFE50) && (code <= 0xFE6F));
1100}
1101
1102/**
1103 * xmlUCSIsSpacingModifierLetters:
1104 * @code: UCS code point
1105 *
1106 * Check whether the character is part of SpacingModifierLetters UCS Block
1107 *
1108 * Returns 1 if true 0 otherwise
1109 */
1110int
1111xmlUCSIsSpacingModifierLetters(int code) {
1112 return((code >= 0x02B0) && (code <= 0x02FF));
1113}
1114
1115/**
1116 * xmlUCSIsSpecials:
1117 * @code: UCS code point
1118 *
1119 * Check whether the character is part of Specials UCS Block
1120 *
1121 * Returns 1 if true 0 otherwise
1122 */
1123int
1124xmlUCSIsSpecials(int code) {
1125 return((code >= 0xFFF0) && (code <= 0xFFFD));
1126}
1127
1128/**
1129 * xmlUCSIsSuperscriptsandSubscripts:
1130 * @code: UCS code point
1131 *
1132 * Check whether the character is part of SuperscriptsandSubscripts UCS Block
1133 *
1134 * Returns 1 if true 0 otherwise
1135 */
1136int
1137xmlUCSIsSuperscriptsandSubscripts(int code) {
1138 return((code >= 0x2070) && (code <= 0x209F));
1139}
1140
1141/**
1142 * xmlUCSIsSyriac:
1143 * @code: UCS code point
1144 *
1145 * Check whether the character is part of Syriac UCS Block
1146 *
1147 * Returns 1 if true 0 otherwise
1148 */
1149int
1150xmlUCSIsSyriac(int code) {
1151 return((code >= 0x0700) && (code <= 0x074F));
1152}
1153
1154/**
1155 * xmlUCSIsTags:
1156 * @code: UCS code point
1157 *
1158 * Check whether the character is part of Tags UCS Block
1159 *
1160 * Returns 1 if true 0 otherwise
1161 */
1162int
1163xmlUCSIsTags(int code) {
1164 return((code >= 0xE0000) && (code <= 0xE007F));
1165}
1166
1167/**
1168 * xmlUCSIsTamil:
1169 * @code: UCS code point
1170 *
1171 * Check whether the character is part of Tamil UCS Block
1172 *
1173 * Returns 1 if true 0 otherwise
1174 */
1175int
1176xmlUCSIsTamil(int code) {
1177 return((code >= 0x0B80) && (code <= 0x0BFF));
1178}
1179
1180/**
1181 * xmlUCSIsTelugu:
1182 * @code: UCS code point
1183 *
1184 * Check whether the character is part of Telugu UCS Block
1185 *
1186 * Returns 1 if true 0 otherwise
1187 */
1188int
1189xmlUCSIsTelugu(int code) {
1190 return((code >= 0x0C00) && (code <= 0x0C7F));
1191}
1192
1193/**
1194 * xmlUCSIsThaana:
1195 * @code: UCS code point
1196 *
1197 * Check whether the character is part of Thaana UCS Block
1198 *
1199 * Returns 1 if true 0 otherwise
1200 */
1201int
1202xmlUCSIsThaana(int code) {
1203 return((code >= 0x0780) && (code <= 0x07BF));
1204}
1205
1206/**
1207 * xmlUCSIsThai:
1208 * @code: UCS code point
1209 *
1210 * Check whether the character is part of Thai UCS Block
1211 *
1212 * Returns 1 if true 0 otherwise
1213 */
1214int
1215xmlUCSIsThai(int code) {
1216 return((code >= 0x0E00) && (code <= 0x0E7F));
1217}
1218
1219/**
1220 * xmlUCSIsTibetan:
1221 * @code: UCS code point
1222 *
1223 * Check whether the character is part of Tibetan UCS Block
1224 *
1225 * Returns 1 if true 0 otherwise
1226 */
1227int
1228xmlUCSIsTibetan(int code) {
1229 return((code >= 0x0F00) && (code <= 0x0FFF));
1230}
1231
1232/**
1233 * xmlUCSIsUnifiedCanadianAboriginalSyllabics:
1234 * @code: UCS code point
1235 *
1236 * Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block
1237 *
1238 * Returns 1 if true 0 otherwise
1239 */
1240int
1241xmlUCSIsUnifiedCanadianAboriginalSyllabics(int code) {
1242 return((code >= 0x1400) && (code <= 0x167F));
1243}
1244
1245/**
1246 * xmlUCSIsYiRadicals:
1247 * @code: UCS code point
1248 *
1249 * Check whether the character is part of YiRadicals UCS Block
1250 *
1251 * Returns 1 if true 0 otherwise
1252 */
1253int
1254xmlUCSIsYiRadicals(int code) {
1255 return((code >= 0xA490) && (code <= 0xA4CF));
1256}
1257
1258/**
1259 * xmlUCSIsYiSyllables:
1260 * @code: UCS code point
1261 *
1262 * Check whether the character is part of YiSyllables UCS Block
1263 *
1264 * Returns 1 if true 0 otherwise
1265 */
1266int
1267xmlUCSIsYiSyllables(int code) {
1268 return((code >= 0xA000) && (code <= 0xA48F));
1269}
1270
1271/**
1272 * xmlUCSIsBlock:
1273 * @code: UCS code point
1274 * @block: UCS block name
1275 *
1276 * Check whether the caracter is part of the UCS Block
1277 *
1278 * Returns 1 if true, 0 if false and -1 on unknown block
1279 */
1280int
1281xmlUCSIsBlock(int code, const char *block) {
1282 if (!strcmp(block, "AlphabeticPresentationForms"))
1283 return(xmlUCSIsAlphabeticPresentationForms(code));
1284 if (!strcmp(block, "Arabic"))
1285 return(xmlUCSIsArabic(code));
1286 if (!strcmp(block, "ArabicPresentationForms-A"))
1287 return(xmlUCSIsArabicPresentationFormsA(code));
1288 if (!strcmp(block, "ArabicPresentationForms-B"))
1289 return(xmlUCSIsArabicPresentationFormsB(code));
1290 if (!strcmp(block, "Armenian"))
1291 return(xmlUCSIsArmenian(code));
1292 if (!strcmp(block, "Arrows"))
1293 return(xmlUCSIsArrows(code));
1294 if (!strcmp(block, "BasicLatin"))
1295 return(xmlUCSIsBasicLatin(code));
1296 if (!strcmp(block, "Bengali"))
1297 return(xmlUCSIsBengali(code));
1298 if (!strcmp(block, "BlockElements"))
1299 return(xmlUCSIsBlockElements(code));
1300 if (!strcmp(block, "Bopomofo"))
1301 return(xmlUCSIsBopomofo(code));
1302 if (!strcmp(block, "BopomofoExtended"))
1303 return(xmlUCSIsBopomofoExtended(code));
1304 if (!strcmp(block, "BoxDrawing"))
1305 return(xmlUCSIsBoxDrawing(code));
1306 if (!strcmp(block, "BraillePatterns"))
1307 return(xmlUCSIsBraillePatterns(code));
1308 if (!strcmp(block, "ByzantineMusicalSymbols"))
1309 return(xmlUCSIsByzantineMusicalSymbols(code));
1310 if (!strcmp(block, "CJKCompatibility"))
1311 return(xmlUCSIsCJKCompatibility(code));
1312 if (!strcmp(block, "CJKCompatibilityForms"))
1313 return(xmlUCSIsCJKCompatibilityForms(code));
1314 if (!strcmp(block, "CJKCompatibilityIdeographs"))
1315 return(xmlUCSIsCJKCompatibilityIdeographs(code));
1316 if (!strcmp(block, "CJKCompatibilityIdeographsSupplement"))
1317 return(xmlUCSIsCJKCompatibilityIdeographsSupplement(code));
1318 if (!strcmp(block, "CJKRadicalsSupplement"))
1319 return(xmlUCSIsCJKRadicalsSupplement(code));
1320 if (!strcmp(block, "CJKSymbolsandPunctuation"))
1321 return(xmlUCSIsCJKSymbolsandPunctuation(code));
1322 if (!strcmp(block, "CJKUnifiedIdeographs"))
1323 return(xmlUCSIsCJKUnifiedIdeographs(code));
1324 if (!strcmp(block, "CJKUnifiedIdeographsExtensionA"))
1325 return(xmlUCSIsCJKUnifiedIdeographsExtensionA(code));
1326 if (!strcmp(block, "CJKUnifiedIdeographsExtensionB"))
1327 return(xmlUCSIsCJKUnifiedIdeographsExtensionB(code));
1328 if (!strcmp(block, "Cherokee"))
1329 return(xmlUCSIsCherokee(code));
1330 if (!strcmp(block, "CombiningDiacriticalMarks"))
1331 return(xmlUCSIsCombiningDiacriticalMarks(code));
1332 if (!strcmp(block, "CombiningHalfMarks"))
1333 return(xmlUCSIsCombiningHalfMarks(code));
1334 if (!strcmp(block, "CombiningMarksforSymbols"))
1335 return(xmlUCSIsCombiningMarksforSymbols(code));
1336 if (!strcmp(block, "ControlPictures"))
1337 return(xmlUCSIsControlPictures(code));
1338 if (!strcmp(block, "CurrencySymbols"))
1339 return(xmlUCSIsCurrencySymbols(code));
1340 if (!strcmp(block, "Cyrillic"))
1341 return(xmlUCSIsCyrillic(code));
1342 if (!strcmp(block, "Deseret"))
1343 return(xmlUCSIsDeseret(code));
1344 if (!strcmp(block, "Devanagari"))
1345 return(xmlUCSIsDevanagari(code));
1346 if (!strcmp(block, "Dingbats"))
1347 return(xmlUCSIsDingbats(code));
1348 if (!strcmp(block, "EnclosedAlphanumerics"))
1349 return(xmlUCSIsEnclosedAlphanumerics(code));
1350 if (!strcmp(block, "EnclosedCJKLettersandMonths"))
1351 return(xmlUCSIsEnclosedCJKLettersandMonths(code));
1352 if (!strcmp(block, "Ethiopic"))
1353 return(xmlUCSIsEthiopic(code));
1354 if (!strcmp(block, "GeneralPunctuation"))
1355 return(xmlUCSIsGeneralPunctuation(code));
1356 if (!strcmp(block, "GeometricShapes"))
1357 return(xmlUCSIsGeometricShapes(code));
1358 if (!strcmp(block, "Georgian"))
1359 return(xmlUCSIsGeorgian(code));
1360 if (!strcmp(block, "Gothic"))
1361 return(xmlUCSIsGothic(code));
1362 if (!strcmp(block, "Greek"))
1363 return(xmlUCSIsGreek(code));
1364 if (!strcmp(block, "GreekExtended"))
1365 return(xmlUCSIsGreekExtended(code));
1366 if (!strcmp(block, "Gujarati"))
1367 return(xmlUCSIsGujarati(code));
1368 if (!strcmp(block, "Gurmukhi"))
1369 return(xmlUCSIsGurmukhi(code));
1370 if (!strcmp(block, "HalfwidthandFullwidthForms"))
1371 return(xmlUCSIsHalfwidthandFullwidthForms(code));
1372 if (!strcmp(block, "HangulCompatibilityJamo"))
1373 return(xmlUCSIsHangulCompatibilityJamo(code));
1374 if (!strcmp(block, "HangulJamo"))
1375 return(xmlUCSIsHangulJamo(code));
1376 if (!strcmp(block, "HangulSyllables"))
1377 return(xmlUCSIsHangulSyllables(code));
1378 if (!strcmp(block, "Hebrew"))
1379 return(xmlUCSIsHebrew(code));
1380 if (!strcmp(block, "HighPrivateUseSurrogates"))
1381 return(xmlUCSIsHighPrivateUseSurrogates(code));
1382 if (!strcmp(block, "HighSurrogates"))
1383 return(xmlUCSIsHighSurrogates(code));
1384 if (!strcmp(block, "Hiragana"))
1385 return(xmlUCSIsHiragana(code));
1386 if (!strcmp(block, "IPAExtensions"))
1387 return(xmlUCSIsIPAExtensions(code));
1388 if (!strcmp(block, "IdeographicDescriptionCharacters"))
1389 return(xmlUCSIsIdeographicDescriptionCharacters(code));
1390 if (!strcmp(block, "Kanbun"))
1391 return(xmlUCSIsKanbun(code));
1392 if (!strcmp(block, "KangxiRadicals"))
1393 return(xmlUCSIsKangxiRadicals(code));
1394 if (!strcmp(block, "Kannada"))
1395 return(xmlUCSIsKannada(code));
1396 if (!strcmp(block, "Katakana"))
1397 return(xmlUCSIsKatakana(code));
1398 if (!strcmp(block, "Khmer"))
1399 return(xmlUCSIsKhmer(code));
1400 if (!strcmp(block, "Lao"))
1401 return(xmlUCSIsLao(code));
1402 if (!strcmp(block, "Latin-1Supplement"))
1403 return(xmlUCSIsLatin1Supplement(code));
1404 if (!strcmp(block, "LatinExtended-A"))
1405 return(xmlUCSIsLatinExtendedA(code));
1406 if (!strcmp(block, "LatinExtended-B"))
1407 return(xmlUCSIsLatinExtendedB(code));
1408 if (!strcmp(block, "LatinExtendedAdditional"))
1409 return(xmlUCSIsLatinExtendedAdditional(code));
1410 if (!strcmp(block, "LetterlikeSymbols"))
1411 return(xmlUCSIsLetterlikeSymbols(code));
1412 if (!strcmp(block, "LowSurrogates"))
1413 return(xmlUCSIsLowSurrogates(code));
1414 if (!strcmp(block, "Malayalam"))
1415 return(xmlUCSIsMalayalam(code));
1416 if (!strcmp(block, "MathematicalAlphanumericSymbols"))
1417 return(xmlUCSIsMathematicalAlphanumericSymbols(code));
1418 if (!strcmp(block, "MathematicalOperators"))
1419 return(xmlUCSIsMathematicalOperators(code));
1420 if (!strcmp(block, "MiscellaneousSymbols"))
1421 return(xmlUCSIsMiscellaneousSymbols(code));
1422 if (!strcmp(block, "MiscellaneousTechnical"))
1423 return(xmlUCSIsMiscellaneousTechnical(code));
1424 if (!strcmp(block, "Mongolian"))
1425 return(xmlUCSIsMongolian(code));
1426 if (!strcmp(block, "MusicalSymbols"))
1427 return(xmlUCSIsMusicalSymbols(code));
1428 if (!strcmp(block, "Myanmar"))
1429 return(xmlUCSIsMyanmar(code));
1430 if (!strcmp(block, "NumberForms"))
1431 return(xmlUCSIsNumberForms(code));
1432 if (!strcmp(block, "Ogham"))
1433 return(xmlUCSIsOgham(code));
1434 if (!strcmp(block, "OldItalic"))
1435 return(xmlUCSIsOldItalic(code));
1436 if (!strcmp(block, "OpticalCharacterRecognition"))
1437 return(xmlUCSIsOpticalCharacterRecognition(code));
1438 if (!strcmp(block, "Oriya"))
1439 return(xmlUCSIsOriya(code));
1440 if (!strcmp(block, "PrivateUse"))
1441 return(xmlUCSIsPrivateUse(code));
1442 if (!strcmp(block, "Runic"))
1443 return(xmlUCSIsRunic(code));
1444 if (!strcmp(block, "Sinhala"))
1445 return(xmlUCSIsSinhala(code));
1446 if (!strcmp(block, "SmallFormVariants"))
1447 return(xmlUCSIsSmallFormVariants(code));
1448 if (!strcmp(block, "SpacingModifierLetters"))
1449 return(xmlUCSIsSpacingModifierLetters(code));
1450 if (!strcmp(block, "Specials"))
1451 return(xmlUCSIsSpecials(code));
1452 if (!strcmp(block, "SuperscriptsandSubscripts"))
1453 return(xmlUCSIsSuperscriptsandSubscripts(code));
1454 if (!strcmp(block, "Syriac"))
1455 return(xmlUCSIsSyriac(code));
1456 if (!strcmp(block, "Tags"))
1457 return(xmlUCSIsTags(code));
1458 if (!strcmp(block, "Tamil"))
1459 return(xmlUCSIsTamil(code));
1460 if (!strcmp(block, "Telugu"))
1461 return(xmlUCSIsTelugu(code));
1462 if (!strcmp(block, "Thaana"))
1463 return(xmlUCSIsThaana(code));
1464 if (!strcmp(block, "Thai"))
1465 return(xmlUCSIsThai(code));
1466 if (!strcmp(block, "Tibetan"))
1467 return(xmlUCSIsTibetan(code));
1468 if (!strcmp(block, "UnifiedCanadianAboriginalSyllabics"))
1469 return(xmlUCSIsUnifiedCanadianAboriginalSyllabics(code));
1470 if (!strcmp(block, "YiRadicals"))
1471 return(xmlUCSIsYiRadicals(code));
1472 if (!strcmp(block, "YiSyllables"))
1473 return(xmlUCSIsYiSyllables(code));
1474 return(-1);
1475}
1476
1477/**
1478 * xmlUCSIsCatC:
1479 * @code: UCS code point
1480 *
1481 * Check whether the character is part of C UCS Category
1482 *
1483 * Returns 1 if true 0 otherwise
1484 */
1485int
1486xmlUCSIsCatC(int code) {
1487 return(((code >= 0x0) && (code <= 0x1f)) ||
1488 ((code >= 0x7f) && (code <= 0x9f)) ||
1489 (code == 0x70f) ||
1490 ((code >= 0x180b) && (code <= 0x180e)) ||
1491 ((code >= 0x200c) && (code <= 0x200f)) ||
1492 ((code >= 0x202a) && (code <= 0x202e)) ||
1493 ((code >= 0x206a) && (code <= 0x206f)) ||
1494 (code == 0xd800) ||
1495 ((code >= 0xdb7f) && (code <= 0xdb80)) ||
1496 ((code >= 0xdbff) && (code <= 0xdc00)) ||
1497 ((code >= 0xdfff) && (code <= 0xe000)) ||
1498 (code == 0xf8ff) ||
1499 (code == 0xfeff) ||
1500 ((code >= 0xfff9) && (code <= 0xfffb)) ||
1501 ((code >= 0x1d173) && (code <= 0x1d17a)) ||
1502 (code == 0xe0001) ||
1503 ((code >= 0xe0020) && (code <= 0xe007f)) ||
1504 (code == 0xf0000) ||
1505 (code == 0xffffd) ||
1506 (code == 0x100000) ||
1507 (code == 0x10fffd));
1508}
1509
1510/**
1511 * xmlUCSIsCatCc:
1512 * @code: UCS code point
1513 *
1514 * Check whether the character is part of Cc UCS Category
1515 *
1516 * Returns 1 if true 0 otherwise
1517 */
1518int
1519xmlUCSIsCatCc(int code) {
1520 return(((code >= 0x0) && (code <= 0x1f)) ||
1521 ((code >= 0x7f) && (code <= 0x9f)));
1522}
1523
1524/**
1525 * xmlUCSIsCatCf:
1526 * @code: UCS code point
1527 *
1528 * Check whether the character is part of Cf UCS Category
1529 *
1530 * Returns 1 if true 0 otherwise
1531 */
1532int
1533xmlUCSIsCatCf(int code) {
1534 return((code == 0x70f) ||
1535 ((code >= 0x180b) && (code <= 0x180e)) ||
1536 ((code >= 0x200c) && (code <= 0x200f)) ||
1537 ((code >= 0x202a) && (code <= 0x202e)) ||
1538 ((code >= 0x206a) && (code <= 0x206f)) ||
1539 (code == 0xfeff) ||
1540 ((code >= 0xfff9) && (code <= 0xfffb)) ||
1541 ((code >= 0x1d173) && (code <= 0x1d17a)) ||
1542 (code == 0xe0001) ||
1543 ((code >= 0xe0020) && (code <= 0xe007f)));
1544}
1545
1546/**
1547 * xmlUCSIsCatCo:
1548 * @code: UCS code point
1549 *
1550 * Check whether the character is part of Co UCS Category
1551 *
1552 * Returns 1 if true 0 otherwise
1553 */
1554int
1555xmlUCSIsCatCo(int code) {
1556 return((code == 0xe000) ||
1557 (code == 0xf8ff) ||
1558 (code == 0xf0000) ||
1559 (code == 0xffffd) ||
1560 (code == 0x100000) ||
1561 (code == 0x10fffd));
1562}
1563
1564/**
1565 * xmlUCSIsCatCs:
1566 * @code: UCS code point
1567 *
1568 * Check whether the character is part of Cs UCS Category
1569 *
1570 * Returns 1 if true 0 otherwise
1571 */
1572int
1573xmlUCSIsCatCs(int code) {
1574 return((code == 0xd800) ||
1575 ((code >= 0xdb7f) && (code <= 0xdb80)) ||
1576 ((code >= 0xdbff) && (code <= 0xdc00)) ||
1577 (code == 0xdfff));
1578}
1579
1580/**
1581 * xmlUCSIsCatL:
1582 * @code: UCS code point
1583 *
1584 * Check whether the character is part of L UCS Category
1585 *
1586 * Returns 1 if true 0 otherwise
1587 */
1588int
1589xmlUCSIsCatL(int code) {
1590 return(((code >= 0x41) && (code <= 0x5a)) ||
1591 ((code >= 0x61) && (code <= 0x7a)) ||
1592 (code == 0xaa) ||
1593 (code == 0xb5) ||
1594 (code == 0xba) ||
1595 ((code >= 0xc0) && (code <= 0xd6)) ||
1596 ((code >= 0xd8) && (code <= 0xf6)) ||
1597 ((code >= 0xf8) && (code <= 0x21f)) ||
1598 ((code >= 0x222) && (code <= 0x233)) ||
1599 ((code >= 0x250) && (code <= 0x2ad)) ||
1600 ((code >= 0x2b0) && (code <= 0x2b8)) ||
1601 ((code >= 0x2bb) && (code <= 0x2c1)) ||
1602 ((code >= 0x2d0) && (code <= 0x2d1)) ||
1603 ((code >= 0x2e0) && (code <= 0x2e4)) ||
1604 (code == 0x2ee) ||
1605 (code == 0x37a) ||
1606 (code == 0x386) ||
1607 ((code >= 0x388) && (code <= 0x38a)) ||
1608 (code == 0x38c) ||
1609 ((code >= 0x38e) && (code <= 0x3a1)) ||
1610 ((code >= 0x3a3) && (code <= 0x3ce)) ||
1611 ((code >= 0x3d0) && (code <= 0x3d7)) ||
1612 ((code >= 0x3da) && (code <= 0x3f5)) ||
1613 ((code >= 0x400) && (code <= 0x481)) ||
1614 ((code >= 0x48c) && (code <= 0x4c4)) ||
1615 ((code >= 0x4c7) && (code <= 0x4c8)) ||
1616 ((code >= 0x4cb) && (code <= 0x4cc)) ||
1617 ((code >= 0x4d0) && (code <= 0x4f5)) ||
1618 ((code >= 0x4f8) && (code <= 0x4f9)) ||
1619 ((code >= 0x531) && (code <= 0x556)) ||
1620 (code == 0x559) ||
1621 ((code >= 0x561) && (code <= 0x587)) ||
1622 ((code >= 0x5d0) && (code <= 0x5ea)) ||
1623 ((code >= 0x5f0) && (code <= 0x5f2)) ||
1624 ((code >= 0x621) && (code <= 0x63a)) ||
1625 ((code >= 0x640) && (code <= 0x64a)) ||
1626 ((code >= 0x671) && (code <= 0x6d3)) ||
1627 (code == 0x6d5) ||
1628 ((code >= 0x6e5) && (code <= 0x6e6)) ||
1629 ((code >= 0x6fa) && (code <= 0x6fc)) ||
1630 (code == 0x710) ||
1631 ((code >= 0x712) && (code <= 0x72c)) ||
1632 ((code >= 0x780) && (code <= 0x7a5)) ||
1633 ((code >= 0x905) && (code <= 0x939)) ||
1634 (code == 0x93d) ||
1635 (code == 0x950) ||
1636 ((code >= 0x958) && (code <= 0x961)) ||
1637 ((code >= 0x985) && (code <= 0x98c)) ||
1638 ((code >= 0x98f) && (code <= 0x990)) ||
1639 ((code >= 0x993) && (code <= 0x9a8)) ||
1640 ((code >= 0x9aa) && (code <= 0x9b0)) ||
1641 (code == 0x9b2) ||
1642 ((code >= 0x9b6) && (code <= 0x9b9)) ||
1643 ((code >= 0x9dc) && (code <= 0x9dd)) ||
1644 ((code >= 0x9df) && (code <= 0x9e1)) ||
1645 ((code >= 0x9f0) && (code <= 0x9f1)) ||
1646 ((code >= 0xa05) && (code <= 0xa0a)) ||
1647 ((code >= 0xa0f) && (code <= 0xa10)) ||
1648 ((code >= 0xa13) && (code <= 0xa28)) ||
1649 ((code >= 0xa2a) && (code <= 0xa30)) ||
1650 ((code >= 0xa32) && (code <= 0xa33)) ||
1651 ((code >= 0xa35) && (code <= 0xa36)) ||
1652 ((code >= 0xa38) && (code <= 0xa39)) ||
1653 ((code >= 0xa59) && (code <= 0xa5c)) ||
1654 (code == 0xa5e) ||
1655 ((code >= 0xa72) && (code <= 0xa74)) ||
1656 ((code >= 0xa85) && (code <= 0xa8b)) ||
1657 (code == 0xa8d) ||
1658 ((code >= 0xa8f) && (code <= 0xa91)) ||
1659 ((code >= 0xa93) && (code <= 0xaa8)) ||
1660 ((code >= 0xaaa) && (code <= 0xab0)) ||
1661 ((code >= 0xab2) && (code <= 0xab3)) ||
1662 ((code >= 0xab5) && (code <= 0xab9)) ||
1663 (code == 0xabd) ||
1664 (code == 0xad0) ||
1665 (code == 0xae0) ||
1666 ((code >= 0xb05) && (code <= 0xb0c)) ||
1667 ((code >= 0xb0f) && (code <= 0xb10)) ||
1668 ((code >= 0xb13) && (code <= 0xb28)) ||
1669 ((code >= 0xb2a) && (code <= 0xb30)) ||
1670 ((code >= 0xb32) && (code <= 0xb33)) ||
1671 ((code >= 0xb36) && (code <= 0xb39)) ||
1672 (code == 0xb3d) ||
1673 ((code >= 0xb5c) && (code <= 0xb5d)) ||
1674 ((code >= 0xb5f) && (code <= 0xb61)) ||
1675 ((code >= 0xb85) && (code <= 0xb8a)) ||
1676 ((code >= 0xb8e) && (code <= 0xb90)) ||
1677 ((code >= 0xb92) && (code <= 0xb95)) ||
1678 ((code >= 0xb99) && (code <= 0xb9a)) ||
1679 (code == 0xb9c) ||
1680 ((code >= 0xb9e) && (code <= 0xb9f)) ||
1681 ((code >= 0xba3) && (code <= 0xba4)) ||
1682 ((code >= 0xba8) && (code <= 0xbaa)) ||
1683 ((code >= 0xbae) && (code <= 0xbb5)) ||
1684 ((code >= 0xbb7) && (code <= 0xbb9)) ||
1685 ((code >= 0xc05) && (code <= 0xc0c)) ||
1686 ((code >= 0xc0e) && (code <= 0xc10)) ||
1687 ((code >= 0xc12) && (code <= 0xc28)) ||
1688 ((code >= 0xc2a) && (code <= 0xc33)) ||
1689 ((code >= 0xc35) && (code <= 0xc39)) ||
1690 ((code >= 0xc60) && (code <= 0xc61)) ||
1691 ((code >= 0xc85) && (code <= 0xc8c)) ||
1692 ((code >= 0xc8e) && (code <= 0xc90)) ||
1693 ((code >= 0xc92) && (code <= 0xca8)) ||
1694 ((code >= 0xcaa) && (code <= 0xcb3)) ||
1695 ((code >= 0xcb5) && (code <= 0xcb9)) ||
1696 (code == 0xcde) ||
1697 ((code >= 0xce0) && (code <= 0xce1)) ||
1698 ((code >= 0xd05) && (code <= 0xd0c)) ||
1699 ((code >= 0xd0e) && (code <= 0xd10)) ||
1700 ((code >= 0xd12) && (code <= 0xd28)) ||
1701 ((code >= 0xd2a) && (code <= 0xd39)) ||
1702 ((code >= 0xd60) && (code <= 0xd61)) ||
1703 ((code >= 0xd85) && (code <= 0xd96)) ||
1704 ((code >= 0xd9a) && (code <= 0xdb1)) ||
1705 ((code >= 0xdb3) && (code <= 0xdbb)) ||
1706 (code == 0xdbd) ||
1707 ((code >= 0xdc0) && (code <= 0xdc6)) ||
1708 ((code >= 0xe01) && (code <= 0xe30)) ||
1709 ((code >= 0xe32) && (code <= 0xe33)) ||
1710 ((code >= 0xe40) && (code <= 0xe46)) ||
1711 ((code >= 0xe81) && (code <= 0xe82)) ||
1712 (code == 0xe84) ||
1713 ((code >= 0xe87) && (code <= 0xe88)) ||
1714 (code == 0xe8a) ||
1715 (code == 0xe8d) ||
1716 ((code >= 0xe94) && (code <= 0xe97)) ||
1717 ((code >= 0xe99) && (code <= 0xe9f)) ||
1718 ((code >= 0xea1) && (code <= 0xea3)) ||
1719 (code == 0xea5) ||
1720 (code == 0xea7) ||
1721 ((code >= 0xeaa) && (code <= 0xeab)) ||
1722 ((code >= 0xead) && (code <= 0xeb0)) ||
1723 ((code >= 0xeb2) && (code <= 0xeb3)) ||
1724 (code == 0xebd) ||
1725 ((code >= 0xec0) && (code <= 0xec4)) ||
1726 (code == 0xec6) ||
1727 ((code >= 0xedc) && (code <= 0xedd)) ||
1728 (code == 0xf00) ||
1729 ((code >= 0xf40) && (code <= 0xf47)) ||
1730 ((code >= 0xf49) && (code <= 0xf6a)) ||
1731 ((code >= 0xf88) && (code <= 0xf8b)) ||
1732 ((code >= 0x1000) && (code <= 0x1021)) ||
1733 ((code >= 0x1023) && (code <= 0x1027)) ||
1734 ((code >= 0x1029) && (code <= 0x102a)) ||
1735 ((code >= 0x1050) && (code <= 0x1055)) ||
1736 ((code >= 0x10a0) && (code <= 0x10c5)) ||
1737 ((code >= 0x10d0) && (code <= 0x10f6)) ||
1738 ((code >= 0x1100) && (code <= 0x1159)) ||
1739 ((code >= 0x115f) && (code <= 0x11a2)) ||
1740 ((code >= 0x11a8) && (code <= 0x11f9)) ||
1741 ((code >= 0x1200) && (code <= 0x1206)) ||
1742 ((code >= 0x1208) && (code <= 0x1246)) ||
1743 (code == 0x1248) ||
1744 ((code >= 0x124a) && (code <= 0x124d)) ||
1745 ((code >= 0x1250) && (code <= 0x1256)) ||
1746 (code == 0x1258) ||
1747 ((code >= 0x125a) && (code <= 0x125d)) ||
1748 ((code >= 0x1260) && (code <= 0x1286)) ||
1749 (code == 0x1288) ||
1750 ((code >= 0x128a) && (code <= 0x128d)) ||
1751 ((code >= 0x1290) && (code <= 0x12ae)) ||
1752 (code == 0x12b0) ||
1753 ((code >= 0x12b2) && (code <= 0x12b5)) ||
1754 ((code >= 0x12b8) && (code <= 0x12be)) ||
1755 (code == 0x12c0) ||
1756 ((code >= 0x12c2) && (code <= 0x12c5)) ||
1757 ((code >= 0x12c8) && (code <= 0x12ce)) ||
1758 ((code >= 0x12d0) && (code <= 0x12d6)) ||
1759 ((code >= 0x12d8) && (code <= 0x12ee)) ||
1760 ((code >= 0x12f0) && (code <= 0x130e)) ||
1761 (code == 0x1310) ||
1762 ((code >= 0x1312) && (code <= 0x1315)) ||
1763 ((code >= 0x1318) && (code <= 0x131e)) ||
1764 ((code >= 0x1320) && (code <= 0x1346)) ||
1765 ((code >= 0x1348) && (code <= 0x135a)) ||
1766 ((code >= 0x13a0) && (code <= 0x13f4)) ||
1767 ((code >= 0x1401) && (code <= 0x166c)) ||
1768 ((code >= 0x166f) && (code <= 0x1676)) ||
1769 ((code >= 0x1681) && (code <= 0x169a)) ||
1770 ((code >= 0x16a0) && (code <= 0x16ea)) ||
1771 ((code >= 0x1780) && (code <= 0x17b3)) ||
1772 ((code >= 0x1820) && (code <= 0x1877)) ||
1773 ((code >= 0x1880) && (code <= 0x18a8)) ||
1774 ((code >= 0x1e00) && (code <= 0x1e9b)) ||
1775 ((code >= 0x1ea0) && (code <= 0x1ef9)) ||
1776 ((code >= 0x1f00) && (code <= 0x1f15)) ||
1777 ((code >= 0x1f18) && (code <= 0x1f1d)) ||
1778 ((code >= 0x1f20) && (code <= 0x1f45)) ||
1779 ((code >= 0x1f48) && (code <= 0x1f4d)) ||
1780 ((code >= 0x1f50) && (code <= 0x1f57)) ||
1781 (code == 0x1f59) ||
1782 (code == 0x1f5b) ||
1783 (code == 0x1f5d) ||
1784 ((code >= 0x1f5f) && (code <= 0x1f7d)) ||
1785 ((code >= 0x1f80) && (code <= 0x1fb4)) ||
1786 ((code >= 0x1fb6) && (code <= 0x1fbc)) ||
1787 (code == 0x1fbe) ||
1788 ((code >= 0x1fc2) && (code <= 0x1fc4)) ||
1789 ((code >= 0x1fc6) && (code <= 0x1fcc)) ||
1790 ((code >= 0x1fd0) && (code <= 0x1fd3)) ||
1791 ((code >= 0x1fd6) && (code <= 0x1fdb)) ||
1792 ((code >= 0x1fe0) && (code <= 0x1fec)) ||
1793 ((code >= 0x1ff2) && (code <= 0x1ff4)) ||
1794 ((code >= 0x1ff6) && (code <= 0x1ffc)) ||
1795 (code == 0x207f) ||
1796 (code == 0x2102) ||
1797 (code == 0x2107) ||
1798 ((code >= 0x210a) && (code <= 0x2113)) ||
1799 (code == 0x2115) ||
1800 ((code >= 0x2119) && (code <= 0x211d)) ||
1801 (code == 0x2124) ||
1802 (code == 0x2126) ||
1803 (code == 0x2128) ||
1804 ((code >= 0x212a) && (code <= 0x212d)) ||
1805 ((code >= 0x212f) && (code <= 0x2131)) ||
1806 ((code >= 0x2133) && (code <= 0x2139)) ||
1807 ((code >= 0x3005) && (code <= 0x3006)) ||
1808 ((code >= 0x3031) && (code <= 0x3035)) ||
1809 ((code >= 0x3041) && (code <= 0x3094)) ||
1810 ((code >= 0x309d) && (code <= 0x309e)) ||
1811 ((code >= 0x30a1) && (code <= 0x30fa)) ||
1812 ((code >= 0x30fc) && (code <= 0x30fe)) ||
1813 ((code >= 0x3105) && (code <= 0x312c)) ||
1814 ((code >= 0x3131) && (code <= 0x318e)) ||
1815 ((code >= 0x31a0) && (code <= 0x31b7)) ||
1816 (code == 0x3400) ||
1817 (code == 0x4db5) ||
1818 (code == 0x4e00) ||
1819 (code == 0x9fa5) ||
1820 ((code >= 0xa000) && (code <= 0xa48c)) ||
1821 (code == 0xac00) ||
1822 (code == 0xd7a3) ||
1823 ((code >= 0xf900) && (code <= 0xfa2d)) ||
1824 ((code >= 0xfb00) && (code <= 0xfb06)) ||
1825 ((code >= 0xfb13) && (code <= 0xfb17)) ||
1826 (code == 0xfb1d) ||
1827 ((code >= 0xfb1f) && (code <= 0xfb28)) ||
1828 ((code >= 0xfb2a) && (code <= 0xfb36)) ||
1829 ((code >= 0xfb38) && (code <= 0xfb3c)) ||
1830 (code == 0xfb3e) ||
1831 ((code >= 0xfb40) && (code <= 0xfb41)) ||
1832 ((code >= 0xfb43) && (code <= 0xfb44)) ||
1833 ((code >= 0xfb46) && (code <= 0xfbb1)) ||
1834 ((code >= 0xfbd3) && (code <= 0xfd3d)) ||
1835 ((code >= 0xfd50) && (code <= 0xfd8f)) ||
1836 ((code >= 0xfd92) && (code <= 0xfdc7)) ||
1837 ((code >= 0xfdf0) && (code <= 0xfdfb)) ||
1838 ((code >= 0xfe70) && (code <= 0xfe72)) ||
1839 (code == 0xfe74) ||
1840 ((code >= 0xfe76) && (code <= 0xfefc)) ||
1841 ((code >= 0xff21) && (code <= 0xff3a)) ||
1842 ((code >= 0xff41) && (code <= 0xff5a)) ||
1843 ((code >= 0xff66) && (code <= 0xffbe)) ||
1844 ((code >= 0xffc2) && (code <= 0xffc7)) ||
1845 ((code >= 0xffca) && (code <= 0xffcf)) ||
1846 ((code >= 0xffd2) && (code <= 0xffd7)) ||
1847 ((code >= 0xffda) && (code <= 0xffdc)) ||
1848 ((code >= 0x10300) && (code <= 0x1031e)) ||
1849 ((code >= 0x10330) && (code <= 0x10349)) ||
1850 ((code >= 0x10400) && (code <= 0x10425)) ||
1851 ((code >= 0x10428) && (code <= 0x1044d)) ||
1852 ((code >= 0x1d400) && (code <= 0x1d454)) ||
1853 ((code >= 0x1d456) && (code <= 0x1d49c)) ||
1854 ((code >= 0x1d49e) && (code <= 0x1d49f)) ||
1855 (code == 0x1d4a2) ||
1856 ((code >= 0x1d4a5) && (code <= 0x1d4a6)) ||
1857 ((code >= 0x1d4a9) && (code <= 0x1d4ac)) ||
1858 ((code >= 0x1d4ae) && (code <= 0x1d4b9)) ||
1859 (code == 0x1d4bb) ||
1860 ((code >= 0x1d4bd) && (code <= 0x1d4c0)) ||
1861 ((code >= 0x1d4c2) && (code <= 0x1d4c3)) ||
1862 ((code >= 0x1d4c5) && (code <= 0x1d505)) ||
1863 ((code >= 0x1d507) && (code <= 0x1d50a)) ||
1864 ((code >= 0x1d50d) && (code <= 0x1d514)) ||
1865 ((code >= 0x1d516) && (code <= 0x1d51c)) ||
1866 ((code >= 0x1d51e) && (code <= 0x1d539)) ||
1867 ((code >= 0x1d53b) && (code <= 0x1d53e)) ||
1868 ((code >= 0x1d540) && (code <= 0x1d544)) ||
1869 (code == 0x1d546) ||
1870 ((code >= 0x1d54a) && (code <= 0x1d550)) ||
1871 ((code >= 0x1d552) && (code <= 0x1d6a3)) ||
1872 ((code >= 0x1d6a8) && (code <= 0x1d6c0)) ||
1873 ((code >= 0x1d6c2) && (code <= 0x1d6da)) ||
1874 ((code >= 0x1d6dc) && (code <= 0x1d6fa)) ||
1875 ((code >= 0x1d6fc) && (code <= 0x1d714)) ||
1876 ((code >= 0x1d716) && (code <= 0x1d734)) ||
1877 ((code >= 0x1d736) && (code <= 0x1d74e)) ||
1878 ((code >= 0x1d750) && (code <= 0x1d76e)) ||
1879 ((code >= 0x1d770) && (code <= 0x1d788)) ||
1880 ((code >= 0x1d78a) && (code <= 0x1d7a8)) ||
1881 ((code >= 0x1d7aa) && (code <= 0x1d7c2)) ||
1882 ((code >= 0x1d7c4) && (code <= 0x1d7c9)) ||
1883 (code == 0x20000) ||
1884 (code == 0x2a6d6) ||
1885 ((code >= 0x2f800) && (code <= 0x2fa1d)));
1886}
1887
1888/**
1889 * xmlUCSIsCatLl:
1890 * @code: UCS code point
1891 *
1892 * Check whether the character is part of Ll UCS Category
1893 *
1894 * Returns 1 if true 0 otherwise
1895 */
1896int
1897xmlUCSIsCatLl(int code) {
1898 return(((code >= 0x61) && (code <= 0x7a)) ||
1899 (code == 0xaa) ||
1900 (code == 0xb5) ||
1901 (code == 0xba) ||
1902 ((code >= 0xdf) && (code <= 0xf6)) ||
1903 ((code >= 0xf8) && (code <= 0xff)) ||
1904 (code == 0x101) ||
1905 (code == 0x103) ||
1906 (code == 0x105) ||
1907 (code == 0x107) ||
1908 (code == 0x109) ||
1909 (code == 0x10b) ||
1910 (code == 0x10d) ||
1911 (code == 0x10f) ||
1912 (code == 0x111) ||
1913 (code == 0x113) ||
1914 (code == 0x115) ||
1915 (code == 0x117) ||
1916 (code == 0x119) ||
1917 (code == 0x11b) ||
1918 (code == 0x11d) ||
1919 (code == 0x11f) ||
1920 (code == 0x121) ||
1921 (code == 0x123) ||
1922 (code == 0x125) ||
1923 (code == 0x127) ||
1924 (code == 0x129) ||
1925 (code == 0x12b) ||
1926 (code == 0x12d) ||
1927 (code == 0x12f) ||
1928 (code == 0x131) ||
1929 (code == 0x133) ||
1930 (code == 0x135) ||
1931 ((code >= 0x137) && (code <= 0x138)) ||
1932 (code == 0x13a) ||
1933 (code == 0x13c) ||
1934 (code == 0x13e) ||
1935 (code == 0x140) ||
1936 (code == 0x142) ||
1937 (code == 0x144) ||
1938 (code == 0x146) ||
1939 ((code >= 0x148) && (code <= 0x149)) ||
1940 (code == 0x14b) ||
1941 (code == 0x14d) ||
1942 (code == 0x14f) ||
1943 (code == 0x151) ||
1944 (code == 0x153) ||
1945 (code == 0x155) ||
1946 (code == 0x157) ||
1947 (code == 0x159) ||
1948 (code == 0x15b) ||
1949 (code == 0x15d) ||
1950 (code == 0x15f) ||
1951 (code == 0x161) ||
1952 (code == 0x163) ||
1953 (code == 0x165) ||
1954 (code == 0x167) ||
1955 (code == 0x169) ||
1956 (code == 0x16b) ||
1957 (code == 0x16d) ||
1958 (code == 0x16f) ||
1959 (code == 0x171) ||
1960 (code == 0x173) ||
1961 (code == 0x175) ||
1962 (code == 0x177) ||
1963 (code == 0x17a) ||
1964 (code == 0x17c) ||
1965 ((code >= 0x17e) && (code <= 0x180)) ||
1966 (code == 0x183) ||
1967 (code == 0x185) ||
1968 (code == 0x188) ||
1969 ((code >= 0x18c) && (code <= 0x18d)) ||
1970 (code == 0x192) ||
1971 (code == 0x195) ||
1972 ((code >= 0x199) && (code <= 0x19b)) ||
1973 (code == 0x19e) ||
1974 (code == 0x1a1) ||
1975 (code == 0x1a3) ||
1976 (code == 0x1a5) ||
1977 (code == 0x1a8) ||
1978 ((code >= 0x1aa) && (code <= 0x1ab)) ||
1979 (code == 0x1ad) ||
1980 (code == 0x1b0) ||
1981 (code == 0x1b4) ||
1982 (code == 0x1b6) ||
1983 ((code >= 0x1b9) && (code <= 0x1ba)) ||
1984 ((code >= 0x1bd) && (code <= 0x1bf)) ||
1985 (code == 0x1c6) ||
1986 (code == 0x1c9) ||
1987 (code == 0x1cc) ||
1988 (code == 0x1ce) ||
1989 (code == 0x1d0) ||
1990 (code == 0x1d2) ||
1991 (code == 0x1d4) ||
1992 (code == 0x1d6) ||
1993 (code == 0x1d8) ||
1994 (code == 0x1da) ||
1995 ((code >= 0x1dc) && (code <= 0x1dd)) ||
1996 (code == 0x1df) ||
1997 (code == 0x1e1) ||
1998 (code == 0x1e3) ||
1999 (code == 0x1e5) ||
2000 (code == 0x1e7) ||
2001 (code == 0x1e9) ||
2002 (code == 0x1eb) ||
2003 (code == 0x1ed) ||
2004 ((code >= 0x1ef) && (code <= 0x1f0)) ||
2005 (code == 0x1f3) ||
2006 (code == 0x1f5) ||
2007 (code == 0x1f9) ||
2008 (code == 0x1fb) ||
2009 (code == 0x1fd) ||
2010 (code == 0x1ff) ||
2011 (code == 0x201) ||
2012 (code == 0x203) ||
2013 (code == 0x205) ||
2014 (code == 0x207) ||
2015 (code == 0x209) ||
2016 (code == 0x20b) ||
2017 (code == 0x20d) ||
2018 (code == 0x20f) ||
2019 (code == 0x211) ||
2020 (code == 0x213) ||
2021 (code == 0x215) ||
2022 (code == 0x217) ||
2023 (code == 0x219) ||
2024 (code == 0x21b) ||
2025 (code == 0x21d) ||
2026 (code == 0x21f) ||
2027 (code == 0x223) ||
2028 (code == 0x225) ||
2029 (code == 0x227) ||
2030 (code == 0x229) ||
2031 (code == 0x22b) ||
2032 (code == 0x22d) ||
2033 (code == 0x22f) ||
2034 (code == 0x231) ||
2035 (code == 0x233) ||
2036 ((code >= 0x250) && (code <= 0x2ad)) ||
2037 (code == 0x390) ||
2038 ((code >= 0x3ac) && (code <= 0x3ce)) ||
2039 ((code >= 0x3d0) && (code <= 0x3d1)) ||
2040 ((code >= 0x3d5) && (code <= 0x3d7)) ||
2041 (code == 0x3db) ||
2042 (code == 0x3dd) ||
2043 (code == 0x3df) ||
2044 (code == 0x3e1) ||
2045 (code == 0x3e3) ||
2046 (code == 0x3e5) ||
2047 (code == 0x3e7) ||
2048 (code == 0x3e9) ||
2049 (code == 0x3eb) ||
2050 (code == 0x3ed) ||
2051 ((code >= 0x3ef) && (code <= 0x3f3)) ||
2052 (code == 0x3f5) ||
2053 ((code >= 0x430) && (code <= 0x45f)) ||
2054 (code == 0x461) ||
2055 (code == 0x463) ||
2056 (code == 0x465) ||
2057 (code == 0x467) ||
2058 (code == 0x469) ||
2059 (code == 0x46b) ||
2060 (code == 0x46d) ||
2061 (code == 0x46f) ||
2062 (code == 0x471) ||
2063 (code == 0x473) ||
2064 (code == 0x475) ||
2065 (code == 0x477) ||
2066 (code == 0x479) ||
2067 (code == 0x47b) ||
2068 (code == 0x47d) ||
2069 (code == 0x47f) ||
2070 (code == 0x481) ||
2071 (code == 0x48d) ||
2072 (code == 0x48f) ||
2073 (code == 0x491) ||
2074 (code == 0x493) ||
2075 (code == 0x495) ||
2076 (code == 0x497) ||
2077 (code == 0x499) ||
2078 (code == 0x49b) ||
2079 (code == 0x49d) ||
2080 (code == 0x49f) ||
2081 (code == 0x4a1) ||
2082 (code == 0x4a3) ||
2083 (code == 0x4a5) ||
2084 (code == 0x4a7) ||
2085 (code == 0x4a9) ||
2086 (code == 0x4ab) ||
2087 (code == 0x4ad) ||
2088 (code == 0x4af) ||
2089 (code == 0x4b1) ||
2090 (code == 0x4b3) ||
2091 (code == 0x4b5) ||
2092 (code == 0x4b7) ||
2093 (code == 0x4b9) ||
2094 (code == 0x4bb) ||
2095 (code == 0x4bd) ||
2096 (code == 0x4bf) ||
2097 (code == 0x4c2) ||
2098 (code == 0x4c4) ||
2099 (code == 0x4c8) ||
2100 (code == 0x4cc) ||
2101 (code == 0x4d1) ||
2102 (code == 0x4d3) ||
2103 (code == 0x4d5) ||
2104 (code == 0x4d7) ||
2105 (code == 0x4d9) ||
2106 (code == 0x4db) ||
2107 (code == 0x4dd) ||
2108 (code == 0x4df) ||
2109 (code == 0x4e1) ||
2110 (code == 0x4e3) ||
2111 (code == 0x4e5) ||
2112 (code == 0x4e7) ||
2113 (code == 0x4e9) ||
2114 (code == 0x4eb) ||
2115 (code == 0x4ed) ||
2116 (code == 0x4ef) ||
2117 (code == 0x4f1) ||
2118 (code == 0x4f3) ||
2119 (code == 0x4f5) ||
2120 (code == 0x4f9) ||
2121 ((code >= 0x561) && (code <= 0x587)) ||
2122 (code == 0x1e01) ||
2123 (code == 0x1e03) ||
2124 (code == 0x1e05) ||
2125 (code == 0x1e07) ||
2126 (code == 0x1e09) ||
2127 (code == 0x1e0b) ||
2128 (code == 0x1e0d) ||
2129 (code == 0x1e0f) ||
2130 (code == 0x1e11) ||
2131 (code == 0x1e13) ||
2132 (code == 0x1e15) ||
2133 (code == 0x1e17) ||
2134 (code == 0x1e19) ||
2135 (code == 0x1e1b) ||
2136 (code == 0x1e1d) ||
2137 (code == 0x1e1f) ||
2138 (code == 0x1e21) ||
2139 (code == 0x1e23) ||
2140 (code == 0x1e25) ||
2141 (code == 0x1e27) ||
2142 (code == 0x1e29) ||
2143 (code == 0x1e2b) ||
2144 (code == 0x1e2d) ||
2145 (code == 0x1e2f) ||
2146 (code == 0x1e31) ||
2147 (code == 0x1e33) ||
2148 (code == 0x1e35) ||
2149 (code == 0x1e37) ||
2150 (code == 0x1e39) ||
2151 (code == 0x1e3b) ||
2152 (code == 0x1e3d) ||
2153 (code == 0x1e3f) ||
2154 (code == 0x1e41) ||
2155 (code == 0x1e43) ||
2156 (code == 0x1e45) ||
2157 (code == 0x1e47) ||
2158 (code == 0x1e49) ||
2159 (code == 0x1e4b) ||
2160 (code == 0x1e4d) ||
2161 (code == 0x1e4f) ||
2162 (code == 0x1e51) ||
2163 (code == 0x1e53) ||
2164 (code == 0x1e55) ||
2165 (code == 0x1e57) ||
2166 (code == 0x1e59) ||
2167 (code == 0x1e5b) ||
2168 (code == 0x1e5d) ||
2169 (code == 0x1e5f) ||
2170 (code == 0x1e61) ||
2171 (code == 0x1e63) ||
2172 (code == 0x1e65) ||
2173 (code == 0x1e67) ||
2174 (code == 0x1e69) ||
2175 (code == 0x1e6b) ||
2176 (code == 0x1e6d) ||
2177 (code == 0x1e6f) ||
2178 (code == 0x1e71) ||
2179 (code == 0x1e73) ||
2180 (code == 0x1e75) ||
2181 (code == 0x1e77) ||
2182 (code == 0x1e79) ||
2183 (code == 0x1e7b) ||
2184 (code == 0x1e7d) ||
2185 (code == 0x1e7f) ||
2186 (code == 0x1e81) ||
2187 (code == 0x1e83) ||
2188 (code == 0x1e85) ||
2189 (code == 0x1e87) ||
2190 (code == 0x1e89) ||
2191 (code == 0x1e8b) ||
2192 (code == 0x1e8d) ||
2193 (code == 0x1e8f) ||
2194 (code == 0x1e91) ||
2195 (code == 0x1e93) ||
2196 ((code >= 0x1e95) && (code <= 0x1e9b)) ||
2197 (code == 0x1ea1) ||
2198 (code == 0x1ea3) ||
2199 (code == 0x1ea5) ||
2200 (code == 0x1ea7) ||
2201 (code == 0x1ea9) ||
2202 (code == 0x1eab) ||
2203 (code == 0x1ead) ||
2204 (code == 0x1eaf) ||
2205 (code == 0x1eb1) ||
2206 (code == 0x1eb3) ||
2207 (code == 0x1eb5) ||
2208 (code == 0x1eb7) ||
2209 (code == 0x1eb9) ||
2210 (code == 0x1ebb) ||
2211 (code == 0x1ebd) ||
2212 (code == 0x1ebf) ||
2213 (code == 0x1ec1) ||
2214 (code == 0x1ec3) ||
2215 (code == 0x1ec5) ||
2216 (code == 0x1ec7) ||
2217 (code == 0x1ec9) ||
2218 (code == 0x1ecb) ||
2219 (code == 0x1ecd) ||
2220 (code == 0x1ecf) ||
2221 (code == 0x1ed1) ||
2222 (code == 0x1ed3) ||
2223 (code == 0x1ed5) ||
2224 (code == 0x1ed7) ||
2225 (code == 0x1ed9) ||
2226 (code == 0x1edb) ||
2227 (code == 0x1edd) ||
2228 (code == 0x1edf) ||
2229 (code == 0x1ee1) ||
2230 (code == 0x1ee3) ||
2231 (code == 0x1ee5) ||
2232 (code == 0x1ee7) ||
2233 (code == 0x1ee9) ||
2234 (code == 0x1eeb) ||
2235 (code == 0x1eed) ||
2236 (code == 0x1eef) ||
2237 (code == 0x1ef1) ||
2238 (code == 0x1ef3) ||
2239 (code == 0x1ef5) ||
2240 (code == 0x1ef7) ||
2241 (code == 0x1ef9) ||
2242 ((code >= 0x1f00) && (code <= 0x1f07)) ||
2243 ((code >= 0x1f10) && (code <= 0x1f15)) ||
2244 ((code >= 0x1f20) && (code <= 0x1f27)) ||
2245 ((code >= 0x1f30) && (code <= 0x1f37)) ||
2246 ((code >= 0x1f40) && (code <= 0x1f45)) ||
2247 ((code >= 0x1f50) && (code <= 0x1f57)) ||
2248 ((code >= 0x1f60) && (code <= 0x1f67)) ||
2249 ((code >= 0x1f70) && (code <= 0x1f7d)) ||
2250 ((code >= 0x1f80) && (code <= 0x1f87)) ||
2251 ((code >= 0x1f90) && (code <= 0x1f97)) ||
2252 ((code >= 0x1fa0) && (code <= 0x1fa7)) ||
2253 ((code >= 0x1fb0) && (code <= 0x1fb4)) ||
2254 ((code >= 0x1fb6) && (code <= 0x1fb7)) ||
2255 (code == 0x1fbe) ||
2256 ((code >= 0x1fc2) && (code <= 0x1fc4)) ||
2257 ((code >= 0x1fc6) && (code <= 0x1fc7)) ||
2258 ((code >= 0x1fd0) && (code <= 0x1fd3)) ||
2259 ((code >= 0x1fd6) && (code <= 0x1fd7)) ||
2260 ((code >= 0x1fe0) && (code <= 0x1fe7)) ||
2261 ((code >= 0x1ff2) && (code <= 0x1ff4)) ||
2262 ((code >= 0x1ff6) && (code <= 0x1ff7)) ||
2263 (code == 0x207f) ||
2264 (code == 0x210a) ||
2265 ((code >= 0x210e) && (code <= 0x210f)) ||
2266 (code == 0x2113) ||
2267 (code == 0x212f) ||
2268 (code == 0x2134) ||
2269 (code == 0x2139) ||
2270 ((code >= 0xfb00) && (code <= 0xfb06)) ||
2271 ((code >= 0xfb13) && (code <= 0xfb17)) ||
2272 ((code >= 0xff41) && (code <= 0xff5a)) ||
2273 ((code >= 0x10428) && (code <= 0x1044d)) ||
2274 ((code >= 0x1d41a) && (code <= 0x1d433)) ||
2275 ((code >= 0x1d44e) && (code <= 0x1d454)) ||
2276 ((code >= 0x1d456) && (code <= 0x1d467)) ||
2277 ((code >= 0x1d482) && (code <= 0x1d49b)) ||
2278 ((code >= 0x1d4b6) && (code <= 0x1d4b9)) ||
2279 (code == 0x1d4bb) ||
2280 ((code >= 0x1d4bd) && (code <= 0x1d4c0)) ||
2281 ((code >= 0x1d4c2) && (code <= 0x1d4c3)) ||
2282 ((code >= 0x1d4c5) && (code <= 0x1d4cf)) ||
2283 ((code >= 0x1d4ea) && (code <= 0x1d503)) ||
2284 ((code >= 0x1d51e) && (code <= 0x1d537)) ||
2285 ((code >= 0x1d552) && (code <= 0x1d56b)) ||
2286 ((code >= 0x1d586) && (code <= 0x1d59f)) ||
2287 ((code >= 0x1d5ba) && (code <= 0x1d5d3)) ||
2288 ((code >= 0x1d5ee) && (code <= 0x1d607)) ||
2289 ((code >= 0x1d622) && (code <= 0x1d63b)) ||
2290 ((code >= 0x1d656) && (code <= 0x1d66f)) ||
2291 ((code >= 0x1d68a) && (code <= 0x1d6a3)) ||
2292 ((code >= 0x1d6c2) && (code <= 0x1d6da)) ||
2293 ((code >= 0x1d6dc) && (code <= 0x1d6e1)) ||
2294 ((code >= 0x1d6fc) && (code <= 0x1d714)) ||
2295 ((code >= 0x1d716) && (code <= 0x1d71b)) ||
2296 ((code >= 0x1d736) && (code <= 0x1d74e)) ||
2297 ((code >= 0x1d750) && (code <= 0x1d755)) ||
2298 ((code >= 0x1d770) && (code <= 0x1d788)) ||
2299 ((code >= 0x1d78a) && (code <= 0x1d78f)) ||
2300 ((code >= 0x1d7aa) && (code <= 0x1d7c2)) ||
2301 ((code >= 0x1d7c4) && (code <= 0x1d7c9)));
2302}
2303
2304/**
2305 * xmlUCSIsCatLm:
2306 * @code: UCS code point
2307 *
2308 * Check whether the character is part of Lm UCS Category
2309 *
2310 * Returns 1 if true 0 otherwise
2311 */
2312int
2313xmlUCSIsCatLm(int code) {
2314 return(((code >= 0x2b0) && (code <= 0x2b8)) ||
2315 ((code >= 0x2bb) && (code <= 0x2c1)) ||
2316 ((code >= 0x2d0) && (code <= 0x2d1)) ||
2317 ((code >= 0x2e0) && (code <= 0x2e4)) ||
2318 (code == 0x2ee) ||
2319 (code == 0x37a) ||
2320 (code == 0x559) ||
2321 (code == 0x640) ||
2322 ((code >= 0x6e5) && (code <= 0x6e6)) ||
2323 (code == 0xe46) ||
2324 (code == 0xec6) ||
2325 (code == 0x1843) ||
2326 (code == 0x3005) ||
2327 ((code >= 0x3031) && (code <= 0x3035)) ||
2328 ((code >= 0x309d) && (code <= 0x309e)) ||
2329 ((code >= 0x30fc) && (code <= 0x30fe)) ||
2330 (code == 0xff70) ||
2331 ((code >= 0xff9e) && (code <= 0xff9f)));
2332}
2333
2334/**
2335 * xmlUCSIsCatLo:
2336 * @code: UCS code point
2337 *
2338 * Check whether the character is part of Lo UCS Category
2339 *
2340 * Returns 1 if true 0 otherwise
2341 */
2342int
2343xmlUCSIsCatLo(int code) {
2344 return((code == 0x1bb) ||
2345 ((code >= 0x1c0) && (code <= 0x1c3)) ||
2346 ((code >= 0x5d0) && (code <= 0x5ea)) ||
2347 ((code >= 0x5f0) && (code <= 0x5f2)) ||
2348 ((code >= 0x621) && (code <= 0x63a)) ||
2349 ((code >= 0x641) && (code <= 0x64a)) ||
2350 ((code >= 0x671) && (code <= 0x6d3)) ||
2351 (code == 0x6d5) ||
2352 ((code >= 0x6fa) && (code <= 0x6fc)) ||
2353 (code == 0x710) ||
2354 ((code >= 0x712) && (code <= 0x72c)) ||
2355 ((code >= 0x780) && (code <= 0x7a5)) ||
2356 ((code >= 0x905) && (code <= 0x939)) ||
2357 (code == 0x93d) ||
2358 (code == 0x950) ||
2359 ((code >= 0x958) && (code <= 0x961)) ||
2360 ((code >= 0x985) && (code <= 0x98c)) ||
2361 ((code >= 0x98f) && (code <= 0x990)) ||
2362 ((code >= 0x993) && (code <= 0x9a8)) ||
2363 ((code >= 0x9aa) && (code <= 0x9b0)) ||
2364 (code == 0x9b2) ||
2365 ((code >= 0x9b6) && (code <= 0x9b9)) ||
2366 ((code >= 0x9dc) && (code <= 0x9dd)) ||
2367 ((code >= 0x9df) && (code <= 0x9e1)) ||
2368 ((code >= 0x9f0) && (code <= 0x9f1)) ||
2369 ((code >= 0xa05) && (code <= 0xa0a)) ||
2370 ((code >= 0xa0f) && (code <= 0xa10)) ||
2371 ((code >= 0xa13) && (code <= 0xa28)) ||
2372 ((code >= 0xa2a) && (code <= 0xa30)) ||
2373 ((code >= 0xa32) && (code <= 0xa33)) ||
2374 ((code >= 0xa35) && (code <= 0xa36)) ||
2375 ((code >= 0xa38) && (code <= 0xa39)) ||
2376 ((code >= 0xa59) && (code <= 0xa5c)) ||
2377 (code == 0xa5e) ||
2378 ((code >= 0xa72) && (code <= 0xa74)) ||
2379 ((code >= 0xa85) && (code <= 0xa8b)) ||
2380 (code == 0xa8d) ||
2381 ((code >= 0xa8f) && (code <= 0xa91)) ||
2382 ((code >= 0xa93) && (code <= 0xaa8)) ||
2383 ((code >= 0xaaa) && (code <= 0xab0)) ||
2384 ((code >= 0xab2) && (code <= 0xab3)) ||
2385 ((code >= 0xab5) && (code <= 0xab9)) ||
2386 (code == 0xabd) ||
2387 (code == 0xad0) ||
2388 (code == 0xae0) ||
2389 ((code >= 0xb05) && (code <= 0xb0c)) ||
2390 ((code >= 0xb0f) && (code <= 0xb10)) ||
2391 ((code >= 0xb13) && (code <= 0xb28)) ||
2392 ((code >= 0xb2a) && (code <= 0xb30)) ||
2393 ((code >= 0xb32) && (code <= 0xb33)) ||
2394 ((code >= 0xb36) && (code <= 0xb39)) ||
2395 (code == 0xb3d) ||
2396 ((code >= 0xb5c) && (code <= 0xb5d)) ||
2397 ((code >= 0xb5f) && (code <= 0xb61)) ||
2398 ((code >= 0xb85) && (code <= 0xb8a)) ||
2399 ((code >= 0xb8e) && (code <= 0xb90)) ||
2400 ((code >= 0xb92) && (code <= 0xb95)) ||
2401 ((code >= 0xb99) && (code <= 0xb9a)) ||
2402 (code == 0xb9c) ||
2403 ((code >= 0xb9e) && (code <= 0xb9f)) ||
2404 ((code >= 0xba3) && (code <= 0xba4)) ||
2405 ((code >= 0xba8) && (code <= 0xbaa)) ||
2406 ((code >= 0xbae) && (code <= 0xbb5)) ||
2407 ((code >= 0xbb7) && (code <= 0xbb9)) ||
2408 ((code >= 0xc05) && (code <= 0xc0c)) ||
2409 ((code >= 0xc0e) && (code <= 0xc10)) ||
2410 ((code >= 0xc12) && (code <= 0xc28)) ||
2411 ((code >= 0xc2a) && (code <= 0xc33)) ||
2412 ((code >= 0xc35) && (code <= 0xc39)) ||
2413 ((code >= 0xc60) && (code <= 0xc61)) ||
2414 ((code >= 0xc85) && (code <= 0xc8c)) ||
2415 ((code >= 0xc8e) && (code <= 0xc90)) ||
2416 ((code >= 0xc92) && (code <= 0xca8)) ||
2417 ((code >= 0xcaa) && (code <= 0xcb3)) ||
2418 ((code >= 0xcb5) && (code <= 0xcb9)) ||
2419 (code == 0xcde) ||
2420 ((code >= 0xce0) && (code <= 0xce1)) ||
2421 ((code >= 0xd05) && (code <= 0xd0c)) ||
2422 ((code >= 0xd0e) && (code <= 0xd10)) ||
2423 ((code >= 0xd12) && (code <= 0xd28)) ||
2424 ((code >= 0xd2a) && (code <= 0xd39)) ||
2425 ((code >= 0xd60) && (code <= 0xd61)) ||
2426 ((code >= 0xd85) && (code <= 0xd96)) ||
2427 ((code >= 0xd9a) && (code <= 0xdb1)) ||
2428 ((code >= 0xdb3) && (code <= 0xdbb)) ||
2429 (code == 0xdbd) ||
2430 ((code >= 0xdc0) && (code <= 0xdc6)) ||
2431 ((code >= 0xe01) && (code <= 0xe30)) ||
2432 ((code >= 0xe32) && (code <= 0xe33)) ||
2433 ((code >= 0xe40) && (code <= 0xe45)) ||
2434 ((code >= 0xe81) && (code <= 0xe82)) ||
2435 (code == 0xe84) ||
2436 ((code >= 0xe87) && (code <= 0xe88)) ||
2437 (code == 0xe8a) ||
2438 (code == 0xe8d) ||
2439 ((code >= 0xe94) && (code <= 0xe97)) ||
2440 ((code >= 0xe99) && (code <= 0xe9f)) ||
2441 ((code >= 0xea1) && (code <= 0xea3)) ||
2442 (code == 0xea5) ||
2443 (code == 0xea7) ||
2444 ((code >= 0xeaa) && (code <= 0xeab)) ||
2445 ((code >= 0xead) && (code <= 0xeb0)) ||
2446 ((code >= 0xeb2) && (code <= 0xeb3)) ||
2447 (code == 0xebd) ||
2448 ((code >= 0xec0) && (code <= 0xec4)) ||
2449 ((code >= 0xedc) && (code <= 0xedd)) ||
2450 (code == 0xf00) ||
2451 ((code >= 0xf40) && (code <= 0xf47)) ||
2452 ((code >= 0xf49) && (code <= 0xf6a)) ||
2453 ((code >= 0xf88) && (code <= 0xf8b)) ||
2454 ((code >= 0x1000) && (code <= 0x1021)) ||
2455 ((code >= 0x1023) && (code <= 0x1027)) ||
2456 ((code >= 0x1029) && (code <= 0x102a)) ||
2457 ((code >= 0x1050) && (code <= 0x1055)) ||
2458 ((code >= 0x10d0) && (code <= 0x10f6)) ||
2459 ((code >= 0x1100) && (code <= 0x1159)) ||
2460 ((code >= 0x115f) && (code <= 0x11a2)) ||
2461 ((code >= 0x11a8) && (code <= 0x11f9)) ||
2462 ((code >= 0x1200) && (code <= 0x1206)) ||
2463 ((code >= 0x1208) && (code <= 0x1246)) ||
2464 (code == 0x1248) ||
2465 ((code >= 0x124a) && (code <= 0x124d)) ||
2466 ((code >= 0x1250) && (code <= 0x1256)) ||
2467 (code == 0x1258) ||
2468 ((code >= 0x125a) && (code <= 0x125d)) ||
2469 ((code >= 0x1260) && (code <= 0x1286)) ||
2470 (code == 0x1288) ||
2471 ((code >= 0x128a) && (code <= 0x128d)) ||
2472 ((code >= 0x1290) && (code <= 0x12ae)) ||
2473 (code == 0x12b0) ||
2474 ((code >= 0x12b2) && (code <= 0x12b5)) ||
2475 ((code >= 0x12b8) && (code <= 0x12be)) ||
2476 (code == 0x12c0) ||
2477 ((code >= 0x12c2) && (code <= 0x12c5)) ||
2478 ((code >= 0x12c8) && (code <= 0x12ce)) ||
2479 ((code >= 0x12d0) && (code <= 0x12d6)) ||
2480 ((code >= 0x12d8) && (code <= 0x12ee)) ||
2481 ((code >= 0x12f0) && (code <= 0x130e)) ||
2482 (code == 0x1310) ||
2483 ((code >= 0x1312) && (code <= 0x1315)) ||
2484 ((code >= 0x1318) && (code <= 0x131e)) ||
2485 ((code >= 0x1320) && (code <= 0x1346)) ||
2486 ((code >= 0x1348) && (code <= 0x135a)) ||
2487 ((code >= 0x13a0) && (code <= 0x13f4)) ||
2488 ((code >= 0x1401) && (code <= 0x166c)) ||
2489 ((code >= 0x166f) && (code <= 0x1676)) ||
2490 ((code >= 0x1681) && (code <= 0x169a)) ||
2491 ((code >= 0x16a0) && (code <= 0x16ea)) ||
2492 ((code >= 0x1780) && (code <= 0x17b3)) ||
2493 ((code >= 0x1820) && (code <= 0x1842)) ||
2494 ((code >= 0x1844) && (code <= 0x1877)) ||
2495 ((code >= 0x1880) && (code <= 0x18a8)) ||
2496 ((code >= 0x2135) && (code <= 0x2138)) ||
2497 (code == 0x3006) ||
2498 ((code >= 0x3041) && (code <= 0x3094)) ||
2499 ((code >= 0x30a1) && (code <= 0x30fa)) ||
2500 ((code >= 0x3105) && (code <= 0x312c)) ||
2501 ((code >= 0x3131) && (code <= 0x318e)) ||
2502 ((code >= 0x31a0) && (code <= 0x31b7)) ||
2503 (code == 0x3400) ||
2504 (code == 0x4db5) ||
2505 (code == 0x4e00) ||
2506 (code == 0x9fa5) ||
2507 ((code >= 0xa000) && (code <= 0xa48c)) ||
2508 (code == 0xac00) ||
2509 (code == 0xd7a3) ||
2510 ((code >= 0xf900) && (code <= 0xfa2d)) ||
2511 (code == 0xfb1d) ||
2512 ((code >= 0xfb1f) && (code <= 0xfb28)) ||
2513 ((code >= 0xfb2a) && (code <= 0xfb36)) ||
2514 ((code >= 0xfb38) && (code <= 0xfb3c)) ||
2515 (code == 0xfb3e) ||
2516 ((code >= 0xfb40) && (code <= 0xfb41)) ||
2517 ((code >= 0xfb43) && (code <= 0xfb44)) ||
2518 ((code >= 0xfb46) && (code <= 0xfbb1)) ||
2519 ((code >= 0xfbd3) && (code <= 0xfd3d)) ||
2520 ((code >= 0xfd50) && (code <= 0xfd8f)) ||
2521 ((code >= 0xfd92) && (code <= 0xfdc7)) ||
2522 ((code >= 0xfdf0) && (code <= 0xfdfb)) ||
2523 ((code >= 0xfe70) && (code <= 0xfe72)) ||
2524 (code == 0xfe74) ||
2525 ((code >= 0xfe76) && (code <= 0xfefc)) ||
2526 ((code >= 0xff66) && (code <= 0xff6f)) ||
2527 ((code >= 0xff71) && (code <= 0xff9d)) ||
2528 ((code >= 0xffa0) && (code <= 0xffbe)) ||
2529 ((code >= 0xffc2) && (code <= 0xffc7)) ||
2530 ((code >= 0xffca) && (code <= 0xffcf)) ||
2531 ((code >= 0xffd2) && (code <= 0xffd7)) ||
2532 ((code >= 0xffda) && (code <= 0xffdc)) ||
2533 ((code >= 0x10300) && (code <= 0x1031e)) ||
2534 ((code >= 0x10330) && (code <= 0x10349)) ||
2535 (code == 0x20000) ||
2536 (code == 0x2a6d6) ||
2537 ((code >= 0x2f800) && (code <= 0x2fa1d)));
2538}
2539
2540/**
2541 * xmlUCSIsCatLt:
2542 * @code: UCS code point
2543 *
2544 * Check whether the character is part of Lt UCS Category
2545 *
2546 * Returns 1 if true 0 otherwise
2547 */
2548int
2549xmlUCSIsCatLt(int code) {
2550 return((code == 0x1c5) ||
2551 (code == 0x1c8) ||
2552 (code == 0x1cb) ||
2553 (code == 0x1f2) ||
2554 ((code >= 0x1f88) && (code <= 0x1f8f)) ||
2555 ((code >= 0x1f98) && (code <= 0x1f9f)) ||
2556 ((code >= 0x1fa8) && (code <= 0x1faf)) ||
2557 (code == 0x1fbc) ||
2558 (code == 0x1fcc) ||
2559 (code == 0x1ffc));
2560}
2561
2562/**
2563 * xmlUCSIsCatLu:
2564 * @code: UCS code point
2565 *
2566 * Check whether the character is part of Lu UCS Category
2567 *
2568 * Returns 1 if true 0 otherwise
2569 */
2570int
2571xmlUCSIsCatLu(int code) {
2572 return(((code >= 0x41) && (code <= 0x5a)) ||
2573 ((code >= 0xc0) && (code <= 0xd6)) ||
2574 ((code >= 0xd8) && (code <= 0xde)) ||
2575 (code == 0x100) ||
2576 (code == 0x102) ||
2577 (code == 0x104) ||
2578 (code == 0x106) ||
2579 (code == 0x108) ||
2580 (code == 0x10a) ||
2581 (code == 0x10c) ||
2582 (code == 0x10e) ||
2583 (code == 0x110) ||
2584 (code == 0x112) ||
2585 (code == 0x114) ||
2586 (code == 0x116) ||
2587 (code == 0x118) ||
2588 (code == 0x11a) ||
2589 (code == 0x11c) ||
2590 (code == 0x11e) ||
2591 (code == 0x120) ||
2592 (code == 0x122) ||
2593 (code == 0x124) ||
2594 (code == 0x126) ||
2595 (code == 0x128) ||
2596 (code == 0x12a) ||
2597 (code == 0x12c) ||
2598 (code == 0x12e) ||
2599 (code == 0x130) ||
2600 (code == 0x132) ||
2601 (code == 0x134) ||
2602 (code == 0x136) ||
2603 (code == 0x139) ||
2604 (code == 0x13b) ||
2605 (code == 0x13d) ||
2606 (code == 0x13f) ||
2607 (code == 0x141) ||
2608 (code == 0x143) ||
2609 (code == 0x145) ||
2610 (code == 0x147) ||
2611 (code == 0x14a) ||
2612 (code == 0x14c) ||
2613 (code == 0x14e) ||
2614 (code == 0x150) ||
2615 (code == 0x152) ||
2616 (code == 0x154) ||
2617 (code == 0x156) ||
2618 (code == 0x158) ||
2619 (code == 0x15a) ||
2620 (code == 0x15c) ||
2621 (code == 0x15e) ||
2622 (code == 0x160) ||
2623 (code == 0x162) ||
2624 (code == 0x164) ||
2625 (code == 0x166) ||
2626 (code == 0x168) ||
2627 (code == 0x16a) ||
2628 (code == 0x16c) ||
2629 (code == 0x16e) ||
2630 (code == 0x170) ||
2631 (code == 0x172) ||
2632 (code == 0x174) ||
2633 (code == 0x176) ||
2634 ((code >= 0x178) && (code <= 0x179)) ||
2635 (code == 0x17b) ||
2636 (code == 0x17d) ||
2637 ((code >= 0x181) && (code <= 0x182)) ||
2638 (code == 0x184) ||
2639 ((code >= 0x186) && (code <= 0x187)) ||
2640 ((code >= 0x189) && (code <= 0x18b)) ||
2641 ((code >= 0x18e) && (code <= 0x191)) ||
2642 ((code >= 0x193) && (code <= 0x194)) ||
2643 ((code >= 0x196) && (code <= 0x198)) ||
2644 ((code >= 0x19c) && (code <= 0x19d)) ||
2645 ((code >= 0x19f) && (code <= 0x1a0)) ||
2646 (code == 0x1a2) ||
2647 (code == 0x1a4) ||
2648 ((code >= 0x1a6) && (code <= 0x1a7)) ||
2649 (code == 0x1a9) ||
2650 (code == 0x1ac) ||
2651 ((code >= 0x1ae) && (code <= 0x1af)) ||
2652 ((code >= 0x1b1) && (code <= 0x1b3)) ||
2653 (code == 0x1b5) ||
2654 ((code >= 0x1b7) && (code <= 0x1b8)) ||
2655 (code == 0x1bc) ||
2656 (code == 0x1c4) ||
2657 (code == 0x1c7) ||
2658 (code == 0x1ca) ||
2659 (code == 0x1cd) ||
2660 (code == 0x1cf) ||
2661 (code == 0x1d1) ||
2662 (code == 0x1d3) ||
2663 (code == 0x1d5) ||
2664 (code == 0x1d7) ||
2665 (code == 0x1d9) ||
2666 (code == 0x1db) ||
2667 (code == 0x1de) ||
2668 (code == 0x1e0) ||
2669 (code == 0x1e2) ||
2670 (code == 0x1e4) ||
2671 (code == 0x1e6) ||
2672 (code == 0x1e8) ||
2673 (code == 0x1ea) ||
2674 (code == 0x1ec) ||
2675 (code == 0x1ee) ||
2676 (code == 0x1f1) ||
2677 (code == 0x1f4) ||
2678 ((code >= 0x1f6) && (code <= 0x1f8)) ||
2679 (code == 0x1fa) ||
2680 (code == 0x1fc) ||
2681 (code == 0x1fe) ||
2682 (code == 0x200) ||
2683 (code == 0x202) ||
2684 (code == 0x204) ||
2685 (code == 0x206) ||
2686 (code == 0x208) ||
2687 (code == 0x20a) ||
2688 (code == 0x20c) ||
2689 (code == 0x20e) ||
2690 (code == 0x210) ||
2691 (code == 0x212) ||
2692 (code == 0x214) ||
2693 (code == 0x216) ||
2694 (code == 0x218) ||
2695 (code == 0x21a) ||
2696 (code == 0x21c) ||
2697 (code == 0x21e) ||
2698 (code == 0x222) ||
2699 (code == 0x224) ||
2700 (code == 0x226) ||
2701 (code == 0x228) ||
2702 (code == 0x22a) ||
2703 (code == 0x22c) ||
2704 (code == 0x22e) ||
2705 (code == 0x230) ||
2706 (code == 0x232) ||
2707 (code == 0x386) ||
2708 ((code >= 0x388) && (code <= 0x38a)) ||
2709 (code == 0x38c) ||
2710 ((code >= 0x38e) && (code <= 0x38f)) ||
2711 ((code >= 0x391) && (code <= 0x3a1)) ||
2712 ((code >= 0x3a3) && (code <= 0x3ab)) ||
2713 ((code >= 0x3d2) && (code <= 0x3d4)) ||
2714 (code == 0x3da) ||
2715 (code == 0x3dc) ||
2716 (code == 0x3de) ||
2717 (code == 0x3e0) ||
2718 (code == 0x3e2) ||
2719 (code == 0x3e4) ||
2720 (code == 0x3e6) ||
2721 (code == 0x3e8) ||
2722 (code == 0x3ea) ||
2723 (code == 0x3ec) ||
2724 (code == 0x3ee) ||
2725 (code == 0x3f4) ||
2726 ((code >= 0x400) && (code <= 0x42f)) ||
2727 (code == 0x460) ||
2728 (code == 0x462) ||
2729 (code == 0x464) ||
2730 (code == 0x466) ||
2731 (code == 0x468) ||
2732 (code == 0x46a) ||
2733 (code == 0x46c) ||
2734 (code == 0x46e) ||
2735 (code == 0x470) ||
2736 (code == 0x472) ||
2737 (code == 0x474) ||
2738 (code == 0x476) ||
2739 (code == 0x478) ||
2740 (code == 0x47a) ||
2741 (code == 0x47c) ||
2742 (code == 0x47e) ||
2743 (code == 0x480) ||
2744 (code == 0x48c) ||
2745 (code == 0x48e) ||
2746 (code == 0x490) ||
2747 (code == 0x492) ||
2748 (code == 0x494) ||
2749 (code == 0x496) ||
2750 (code == 0x498) ||
2751 (code == 0x49a) ||
2752 (code == 0x49c) ||
2753 (code == 0x49e) ||
2754 (code == 0x4a0) ||
2755 (code == 0x4a2) ||
2756 (code == 0x4a4) ||
2757 (code == 0x4a6) ||
2758 (code == 0x4a8) ||
2759 (code == 0x4aa) ||
2760 (code == 0x4ac) ||
2761 (code == 0x4ae) ||
2762 (code == 0x4b0) ||
2763 (code == 0x4b2) ||
2764 (code == 0x4b4) ||
2765 (code == 0x4b6) ||
2766 (code == 0x4b8) ||
2767 (code == 0x4ba) ||
2768 (code == 0x4bc) ||
2769 (code == 0x4be) ||
2770 ((code >= 0x4c0) && (code <= 0x4c1)) ||
2771 (code == 0x4c3) ||
2772 (code == 0x4c7) ||
2773 (code == 0x4cb) ||
2774 (code == 0x4d0) ||
2775 (code == 0x4d2) ||
2776 (code == 0x4d4) ||
2777 (code == 0x4d6) ||
2778 (code == 0x4d8) ||
2779 (code == 0x4da) ||
2780 (code == 0x4dc) ||
2781 (code == 0x4de) ||
2782 (code == 0x4e0) ||
2783 (code == 0x4e2) ||
2784 (code == 0x4e4) ||
2785 (code == 0x4e6) ||
2786 (code == 0x4e8) ||
2787 (code == 0x4ea) ||
2788 (code == 0x4ec) ||
2789 (code == 0x4ee) ||
2790 (code == 0x4f0) ||
2791 (code == 0x4f2) ||
2792 (code == 0x4f4) ||
2793 (code == 0x4f8) ||
2794 ((code >= 0x531) && (code <= 0x556)) ||
2795 ((code >= 0x10a0) && (code <= 0x10c5)) ||
2796 (code == 0x1e00) ||
2797 (code == 0x1e02) ||
2798 (code == 0x1e04) ||
2799 (code == 0x1e06) ||
2800 (code == 0x1e08) ||
2801 (code == 0x1e0a) ||
2802 (code == 0x1e0c) ||
2803 (code == 0x1e0e) ||
2804 (code == 0x1e10) ||
2805 (code == 0x1e12) ||
2806 (code == 0x1e14) ||
2807 (code == 0x1e16) ||
2808 (code == 0x1e18) ||
2809 (code == 0x1e1a) ||
2810 (code == 0x1e1c) ||
2811 (code == 0x1e1e) ||
2812 (code == 0x1e20) ||
2813 (code == 0x1e22) ||
2814 (code == 0x1e24) ||
2815 (code == 0x1e26) ||
2816 (code == 0x1e28) ||
2817 (code == 0x1e2a) ||
2818 (code == 0x1e2c) ||
2819 (code == 0x1e2e) ||
2820 (code == 0x1e30) ||
2821 (code == 0x1e32) ||
2822 (code == 0x1e34) ||
2823 (code == 0x1e36) ||
2824 (code == 0x1e38) ||
2825 (code == 0x1e3a) ||
2826 (code == 0x1e3c) ||
2827 (code == 0x1e3e) ||
2828 (code == 0x1e40) ||
2829 (code == 0x1e42) ||
2830 (code == 0x1e44) ||
2831 (code == 0x1e46) ||
2832 (code == 0x1e48) ||
2833 (code == 0x1e4a) ||
2834 (code == 0x1e4c) ||
2835 (code == 0x1e4e) ||
2836 (code == 0x1e50) ||
2837 (code == 0x1e52) ||
2838 (code == 0x1e54) ||
2839 (code == 0x1e56) ||
2840 (code == 0x1e58) ||
2841 (code == 0x1e5a) ||
2842 (code == 0x1e5c) ||
2843 (code == 0x1e5e) ||
2844 (code == 0x1e60) ||
2845 (code == 0x1e62) ||
2846 (code == 0x1e64) ||
2847 (code == 0x1e66) ||
2848 (code == 0x1e68) ||
2849 (code == 0x1e6a) ||
2850 (code == 0x1e6c) ||
2851 (code == 0x1e6e) ||
2852 (code == 0x1e70) ||
2853 (code == 0x1e72) ||
2854 (code == 0x1e74) ||
2855 (code == 0x1e76) ||
2856 (code == 0x1e78) ||
2857 (code == 0x1e7a) ||
2858 (code == 0x1e7c) ||
2859 (code == 0x1e7e) ||
2860 (code == 0x1e80) ||
2861 (code == 0x1e82) ||
2862 (code == 0x1e84) ||
2863 (code == 0x1e86) ||
2864 (code == 0x1e88) ||
2865 (code == 0x1e8a) ||
2866 (code == 0x1e8c) ||
2867 (code == 0x1e8e) ||
2868 (code == 0x1e90) ||
2869 (code == 0x1e92) ||
2870 (code == 0x1e94) ||
2871 (code == 0x1ea0) ||
2872 (code == 0x1ea2) ||
2873 (code == 0x1ea4) ||
2874 (code == 0x1ea6) ||
2875 (code == 0x1ea8) ||
2876 (code == 0x1eaa) ||
2877 (code == 0x1eac) ||
2878 (code == 0x1eae) ||
2879 (code == 0x1eb0) ||
2880 (code == 0x1eb2) ||
2881 (code == 0x1eb4) ||
2882 (code == 0x1eb6) ||
2883 (code == 0x1eb8) ||
2884 (code == 0x1eba) ||
2885 (code == 0x1ebc) ||
2886 (code == 0x1ebe) ||
2887 (code == 0x1ec0) ||
2888 (code == 0x1ec2) ||
2889 (code == 0x1ec4) ||
2890 (code == 0x1ec6) ||
2891 (code == 0x1ec8) ||
2892 (code == 0x1eca) ||
2893 (code == 0x1ecc) ||
2894 (code == 0x1ece) ||
2895 (code == 0x1ed0) ||
2896 (code == 0x1ed2) ||
2897 (code == 0x1ed4) ||
2898 (code == 0x1ed6) ||
2899 (code == 0x1ed8) ||
2900 (code == 0x1eda) ||
2901 (code == 0x1edc) ||
2902 (code == 0x1ede) ||
2903 (code == 0x1ee0) ||
2904 (code == 0x1ee2) ||
2905 (code == 0x1ee4) ||
2906 (code == 0x1ee6) ||
2907 (code == 0x1ee8) ||
2908 (code == 0x1eea) ||
2909 (code == 0x1eec) ||
2910 (code == 0x1eee) ||
2911 (code == 0x1ef0) ||
2912 (code == 0x1ef2) ||
2913 (code == 0x1ef4) ||
2914 (code == 0x1ef6) ||
2915 (code == 0x1ef8) ||
2916 ((code >= 0x1f08) && (code <= 0x1f0f)) ||
2917 ((code >= 0x1f18) && (code <= 0x1f1d)) ||
2918 ((code >= 0x1f28) && (code <= 0x1f2f)) ||
2919 ((code >= 0x1f38) && (code <= 0x1f3f)) ||
2920 ((code >= 0x1f48) && (code <= 0x1f4d)) ||
2921 (code == 0x1f59) ||
2922 (code == 0x1f5b) ||
2923 (code == 0x1f5d) ||
2924 (code == 0x1f5f) ||
2925 ((code >= 0x1f68) && (code <= 0x1f6f)) ||
2926 ((code >= 0x1fb8) && (code <= 0x1fbb)) ||
2927 ((code >= 0x1fc8) && (code <= 0x1fcb)) ||
2928 ((code >= 0x1fd8) && (code <= 0x1fdb)) ||
2929 ((code >= 0x1fe8) && (code <= 0x1fec)) ||
2930 ((code >= 0x1ff8) && (code <= 0x1ffb)) ||
2931 (code == 0x2102) ||
2932 (code == 0x2107) ||
2933 ((code >= 0x210b) && (code <= 0x210d)) ||
2934 ((code >= 0x2110) && (code <= 0x2112)) ||
2935 (code == 0x2115) ||
2936 ((code >= 0x2119) && (code <= 0x211d)) ||
2937 (code == 0x2124) ||
2938 (code == 0x2126) ||
2939 (code == 0x2128) ||
2940 ((code >= 0x212a) && (code <= 0x212d)) ||
2941 ((code >= 0x2130) && (code <= 0x2131)) ||
2942 (code == 0x2133) ||
2943 ((code >= 0xff21) && (code <= 0xff3a)) ||
2944 ((code >= 0x10400) && (code <= 0x10425)) ||
2945 ((code >= 0x1d400) && (code <= 0x1d419)) ||
2946 ((code >= 0x1d434) && (code <= 0x1d44d)) ||
2947 ((code >= 0x1d468) && (code <= 0x1d481)) ||
2948 (code == 0x1d49c) ||
2949 ((code >= 0x1d49e) && (code <= 0x1d49f)) ||
2950 (code == 0x1d4a2) ||
2951 ((code >= 0x1d4a5) && (code <= 0x1d4a6)) ||
2952 ((code >= 0x1d4a9) && (code <= 0x1d4ac)) ||
2953 ((code >= 0x1d4ae) && (code <= 0x1d4b5)) ||
2954 ((code >= 0x1d4d0) && (code <= 0x1d4e9)) ||
2955 ((code >= 0x1d504) && (code <= 0x1d505)) ||
2956 ((code >= 0x1d507) && (code <= 0x1d50a)) ||
2957 ((code >= 0x1d50d) && (code <= 0x1d514)) ||
2958 ((code >= 0x1d516) && (code <= 0x1d51c)) ||
2959 ((code >= 0x1d538) && (code <= 0x1d539)) ||
2960 ((code >= 0x1d53b) && (code <= 0x1d53e)) ||
2961 ((code >= 0x1d540) && (code <= 0x1d544)) ||
2962 (code == 0x1d546) ||
2963 ((code >= 0x1d54a) && (code <= 0x1d550)) ||
2964 ((code >= 0x1d56c) && (code <= 0x1d585)) ||
2965 ((code >= 0x1d5a0) && (code <= 0x1d5b9)) ||
2966 ((code >= 0x1d5d4) && (code <= 0x1d5ed)) ||
2967 ((code >= 0x1d608) && (code <= 0x1d621)) ||
2968 ((code >= 0x1d63c) && (code <= 0x1d655)) ||
2969 ((code >= 0x1d670) && (code <= 0x1d689)) ||
2970 ((code >= 0x1d6a8) && (code <= 0x1d6c0)) ||
2971 ((code >= 0x1d6e2) && (code <= 0x1d6fa)) ||
2972 ((code >= 0x1d71c) && (code <= 0x1d734)) ||
2973 ((code >= 0x1d756) && (code <= 0x1d76e)) ||
2974 ((code >= 0x1d790) && (code <= 0x1d7a8)));
2975}
2976
2977/**
2978 * xmlUCSIsCatM:
2979 * @code: UCS code point
2980 *
2981 * Check whether the character is part of M UCS Category
2982 *
2983 * Returns 1 if true 0 otherwise
2984 */
2985int
2986xmlUCSIsCatM(int code) {
2987 return(((code >= 0x300) && (code <= 0x34e)) ||
2988 ((code >= 0x360) && (code <= 0x362)) ||
2989 ((code >= 0x483) && (code <= 0x486)) ||
2990 ((code >= 0x488) && (code <= 0x489)) ||
2991 ((code >= 0x591) && (code <= 0x5a1)) ||
2992 ((code >= 0x5a3) && (code <= 0x5b9)) ||
2993 ((code >= 0x5bb) && (code <= 0x5bd)) ||
2994 (code == 0x5bf) ||
2995 ((code >= 0x5c1) && (code <= 0x5c2)) ||
2996 (code == 0x5c4) ||
2997 ((code >= 0x64b) && (code <= 0x655)) ||
2998 (code == 0x670) ||
2999 ((code >= 0x6d6) && (code <= 0x6e4)) ||
3000 ((code >= 0x6e7) && (code <= 0x6e8)) ||
3001 ((code >= 0x6ea) && (code <= 0x6ed)) ||
3002 (code == 0x711) ||
3003 ((code >= 0x730) && (code <= 0x74a)) ||
3004 ((code >= 0x7a6) && (code <= 0x7b0)) ||
3005 ((code >= 0x901) && (code <= 0x903)) ||
3006 (code == 0x93c) ||
3007 ((code >= 0x93e) && (code <= 0x94d)) ||
3008 ((code >= 0x951) && (code <= 0x954)) ||
3009 ((code >= 0x962) && (code <= 0x963)) ||
3010 ((code >= 0x981) && (code <= 0x983)) ||
3011 (code == 0x9bc) ||
3012 ((code >= 0x9be) && (code <= 0x9c4)) ||
3013 ((code >= 0x9c7) && (code <= 0x9c8)) ||
3014 ((code >= 0x9cb) && (code <= 0x9cd)) ||
3015 (code == 0x9d7) ||
3016 ((code >= 0x9e2) && (code <= 0x9e3)) ||
3017 (code == 0xa02) ||
3018 (code == 0xa3c) ||
3019 ((code >= 0xa3e) && (code <= 0xa42)) ||
3020 ((code >= 0xa47) && (code <= 0xa48)) ||
3021 ((code >= 0xa4b) && (code <= 0xa4d)) ||
3022 ((code >= 0xa70) && (code <= 0xa71)) ||
3023 ((code >= 0xa81) && (code <= 0xa83)) ||
3024 (code == 0xabc) ||
3025 ((code >= 0xabe) && (code <= 0xac5)) ||
3026 ((code >= 0xac7) && (code <= 0xac9)) ||
3027 ((code >= 0xacb) && (code <= 0xacd)) ||
3028 ((code >= 0xb01) && (code <= 0xb03)) ||
3029 (code == 0xb3c) ||
3030 ((code >= 0xb3e) && (code <= 0xb43)) ||
3031 ((code >= 0xb47) && (code <= 0xb48)) ||
3032 ((code >= 0xb4b) && (code <= 0xb4d)) ||
3033 ((code >= 0xb56) && (code <= 0xb57)) ||
3034 ((code >= 0xb82) && (code <= 0xb83)) ||
3035 ((code >= 0xbbe) && (code <= 0xbc2)) ||
3036 ((code >= 0xbc6) && (code <= 0xbc8)) ||
3037 ((code >= 0xbca) && (code <= 0xbcd)) ||
3038 (code == 0xbd7) ||
3039 ((code >= 0xc01) && (code <= 0xc03)) ||
3040 ((code >= 0xc3e) && (code <= 0xc44)) ||
3041 ((code >= 0xc46) && (code <= 0xc48)) ||
3042 ((code >= 0xc4a) && (code <= 0xc4d)) ||
3043 ((code >= 0xc55) && (code <= 0xc56)) ||
3044 ((code >= 0xc82) && (code <= 0xc83)) ||
3045 ((code >= 0xcbe) && (code <= 0xcc4)) ||
3046 ((code >= 0xcc6) && (code <= 0xcc8)) ||
3047 ((code >= 0xcca) && (code <= 0xccd)) ||
3048 ((code >= 0xcd5) && (code <= 0xcd6)) ||
3049 ((code >= 0xd02) && (code <= 0xd03)) ||
3050 ((code >= 0xd3e) && (code <= 0xd43)) ||
3051 ((code >= 0xd46) && (code <= 0xd48)) ||
3052 ((code >= 0xd4a) && (code <= 0xd4d)) ||
3053 (code == 0xd57) ||
3054 ((code >= 0xd82) && (code <= 0xd83)) ||
3055 (code == 0xdca) ||
3056 ((code >= 0xdcf) && (code <= 0xdd4)) ||
3057 (code == 0xdd6) ||
3058 ((code >= 0xdd8) && (code <= 0xddf)) ||
3059 ((code >= 0xdf2) && (code <= 0xdf3)) ||
3060 (code == 0xe31) ||
3061 ((code >= 0xe34) && (code <= 0xe3a)) ||
3062 ((code >= 0xe47) && (code <= 0xe4e)) ||
3063 (code == 0xeb1) ||
3064 ((code >= 0xeb4) && (code <= 0xeb9)) ||
3065 ((code >= 0xebb) && (code <= 0xebc)) ||
3066 ((code >= 0xec8) && (code <= 0xecd)) ||
3067 ((code >= 0xf18) && (code <= 0xf19)) ||
3068 (code == 0xf35) ||
3069 (code == 0xf37) ||
3070 (code == 0xf39) ||
3071 ((code >= 0xf3e) && (code <= 0xf3f)) ||
3072 ((code >= 0xf71) && (code <= 0xf84)) ||
3073 ((code >= 0xf86) && (code <= 0xf87)) ||
3074 ((code >= 0xf90) && (code <= 0xf97)) ||
3075 ((code >= 0xf99) && (code <= 0xfbc)) ||
3076 (code == 0xfc6) ||
3077 ((code >= 0x102c) && (code <= 0x1032)) ||
3078 ((code >= 0x1036) && (code <= 0x1039)) ||
3079 ((code >= 0x1056) && (code <= 0x1059)) ||
3080 ((code >= 0x17b4) && (code <= 0x17d3)) ||
3081 (code == 0x18a9) ||
3082 ((code >= 0x20d0) && (code <= 0x20e3)) ||
3083 ((code >= 0x302a) && (code <= 0x302f)) ||
3084 ((code >= 0x3099) && (code <= 0x309a)) ||
3085 (code == 0xfb1e) ||
3086 ((code >= 0xfe20) && (code <= 0xfe23)) ||
3087 ((code >= 0x1d165) && (code <= 0x1d169)) ||
3088 ((code >= 0x1d16d) && (code <= 0x1d172)) ||
3089 ((code >= 0x1d17b) && (code <= 0x1d182)) ||
3090 ((code >= 0x1d185) && (code <= 0x1d18b)) ||
3091 ((code >= 0x1d1aa) && (code <= 0x1d1ad)));
3092}
3093
3094/**
3095 * xmlUCSIsCatMc:
3096 * @code: UCS code point
3097 *
3098 * Check whether the character is part of Mc UCS Category
3099 *
3100 * Returns 1 if true 0 otherwise
3101 */
3102int
3103xmlUCSIsCatMc(int code) {
3104 return((code == 0x903) ||
3105 ((code >= 0x93e) && (code <= 0x940)) ||
3106 ((code >= 0x949) && (code <= 0x94c)) ||
3107 ((code >= 0x982) && (code <= 0x983)) ||
3108 ((code >= 0x9be) && (code <= 0x9c0)) ||
3109 ((code >= 0x9c7) && (code <= 0x9c8)) ||
3110 ((code >= 0x9cb) && (code <= 0x9cc)) ||
3111 (code == 0x9d7) ||
3112 ((code >= 0xa3e) && (code <= 0xa40)) ||
3113 (code == 0xa83) ||
3114 ((code >= 0xabe) && (code <= 0xac0)) ||
3115 (code == 0xac9) ||
3116 ((code >= 0xacb) && (code <= 0xacc)) ||
3117 ((code >= 0xb02) && (code <= 0xb03)) ||
3118 (code == 0xb3e) ||
3119 (code == 0xb40) ||
3120 ((code >= 0xb47) && (code <= 0xb48)) ||
3121 ((code >= 0xb4b) && (code <= 0xb4c)) ||
3122 (code == 0xb57) ||
3123 (code == 0xb83) ||
3124 ((code >= 0xbbe) && (code <= 0xbbf)) ||
3125 ((code >= 0xbc1) && (code <= 0xbc2)) ||
3126 ((code >= 0xbc6) && (code <= 0xbc8)) ||
3127 ((code >= 0xbca) && (code <= 0xbcc)) ||
3128 (code == 0xbd7) ||
3129 ((code >= 0xc01) && (code <= 0xc03)) ||
3130 ((code >= 0xc41) && (code <= 0xc44)) ||
3131 ((code >= 0xc82) && (code <= 0xc83)) ||
3132 (code == 0xcbe) ||
3133 ((code >= 0xcc0) && (code <= 0xcc4)) ||
3134 ((code >= 0xcc7) && (code <= 0xcc8)) ||
3135 ((code >= 0xcca) && (code <= 0xccb)) ||
3136 ((code >= 0xcd5) && (code <= 0xcd6)) ||
3137 ((code >= 0xd02) && (code <= 0xd03)) ||
3138 ((code >= 0xd3e) && (code <= 0xd40)) ||
3139 ((code >= 0xd46) && (code <= 0xd48)) ||
3140 ((code >= 0xd4a) && (code <= 0xd4c)) ||
3141 (code == 0xd57) ||
3142 ((code >= 0xd82) && (code <= 0xd83)) ||
3143 ((code >= 0xdcf) && (code <= 0xdd1)) ||
3144 ((code >= 0xdd8) && (code <= 0xddf)) ||
3145 ((code >= 0xdf2) && (code <= 0xdf3)) ||
3146 ((code >= 0xf3e) && (code <= 0xf3f)) ||
3147 (code == 0xf7f) ||
3148 (code == 0x102c) ||
3149 (code == 0x1031) ||
3150 (code == 0x1038) ||
3151 ((code >= 0x1056) && (code <= 0x1057)) ||
3152 ((code >= 0x17b4) && (code <= 0x17b6)) ||
3153 ((code >= 0x17be) && (code <= 0x17c5)) ||
3154 ((code >= 0x17c7) && (code <= 0x17c8)) ||
3155 ((code >= 0x1d165) && (code <= 0x1d166)) ||
3156 ((code >= 0x1d16d) && (code <= 0x1d172)));
3157}
3158
3159/**
3160 * xmlUCSIsCatMe:
3161 * @code: UCS code point
3162 *
3163 * Check whether the character is part of Me UCS Category
3164 *
3165 * Returns 1 if true 0 otherwise
3166 */
3167int
3168xmlUCSIsCatMe(int code) {
3169 return(((code >= 0x488) && (code <= 0x489)) ||
3170 ((code >= 0x6dd) && (code <= 0x6de)) ||
3171 ((code >= 0x20dd) && (code <= 0x20e0)) ||
3172 ((code >= 0x20e2) && (code <= 0x20e3)));
3173}
3174
3175/**
3176 * xmlUCSIsCatMn:
3177 * @code: UCS code point
3178 *
3179 * Check whether the character is part of Mn UCS Category
3180 *
3181 * Returns 1 if true 0 otherwise
3182 */
3183int
3184xmlUCSIsCatMn(int code) {
3185 return(((code >= 0x300) && (code <= 0x34e)) ||
3186 ((code >= 0x360) && (code <= 0x362)) ||
3187 ((code >= 0x483) && (code <= 0x486)) ||
3188 ((code >= 0x591) && (code <= 0x5a1)) ||
3189 ((code >= 0x5a3) && (code <= 0x5b9)) ||
3190 ((code >= 0x5bb) && (code <= 0x5bd)) ||
3191 (code == 0x5bf) ||
3192 ((code >= 0x5c1) && (code <= 0x5c2)) ||
3193 (code == 0x5c4) ||
3194 ((code >= 0x64b) && (code <= 0x655)) ||
3195 (code == 0x670) ||
3196 ((code >= 0x6d6) && (code <= 0x6dc)) ||
3197 ((code >= 0x6df) && (code <= 0x6e4)) ||
3198 ((code >= 0x6e7) && (code <= 0x6e8)) ||
3199 ((code >= 0x6ea) && (code <= 0x6ed)) ||
3200 (code == 0x711) ||
3201 ((code >= 0x730) && (code <= 0x74a)) ||
3202 ((code >= 0x7a6) && (code <= 0x7b0)) ||
3203 ((code >= 0x901) && (code <= 0x902)) ||
3204 (code == 0x93c) ||
3205 ((code >= 0x941) && (code <= 0x948)) ||
3206 (code == 0x94d) ||
3207 ((code >= 0x951) && (code <= 0x954)) ||
3208 ((code >= 0x962) && (code <= 0x963)) ||
3209 (code == 0x981) ||
3210 (code == 0x9bc) ||
3211 ((code >= 0x9c1) && (code <= 0x9c4)) ||
3212 (code == 0x9cd) ||
3213 ((code >= 0x9e2) && (code <= 0x9e3)) ||
3214 (code == 0xa02) ||
3215 (code == 0xa3c) ||
3216 ((code >= 0xa41) && (code <= 0xa42)) ||
3217 ((code >= 0xa47) && (code <= 0xa48)) ||
3218 ((code >= 0xa4b) && (code <= 0xa4d)) ||
3219 ((code >= 0xa70) && (code <= 0xa71)) ||
3220 ((code >= 0xa81) && (code <= 0xa82)) ||
3221 (code == 0xabc) ||
3222 ((code >= 0xac1) && (code <= 0xac5)) ||
3223 ((code >= 0xac7) && (code <= 0xac8)) ||
3224 (code == 0xacd) ||
3225 (code == 0xb01) ||
3226 (code == 0xb3c) ||
3227 (code == 0xb3f) ||
3228 ((code >= 0xb41) && (code <= 0xb43)) ||
3229 (code == 0xb4d) ||
3230 (code == 0xb56) ||
3231 (code == 0xb82) ||
3232 (code == 0xbc0) ||
3233 (code == 0xbcd) ||
3234 ((code >= 0xc3e) && (code <= 0xc40)) ||
3235 ((code >= 0xc46) && (code <= 0xc48)) ||
3236 ((code >= 0xc4a) && (code <= 0xc4d)) ||
3237 ((code >= 0xc55) && (code <= 0xc56)) ||
3238 (code == 0xcbf) ||
3239 (code == 0xcc6) ||
3240 ((code >= 0xccc) && (code <= 0xccd)) ||
3241 ((code >= 0xd41) && (code <= 0xd43)) ||
3242 (code == 0xd4d) ||
3243 (code == 0xdca) ||
3244 ((code >= 0xdd2) && (code <= 0xdd4)) ||
3245 (code == 0xdd6) ||
3246 (code == 0xe31) ||
3247 ((code >= 0xe34) && (code <= 0xe3a)) ||
3248 ((code >= 0xe47) && (code <= 0xe4e)) ||
3249 (code == 0xeb1) ||
3250 ((code >= 0xeb4) && (code <= 0xeb9)) ||
3251 ((code >= 0xebb) && (code <= 0xebc)) ||
3252 ((code >= 0xec8) && (code <= 0xecd)) ||
3253 ((code >= 0xf18) && (code <= 0xf19)) ||
3254 (code == 0xf35) ||
3255 (code == 0xf37) ||
3256 (code == 0xf39) ||
3257 ((code >= 0xf71) && (code <= 0xf7e)) ||
3258 ((code >= 0xf80) && (code <= 0xf84)) ||
3259 ((code >= 0xf86) && (code <= 0xf87)) ||
3260 ((code >= 0xf90) && (code <= 0xf97)) ||
3261 ((code >= 0xf99) && (code <= 0xfbc)) ||
3262 (code == 0xfc6) ||
3263 ((code >= 0x102d) && (code <= 0x1030)) ||
3264 (code == 0x1032) ||
3265 ((code >= 0x1036) && (code <= 0x1037)) ||
3266 (code == 0x1039) ||
3267 ((code >= 0x1058) && (code <= 0x1059)) ||
3268 ((code >= 0x17b7) && (code <= 0x17bd)) ||
3269 (code == 0x17c6) ||
3270 ((code >= 0x17c9) && (code <= 0x17d3)) ||
3271 (code == 0x18a9) ||
3272 ((code >= 0x20d0) && (code <= 0x20dc)) ||
3273 (code == 0x20e1) ||
3274 ((code >= 0x302a) && (code <= 0x302f)) ||
3275 ((code >= 0x3099) && (code <= 0x309a)) ||
3276 (code == 0xfb1e) ||
3277 ((code >= 0xfe20) && (code <= 0xfe23)) ||
3278 ((code >= 0x1d167) && (code <= 0x1d169)) ||
3279 ((code >= 0x1d17b) && (code <= 0x1d182)) ||
3280 ((code >= 0x1d185) && (code <= 0x1d18b)) ||
3281 ((code >= 0x1d1aa) && (code <= 0x1d1ad)));
3282}
3283
3284/**
3285 * xmlUCSIsCatN:
3286 * @code: UCS code point
3287 *
3288 * Check whether the character is part of N UCS Category
3289 *
3290 * Returns 1 if true 0 otherwise
3291 */
3292int
3293xmlUCSIsCatN(int code) {
3294 return(((code >= 0x30) && (code <= 0x39)) ||
3295 ((code >= 0xb2) && (code <= 0xb3)) ||
3296 (code == 0xb9) ||
3297 ((code >= 0xbc) && (code <= 0xbe)) ||
3298 ((code >= 0x660) && (code <= 0x669)) ||
3299 ((code >= 0x6f0) && (code <= 0x6f9)) ||
3300 ((code >= 0x966) && (code <= 0x96f)) ||
3301 ((code >= 0x9e6) && (code <= 0x9ef)) ||
3302 ((code >= 0x9f4) && (code <= 0x9f9)) ||
3303 ((code >= 0xa66) && (code <= 0xa6f)) ||
3304 ((code >= 0xae6) && (code <= 0xaef)) ||
3305 ((code >= 0xb66) && (code <= 0xb6f)) ||
3306 ((code >= 0xbe7) && (code <= 0xbf2)) ||
3307 ((code >= 0xc66) && (code <= 0xc6f)) ||
3308 ((code >= 0xce6) && (code <= 0xcef)) ||
3309 ((code >= 0xd66) && (code <= 0xd6f)) ||
3310 ((code >= 0xe50) && (code <= 0xe59)) ||
3311 ((code >= 0xed0) && (code <= 0xed9)) ||
3312 ((code >= 0xf20) && (code <= 0xf33)) ||
3313 ((code >= 0x1040) && (code <= 0x1049)) ||
3314 ((code >= 0x1369) && (code <= 0x137c)) ||
3315 ((code >= 0x16ee) && (code <= 0x16f0)) ||
3316 ((code >= 0x17e0) && (code <= 0x17e9)) ||
3317 ((code >= 0x1810) && (code <= 0x1819)) ||
3318 (code == 0x2070) ||
3319 ((code >= 0x2074) && (code <= 0x2079)) ||
3320 ((code >= 0x2080) && (code <= 0x2089)) ||
3321 ((code >= 0x2153) && (code <= 0x2183)) ||
3322 ((code >= 0x2460) && (code <= 0x249b)) ||
3323 (code == 0x24ea) ||
3324 ((code >= 0x2776) && (code <= 0x2793)) ||
3325 (code == 0x3007) ||
3326 ((code >= 0x3021) && (code <= 0x3029)) ||
3327 ((code >= 0x3038) && (code <= 0x303a)) ||
3328 ((code >= 0x3192) && (code <= 0x3195)) ||
3329 ((code >= 0x3220) && (code <= 0x3229)) ||
3330 ((code >= 0x3280) && (code <= 0x3289)) ||
3331 ((code >= 0xff10) && (code <= 0xff19)) ||
3332 ((code >= 0x10320) && (code <= 0x10323)) ||
3333 (code == 0x1034a) ||
3334 ((code >= 0x1d7ce) && (code <= 0x1d7ff)));
3335}
3336
3337/**
3338 * xmlUCSIsCatNd:
3339 * @code: UCS code point
3340 *
3341 * Check whether the character is part of Nd UCS Category
3342 *
3343 * Returns 1 if true 0 otherwise
3344 */
3345int
3346xmlUCSIsCatNd(int code) {
3347 return(((code >= 0x30) && (code <= 0x39)) ||
3348 ((code >= 0x660) && (code <= 0x669)) ||
3349 ((code >= 0x6f0) && (code <= 0x6f9)) ||
3350 ((code >= 0x966) && (code <= 0x96f)) ||
3351 ((code >= 0x9e6) && (code <= 0x9ef)) ||
3352 ((code >= 0xa66) && (code <= 0xa6f)) ||
3353 ((code >= 0xae6) && (code <= 0xaef)) ||
3354 ((code >= 0xb66) && (code <= 0xb6f)) ||
3355 ((code >= 0xbe7) && (code <= 0xbef)) ||
3356 ((code >= 0xc66) && (code <= 0xc6f)) ||
3357 ((code >= 0xce6) && (code <= 0xcef)) ||
3358 ((code >= 0xd66) && (code <= 0xd6f)) ||
3359 ((code >= 0xe50) && (code <= 0xe59)) ||
3360 ((code >= 0xed0) && (code <= 0xed9)) ||
3361 ((code >= 0xf20) && (code <= 0xf29)) ||
3362 ((code >= 0x1040) && (code <= 0x1049)) ||
3363 ((code >= 0x1369) && (code <= 0x1371)) ||
3364 ((code >= 0x17e0) && (code <= 0x17e9)) ||
3365 ((code >= 0x1810) && (code <= 0x1819)) ||
3366 ((code >= 0xff10) && (code <= 0xff19)) ||
3367 ((code >= 0x1d7ce) && (code <= 0x1d7ff)));
3368}
3369
3370/**
3371 * xmlUCSIsCatNl:
3372 * @code: UCS code point
3373 *
3374 * Check whether the character is part of Nl UCS Category
3375 *
3376 * Returns 1 if true 0 otherwise
3377 */
3378int
3379xmlUCSIsCatNl(int code) {
3380 return(((code >= 0x16ee) && (code <= 0x16f0)) ||
3381 ((code >= 0x2160) && (code <= 0x2183)) ||
3382 (code == 0x3007) ||
3383 ((code >= 0x3021) && (code <= 0x3029)) ||
3384 ((code >= 0x3038) && (code <= 0x303a)) ||
3385 (code == 0x1034a));
3386}
3387
3388/**
3389 * xmlUCSIsCatNo:
3390 * @code: UCS code point
3391 *
3392 * Check whether the character is part of No UCS Category
3393 *
3394 * Returns 1 if true 0 otherwise
3395 */
3396int
3397xmlUCSIsCatNo(int code) {
3398 return(((code >= 0xb2) && (code <= 0xb3)) ||
3399 (code == 0xb9) ||
3400 ((code >= 0xbc) && (code <= 0xbe)) ||
3401 ((code >= 0x9f4) && (code <= 0x9f9)) ||
3402 ((code >= 0xbf0) && (code <= 0xbf2)) ||
3403 ((code >= 0xf2a) && (code <= 0xf33)) ||
3404 ((code >= 0x1372) && (code <= 0x137c)) ||
3405 (code == 0x2070) ||
3406 ((code >= 0x2074) && (code <= 0x2079)) ||
3407 ((code >= 0x2080) && (code <= 0x2089)) ||
3408 ((code >= 0x2153) && (code <= 0x215f)) ||
3409 ((code >= 0x2460) && (code <= 0x249b)) ||
3410 (code == 0x24ea) ||
3411 ((code >= 0x2776) && (code <= 0x2793)) ||
3412 ((code >= 0x3192) && (code <= 0x3195)) ||
3413 ((code >= 0x3220) && (code <= 0x3229)) ||
3414 ((code >= 0x3280) && (code <= 0x3289)) ||
3415 ((code >= 0x10320) && (code <= 0x10323)));
3416}
3417
3418/**
3419 * xmlUCSIsCatP:
3420 * @code: UCS code point
3421 *
3422 * Check whether the character is part of P UCS Category
3423 *
3424 * Returns 1 if true 0 otherwise
3425 */
3426int
3427xmlUCSIsCatP(int code) {
3428 return(((code >= 0x21) && (code <= 0x23)) ||
3429 ((code >= 0x25) && (code <= 0x2a)) ||
3430 ((code >= 0x2c) && (code <= 0x2f)) ||
3431 ((code >= 0x3a) && (code <= 0x3b)) ||
3432 ((code >= 0x3f) && (code <= 0x40)) ||
3433 ((code >= 0x5b) && (code <= 0x5d)) ||
3434 (code == 0x5f) ||
3435 (code == 0x7b) ||
3436 (code == 0x7d) ||
3437 (code == 0xa1) ||
3438 (code == 0xab) ||
3439 (code == 0xad) ||
3440 (code == 0xb7) ||
3441 (code == 0xbb) ||
3442 (code == 0xbf) ||
3443 (code == 0x37e) ||
3444 (code == 0x387) ||
3445 ((code >= 0x55a) && (code <= 0x55f)) ||
3446 ((code >= 0x589) && (code <= 0x58a)) ||
3447 (code == 0x5be) ||
3448 (code == 0x5c0) ||
3449 (code == 0x5c3) ||
3450 ((code >= 0x5f3) && (code <= 0x5f4)) ||
3451 (code == 0x60c) ||
3452 (code == 0x61b) ||
3453 (code == 0x61f) ||
3454 ((code >= 0x66a) && (code <= 0x66d)) ||
3455 (code == 0x6d4) ||
3456 ((code >= 0x700) && (code <= 0x70d)) ||
3457 ((code >= 0x964) && (code <= 0x965)) ||
3458 (code == 0x970) ||
3459 (code == 0xdf4) ||
3460 (code == 0xe4f) ||
3461 ((code >= 0xe5a) && (code <= 0xe5b)) ||
3462 ((code >= 0xf04) && (code <= 0xf12)) ||
3463 ((code >= 0xf3a) && (code <= 0xf3d)) ||
3464 (code == 0xf85) ||
3465 ((code >= 0x104a) && (code <= 0x104f)) ||
3466 (code == 0x10fb) ||
3467 ((code >= 0x1361) && (code <= 0x1368)) ||
3468 ((code >= 0x166d) && (code <= 0x166e)) ||
3469 ((code >= 0x169b) && (code <= 0x169c)) ||
3470 ((code >= 0x16eb) && (code <= 0x16ed)) ||
3471 ((code >= 0x17d4) && (code <= 0x17da)) ||
3472 (code == 0x17dc) ||
3473 ((code >= 0x1800) && (code <= 0x180a)) ||
3474 ((code >= 0x2010) && (code <= 0x2027)) ||
3475 ((code >= 0x2030) && (code <= 0x2043)) ||
3476 ((code >= 0x2045) && (code <= 0x2046)) ||
3477 ((code >= 0x2048) && (code <= 0x204d)) ||
3478 ((code >= 0x207d) && (code <= 0x207e)) ||
3479 ((code >= 0x208d) && (code <= 0x208e)) ||
3480 ((code >= 0x2329) && (code <= 0x232a)) ||
3481 ((code >= 0x3001) && (code <= 0x3003)) ||
3482 ((code >= 0x3008) && (code <= 0x3011)) ||
3483 ((code >= 0x3014) && (code <= 0x301f)) ||
3484 (code == 0x3030) ||
3485 (code == 0x30fb) ||
3486 ((code >= 0xfd3e) && (code <= 0xfd3f)) ||
3487 ((code >= 0xfe30) && (code <= 0xfe44)) ||
3488 ((code >= 0xfe49) && (code <= 0xfe52)) ||
3489 ((code >= 0xfe54) && (code <= 0xfe61)) ||
3490 (code == 0xfe63) ||
3491 (code == 0xfe68) ||
3492 ((code >= 0xfe6a) && (code <= 0xfe6b)) ||
3493 ((code >= 0xff01) && (code <= 0xff03)) ||
3494 ((code >= 0xff05) && (code <= 0xff0a)) ||
3495 ((code >= 0xff0c) && (code <= 0xff0f)) ||
3496 ((code >= 0xff1a) && (code <= 0xff1b)) ||
3497 ((code >= 0xff1f) && (code <= 0xff20)) ||
3498 ((code >= 0xff3b) && (code <= 0xff3d)) ||
3499 (code == 0xff3f) ||
3500 (code == 0xff5b) ||
3501 (code == 0xff5d) ||
3502 ((code >= 0xff61) && (code <= 0xff65)));
3503}
3504
3505/**
3506 * xmlUCSIsCatPc:
3507 * @code: UCS code point
3508 *
3509 * Check whether the character is part of Pc UCS Category
3510 *
3511 * Returns 1 if true 0 otherwise
3512 */
3513int
3514xmlUCSIsCatPc(int code) {
3515 return((code == 0x5f) ||
3516 ((code >= 0x203f) && (code <= 0x2040)) ||
3517 (code == 0x30fb) ||
3518 ((code >= 0xfe33) && (code <= 0xfe34)) ||
3519 ((code >= 0xfe4d) && (code <= 0xfe4f)) ||
3520 (code == 0xff3f) ||
3521 (code == 0xff65));
3522}
3523
3524/**
3525 * xmlUCSIsCatPd:
3526 * @code: UCS code point
3527 *
3528 * Check whether the character is part of Pd UCS Category
3529 *
3530 * Returns 1 if true 0 otherwise
3531 */
3532int
3533xmlUCSIsCatPd(int code) {
3534 return((code == 0x2d) ||
3535 (code == 0xad) ||
3536 (code == 0x58a) ||
3537 (code == 0x1806) ||
3538 ((code >= 0x2010) && (code <= 0x2015)) ||
3539 (code == 0x301c) ||
3540 (code == 0x3030) ||
3541 ((code >= 0xfe31) && (code <= 0xfe32)) ||
3542 (code == 0xfe58) ||
3543 (code == 0xfe63) ||
3544 (code == 0xff0d));
3545}
3546
3547/**
3548 * xmlUCSIsCatPe:
3549 * @code: UCS code point
3550 *
3551 * Check whether the character is part of Pe UCS Category
3552 *
3553 * Returns 1 if true 0 otherwise
3554 */
3555int
3556xmlUCSIsCatPe(int code) {
3557 return((code == 0x29) ||
3558 (code == 0x5d) ||
3559 (code == 0x7d) ||
3560 (code == 0xf3b) ||
3561 (code == 0xf3d) ||
3562 (code == 0x169c) ||
3563 (code == 0x2046) ||
3564 (code == 0x207e) ||
3565 (code == 0x208e) ||
3566 (code == 0x232a) ||
3567 (code == 0x3009) ||
3568 (code == 0x300b) ||
3569 (code == 0x300d) ||
3570 (code == 0x300f) ||
3571 (code == 0x3011) ||
3572 (code == 0x3015) ||
3573 (code == 0x3017) ||
3574 (code == 0x3019) ||
3575 (code == 0x301b) ||
3576 ((code >= 0x301e) && (code <= 0x301f)) ||
3577 (code == 0xfd3f) ||
3578 (code == 0xfe36) ||
3579 (code == 0xfe38) ||
3580 (code == 0xfe3a) ||
3581 (code == 0xfe3c) ||
3582 (code == 0xfe3e) ||
3583 (code == 0xfe40) ||
3584 (code == 0xfe42) ||
3585 (code == 0xfe44) ||
3586 (code == 0xfe5a) ||
3587 (code == 0xfe5c) ||
3588 (code == 0xfe5e) ||
3589 (code == 0xff09) ||
3590 (code == 0xff3d) ||
3591 (code == 0xff5d) ||
3592 (code == 0xff63));
3593}
3594
3595/**
3596 * xmlUCSIsCatPf:
3597 * @code: UCS code point
3598 *
3599 * Check whether the character is part of Pf UCS Category
3600 *
3601 * Returns 1 if true 0 otherwise
3602 */
3603int
3604xmlUCSIsCatPf(int code) {
3605 return((code == 0xbb) ||
3606 (code == 0x2019) ||
3607 (code == 0x201d) ||
3608 (code == 0x203a));
3609}
3610
3611/**
3612 * xmlUCSIsCatPi:
3613 * @code: UCS code point
3614 *
3615 * Check whether the character is part of Pi UCS Category
3616 *
3617 * Returns 1 if true 0 otherwise
3618 */
3619int
3620xmlUCSIsCatPi(int code) {
3621 return((code == 0xab) ||
3622 (code == 0x2018) ||
3623 ((code >= 0x201b) && (code <= 0x201c)) ||
3624 (code == 0x201f) ||
3625 (code == 0x2039));
3626}
3627
3628/**
3629 * xmlUCSIsCatPo:
3630 * @code: UCS code point
3631 *
3632 * Check whether the character is part of Po UCS Category
3633 *
3634 * Returns 1 if true 0 otherwise
3635 */
3636int
3637xmlUCSIsCatPo(int code) {
3638 return(((code >= 0x21) && (code <= 0x23)) ||
3639 ((code >= 0x25) && (code <= 0x27)) ||
3640 (code == 0x2a) ||
3641 (code == 0x2c) ||
3642 ((code >= 0x2e) && (code <= 0x2f)) ||
3643 ((code >= 0x3a) && (code <= 0x3b)) ||
3644 ((code >= 0x3f) && (code <= 0x40)) ||
3645 (code == 0x5c) ||
3646 (code == 0xa1) ||
3647 (code == 0xb7) ||
3648 (code == 0xbf) ||
3649 (code == 0x37e) ||
3650 (code == 0x387) ||
3651 ((code >= 0x55a) && (code <= 0x55f)) ||
3652 (code == 0x589) ||
3653 (code == 0x5be) ||
3654 (code == 0x5c0) ||
3655 (code == 0x5c3) ||
3656 ((code >= 0x5f3) && (code <= 0x5f4)) ||
3657 (code == 0x60c) ||
3658 (code == 0x61b) ||
3659 (code == 0x61f) ||
3660 ((code >= 0x66a) && (code <= 0x66d)) ||
3661 (code == 0x6d4) ||
3662 ((code >= 0x700) && (code <= 0x70d)) ||
3663 ((code >= 0x964) && (code <= 0x965)) ||
3664 (code == 0x970) ||
3665 (code == 0xdf4) ||
3666 (code == 0xe4f) ||
3667 ((code >= 0xe5a) && (code <= 0xe5b)) ||
3668 ((code >= 0xf04) && (code <= 0xf12)) ||
3669 (code == 0xf85) ||
3670 ((code >= 0x104a) && (code <= 0x104f)) ||
3671 (code == 0x10fb) ||
3672 ((code >= 0x1361) && (code <= 0x1368)) ||
3673 ((code >= 0x166d) && (code <= 0x166e)) ||
3674 ((code >= 0x16eb) && (code <= 0x16ed)) ||
3675 ((code >= 0x17d4) && (code <= 0x17da)) ||
3676 (code == 0x17dc) ||
3677 ((code >= 0x1800) && (code <= 0x1805)) ||
3678 ((code >= 0x1807) && (code <= 0x180a)) ||
3679 ((code >= 0x2016) && (code <= 0x2017)) ||
3680 ((code >= 0x2020) && (code <= 0x2027)) ||
3681 ((code >= 0x2030) && (code <= 0x2038)) ||
3682 ((code >= 0x203b) && (code <= 0x203e)) ||
3683 ((code >= 0x2041) && (code <= 0x2043)) ||
3684 ((code >= 0x2048) && (code <= 0x204d)) ||
3685 ((code >= 0x3001) && (code <= 0x3003)) ||
3686 (code == 0xfe30) ||
3687 ((code >= 0xfe49) && (code <= 0xfe4c)) ||
3688 ((code >= 0xfe50) && (code <= 0xfe52)) ||
3689 ((code >= 0xfe54) && (code <= 0xfe57)) ||
3690 ((code >= 0xfe5f) && (code <= 0xfe61)) ||
3691 (code == 0xfe68) ||
3692 ((code >= 0xfe6a) && (code <= 0xfe6b)) ||
3693 ((code >= 0xff01) && (code <= 0xff03)) ||
3694 ((code >= 0xff05) && (code <= 0xff07)) ||
3695 (code == 0xff0a) ||
3696 (code == 0xff0c) ||
3697 ((code >= 0xff0e) && (code <= 0xff0f)) ||
3698 ((code >= 0xff1a) && (code <= 0xff1b)) ||
3699 ((code >= 0xff1f) && (code <= 0xff20)) ||
3700 (code == 0xff3c) ||
3701 (code == 0xff61) ||
3702 (code == 0xff64));
3703}
3704
3705/**
3706 * xmlUCSIsCatPs:
3707 * @code: UCS code point
3708 *
3709 * Check whether the character is part of Ps UCS Category
3710 *
3711 * Returns 1 if true 0 otherwise
3712 */
3713int
3714xmlUCSIsCatPs(int code) {
3715 return((code == 0x28) ||
3716 (code == 0x5b) ||
3717 (code == 0x7b) ||
3718 (code == 0xf3a) ||
3719 (code == 0xf3c) ||
3720 (code == 0x169b) ||
3721 (code == 0x201a) ||
3722 (code == 0x201e) ||
3723 (code == 0x2045) ||
3724 (code == 0x207d) ||
3725 (code == 0x208d) ||
3726 (code == 0x2329) ||
3727 (code == 0x3008) ||
3728 (code == 0x300a) ||
3729 (code == 0x300c) ||
3730 (code == 0x300e) ||
3731 (code == 0x3010) ||
3732 (code == 0x3014) ||
3733 (code == 0x3016) ||
3734 (code == 0x3018) ||
3735 (code == 0x301a) ||
3736 (code == 0x301d) ||
3737 (code == 0xfd3e) ||
3738 (code == 0xfe35) ||
3739 (code == 0xfe37) ||
3740 (code == 0xfe39) ||
3741 (code == 0xfe3b) ||
3742 (code == 0xfe3d) ||
3743 (code == 0xfe3f) ||
3744 (code == 0xfe41) ||
3745 (code == 0xfe43) ||
3746 (code == 0xfe59) ||
3747 (code == 0xfe5b) ||
3748 (code == 0xfe5d) ||
3749 (code == 0xff08) ||
3750 (code == 0xff3b) ||
3751 (code == 0xff5b) ||
3752 (code == 0xff62));
3753}
3754
3755/**
3756 * xmlUCSIsCatS:
3757 * @code: UCS code point
3758 *
3759 * Check whether the character is part of S UCS Category
3760 *
3761 * Returns 1 if true 0 otherwise
3762 */
3763int
3764xmlUCSIsCatS(int code) {
3765 return((code == 0x24) ||
3766 (code == 0x2b) ||
3767 ((code >= 0x3c) && (code <= 0x3e)) ||
3768 (code == 0x5e) ||
3769 (code == 0x60) ||
3770 (code == 0x7c) ||
3771 (code == 0x7e) ||
3772 ((code >= 0xa2) && (code <= 0xa9)) ||
3773 (code == 0xac) ||
3774 ((code >= 0xae) && (code <= 0xb1)) ||
3775 (code == 0xb4) ||
3776 (code == 0xb6) ||
3777 (code == 0xb8) ||
3778 (code == 0xd7) ||
3779 (code == 0xf7) ||
3780 ((code >= 0x2b9) && (code <= 0x2ba)) ||
3781 ((code >= 0x2c2) && (code <= 0x2cf)) ||
3782 ((code >= 0x2d2) && (code <= 0x2df)) ||
3783 ((code >= 0x2e5) && (code <= 0x2ed)) ||
3784 ((code >= 0x374) && (code <= 0x375)) ||
3785 ((code >= 0x384) && (code <= 0x385)) ||
3786 (code == 0x482) ||
3787 (code == 0x6e9) ||
3788 ((code >= 0x6fd) && (code <= 0x6fe)) ||
3789 ((code >= 0x9f2) && (code <= 0x9f3)) ||
3790 (code == 0x9fa) ||
3791 (code == 0xb70) ||
3792 (code == 0xe3f) ||
3793 ((code >= 0xf01) && (code <= 0xf03)) ||
3794 ((code >= 0xf13) && (code <= 0xf17)) ||
3795 ((code >= 0xf1a) && (code <= 0xf1f)) ||
3796 (code == 0xf34) ||
3797 (code == 0xf36) ||
3798 (code == 0xf38) ||
3799 ((code >= 0xfbe) && (code <= 0xfc5)) ||
3800 ((code >= 0xfc7) && (code <= 0xfcc)) ||
3801 (code == 0xfcf) ||
3802 (code == 0x17db) ||
3803 (code == 0x1fbd) ||
3804 ((code >= 0x1fbf) && (code <= 0x1fc1)) ||
3805 ((code >= 0x1fcd) && (code <= 0x1fcf)) ||
3806 ((code >= 0x1fdd) && (code <= 0x1fdf)) ||
3807 ((code >= 0x1fed) && (code <= 0x1fef)) ||
3808 ((code >= 0x1ffd) && (code <= 0x1ffe)) ||
3809 (code == 0x2044) ||
3810 ((code >= 0x207a) && (code <= 0x207c)) ||
3811 ((code >= 0x208a) && (code <= 0x208c)) ||
3812 ((code >= 0x20a0) && (code <= 0x20af)) ||
3813 ((code >= 0x2100) && (code <= 0x2101)) ||
3814 ((code >= 0x2103) && (code <= 0x2106)) ||
3815 ((code >= 0x2108) && (code <= 0x2109)) ||
3816 (code == 0x2114) ||
3817 ((code >= 0x2116) && (code <= 0x2118)) ||
3818 ((code >= 0x211e) && (code <= 0x2123)) ||
3819 (code == 0x2125) ||
3820 (code == 0x2127) ||
3821 (code == 0x2129) ||
3822 (code == 0x212e) ||
3823 (code == 0x2132) ||
3824 (code == 0x213a) ||
3825 ((code >= 0x2190) && (code <= 0x21f3)) ||
3826 ((code >= 0x2200) && (code <= 0x22f1)) ||
3827 ((code >= 0x2300) && (code <= 0x2328)) ||
3828 ((code >= 0x232b) && (code <= 0x237b)) ||
3829 ((code >= 0x237d) && (code <= 0x239a)) ||
3830 ((code >= 0x2400) && (code <= 0x2426)) ||
3831 ((code >= 0x2440) && (code <= 0x244a)) ||
3832 ((code >= 0x249c) && (code <= 0x24e9)) ||
3833 ((code >= 0x2500) && (code <= 0x2595)) ||
3834 ((code >= 0x25a0) && (code <= 0x25f7)) ||
3835 ((code >= 0x2600) && (code <= 0x2613)) ||
3836 ((code >= 0x2619) && (code <= 0x2671)) ||
3837 ((code >= 0x2701) && (code <= 0x2704)) ||
3838 ((code >= 0x2706) && (code <= 0x2709)) ||
3839 ((code >= 0x270c) && (code <= 0x2727)) ||
3840 ((code >= 0x2729) && (code <= 0x274b)) ||
3841 (code == 0x274d) ||
3842 ((code >= 0x274f) && (code <= 0x2752)) ||
3843 (code == 0x2756) ||
3844 ((code >= 0x2758) && (code <= 0x275e)) ||
3845 ((code >= 0x2761) && (code <= 0x2767)) ||
3846 (code == 0x2794) ||
3847 ((code >= 0x2798) && (code <= 0x27af)) ||
3848 ((code >= 0x27b1) && (code <= 0x27be)) ||
3849 ((code >= 0x2800) && (code <= 0x28ff)) ||
3850 ((code >= 0x2e80) && (code <= 0x2e99)) ||
3851 ((code >= 0x2e9b) && (code <= 0x2ef3)) ||
3852 ((code >= 0x2f00) && (code <= 0x2fd5)) ||
3853 ((code >= 0x2ff0) && (code <= 0x2ffb)) ||
3854 (code == 0x3004) ||
3855 ((code >= 0x3012) && (code <= 0x3013)) ||
3856 (code == 0x3020) ||
3857 ((code >= 0x3036) && (code <= 0x3037)) ||
3858 ((code >= 0x303e) && (code <= 0x303f)) ||
3859 ((code >= 0x309b) && (code <= 0x309c)) ||
3860 ((code >= 0x3190) && (code <= 0x3191)) ||
3861 ((code >= 0x3196) && (code <= 0x319f)) ||
3862 ((code >= 0x3200) && (code <= 0x321c)) ||
3863 ((code >= 0x322a) && (code <= 0x3243)) ||
3864 ((code >= 0x3260) && (code <= 0x327b)) ||
3865 (code == 0x327f) ||
3866 ((code >= 0x328a) && (code <= 0x32b0)) ||
3867 ((code >= 0x32c0) && (code <= 0x32cb)) ||
3868 ((code >= 0x32d0) && (code <= 0x32fe)) ||
3869 ((code >= 0x3300) && (code <= 0x3376)) ||
3870 ((code >= 0x337b) && (code <= 0x33dd)) ||
3871 ((code >= 0x33e0) && (code <= 0x33fe)) ||
3872 ((code >= 0xa490) && (code <= 0xa4a1)) ||
3873 ((code >= 0xa4a4) && (code <= 0xa4b3)) ||
3874 ((code >= 0xa4b5) && (code <= 0xa4c0)) ||
3875 ((code >= 0xa4c2) && (code <= 0xa4c4)) ||
3876 (code == 0xa4c6) ||
3877 (code == 0xfb29) ||
3878 (code == 0xfe62) ||
3879 ((code >= 0xfe64) && (code <= 0xfe66)) ||
3880 (code == 0xfe69) ||
3881 (code == 0xff04) ||
3882 (code == 0xff0b) ||
3883 ((code >= 0xff1c) && (code <= 0xff1e)) ||
3884 (code == 0xff3e) ||
3885 (code == 0xff40) ||
3886 (code == 0xff5c) ||
3887 (code == 0xff5e) ||
3888 ((code >= 0xffe0) && (code <= 0xffe6)) ||
3889 ((code >= 0xffe8) && (code <= 0xffee)) ||
3890 ((code >= 0xfffc) && (code <= 0xfffd)) ||
3891 ((code >= 0x1d000) && (code <= 0x1d0f5)) ||
3892 ((code >= 0x1d100) && (code <= 0x1d126)) ||
3893 ((code >= 0x1d12a) && (code <= 0x1d164)) ||
3894 ((code >= 0x1d16a) && (code <= 0x1d16c)) ||
3895 ((code >= 0x1d183) && (code <= 0x1d184)) ||
3896 ((code >= 0x1d18c) && (code <= 0x1d1a9)) ||
3897 ((code >= 0x1d1ae) && (code <= 0x1d1dd)) ||
3898 (code == 0x1d6c1) ||
3899 (code == 0x1d6db) ||
3900 (code == 0x1d6fb) ||
3901 (code == 0x1d715) ||
3902 (code == 0x1d735) ||
3903 (code == 0x1d74f) ||
3904 (code == 0x1d76f) ||
3905 (code == 0x1d789) ||
3906 (code == 0x1d7a9) ||
3907 (code == 0x1d7c3));
3908}
3909
3910/**
3911 * xmlUCSIsCatSc:
3912 * @code: UCS code point
3913 *
3914 * Check whether the character is part of Sc UCS Category
3915 *
3916 * Returns 1 if true 0 otherwise
3917 */
3918int
3919xmlUCSIsCatSc(int code) {
3920 return((code == 0x24) ||
3921 ((code >= 0xa2) && (code <= 0xa5)) ||
3922 ((code >= 0x9f2) && (code <= 0x9f3)) ||
3923 (code == 0xe3f) ||
3924 (code == 0x17db) ||
3925 ((code >= 0x20a0) && (code <= 0x20af)) ||
3926 (code == 0xfe69) ||
3927 (code == 0xff04) ||
3928 ((code >= 0xffe0) && (code <= 0xffe1)) ||
3929 ((code >= 0xffe5) && (code <= 0xffe6)));
3930}
3931
3932/**
3933 * xmlUCSIsCatSk:
3934 * @code: UCS code point
3935 *
3936 * Check whether the character is part of Sk UCS Category
3937 *
3938 * Returns 1 if true 0 otherwise
3939 */
3940int
3941xmlUCSIsCatSk(int code) {
3942 return((code == 0x5e) ||
3943 (code == 0x60) ||
3944 (code == 0xa8) ||
3945 (code == 0xaf) ||
3946 (code == 0xb4) ||
3947 (code == 0xb8) ||
3948 ((code >= 0x2b9) && (code <= 0x2ba)) ||
3949 ((code >= 0x2c2) && (code <= 0x2cf)) ||
3950 ((code >= 0x2d2) && (code <= 0x2df)) ||
3951 ((code >= 0x2e5) && (code <= 0x2ed)) ||
3952 ((code >= 0x374) && (code <= 0x375)) ||
3953 ((code >= 0x384) && (code <= 0x385)) ||
3954 (code == 0x1fbd) ||
3955 ((code >= 0x1fbf) && (code <= 0x1fc1)) ||
3956 ((code >= 0x1fcd) && (code <= 0x1fcf)) ||
3957 ((code >= 0x1fdd) && (code <= 0x1fdf)) ||
3958 ((code >= 0x1fed) && (code <= 0x1fef)) ||
3959 ((code >= 0x1ffd) && (code <= 0x1ffe)) ||
3960 ((code >= 0x309b) && (code <= 0x309c)) ||
3961 (code == 0xff3e) ||
3962 (code == 0xff40) ||
3963 (code == 0xffe3));
3964}
3965
3966/**
3967 * xmlUCSIsCatSm:
3968 * @code: UCS code point
3969 *
3970 * Check whether the character is part of Sm UCS Category
3971 *
3972 * Returns 1 if true 0 otherwise
3973 */
3974int
3975xmlUCSIsCatSm(int code) {
3976 return((code == 0x2b) ||
3977 ((code >= 0x3c) && (code <= 0x3e)) ||
3978 (code == 0x7c) ||
3979 (code == 0x7e) ||
3980 (code == 0xac) ||
3981 (code == 0xb1) ||
3982 (code == 0xd7) ||
3983 (code == 0xf7) ||
3984 (code == 0x2044) ||
3985 ((code >= 0x207a) && (code <= 0x207c)) ||
3986 ((code >= 0x208a) && (code <= 0x208c)) ||
3987 ((code >= 0x2190) && (code <= 0x2194)) ||
3988 ((code >= 0x219a) && (code <= 0x219b)) ||
3989 (code == 0x21a0) ||
3990 (code == 0x21a3) ||
3991 (code == 0x21a6) ||
3992 (code == 0x21ae) ||
3993 ((code >= 0x21ce) && (code <= 0x21cf)) ||
3994 (code == 0x21d2) ||
3995 (code == 0x21d4) ||
3996 ((code >= 0x2200) && (code <= 0x22f1)) ||
3997 ((code >= 0x2308) && (code <= 0x230b)) ||
3998 ((code >= 0x2320) && (code <= 0x2321)) ||
3999 (code == 0x25b7) ||
4000 (code == 0x25c1) ||
4001 (code == 0x266f) ||
4002 (code == 0xfb29) ||
4003 (code == 0xfe62) ||
4004 ((code >= 0xfe64) && (code <= 0xfe66)) ||
4005 (code == 0xff0b) ||
4006 ((code >= 0xff1c) && (code <= 0xff1e)) ||
4007 (code == 0xff5c) ||
4008 (code == 0xff5e) ||
4009 (code == 0xffe2) ||
4010 ((code >= 0xffe9) && (code <= 0xffec)) ||
4011 (code == 0x1d6c1) ||
4012 (code == 0x1d6db) ||
4013 (code == 0x1d6fb) ||
4014 (code == 0x1d715) ||
4015 (code == 0x1d735) ||
4016 (code == 0x1d74f) ||
4017 (code == 0x1d76f) ||
4018 (code == 0x1d789) ||
4019 (code == 0x1d7a9) ||
4020 (code == 0x1d7c3));
4021}
4022
4023/**
4024 * xmlUCSIsCatSo:
4025 * @code: UCS code point
4026 *
4027 * Check whether the character is part of So UCS Category
4028 *
4029 * Returns 1 if true 0 otherwise
4030 */
4031int
4032xmlUCSIsCatSo(int code) {
4033 return(((code >= 0xa6) && (code <= 0xa7)) ||
4034 (code == 0xa9) ||
4035 (code == 0xae) ||
4036 (code == 0xb0) ||
4037 (code == 0xb6) ||
4038 (code == 0x482) ||
4039 (code == 0x6e9) ||
4040 ((code >= 0x6fd) && (code <= 0x6fe)) ||
4041 (code == 0x9fa) ||
4042 (code == 0xb70) ||
4043 ((code >= 0xf01) && (code <= 0xf03)) ||
4044 ((code >= 0xf13) && (code <= 0xf17)) ||
4045 ((code >= 0xf1a) && (code <= 0xf1f)) ||
4046 (code == 0xf34) ||
4047 (code == 0xf36) ||
4048 (code == 0xf38) ||
4049 ((code >= 0xfbe) && (code <= 0xfc5)) ||
4050 ((code >= 0xfc7) && (code <= 0xfcc)) ||
4051 (code == 0xfcf) ||
4052 ((code >= 0x2100) && (code <= 0x2101)) ||
4053 ((code >= 0x2103) && (code <= 0x2106)) ||
4054 ((code >= 0x2108) && (code <= 0x2109)) ||
4055 (code == 0x2114) ||
4056 ((code >= 0x2116) && (code <= 0x2118)) ||
4057 ((code >= 0x211e) && (code <= 0x2123)) ||
4058 (code == 0x2125) ||
4059 (code == 0x2127) ||
4060 (code == 0x2129) ||
4061 (code == 0x212e) ||
4062 (code == 0x2132) ||
4063 (code == 0x213a) ||
4064 ((code >= 0x2195) && (code <= 0x2199)) ||
4065 ((code >= 0x219c) && (code <= 0x219f)) ||
4066 ((code >= 0x21a1) && (code <= 0x21a2)) ||
4067 ((code >= 0x21a4) && (code <= 0x21a5)) ||
4068 ((code >= 0x21a7) && (code <= 0x21ad)) ||
4069 ((code >= 0x21af) && (code <= 0x21cd)) ||
4070 ((code >= 0x21d0) && (code <= 0x21d1)) ||
4071 (code == 0x21d3) ||
4072 ((code >= 0x21d5) && (code <= 0x21f3)) ||
4073 ((code >= 0x2300) && (code <= 0x2307)) ||
4074 ((code >= 0x230c) && (code <= 0x231f)) ||
4075 ((code >= 0x2322) && (code <= 0x2328)) ||
4076 ((code >= 0x232b) && (code <= 0x237b)) ||
4077 ((code >= 0x237d) && (code <= 0x239a)) ||
4078 ((code >= 0x2400) && (code <= 0x2426)) ||
4079 ((code >= 0x2440) && (code <= 0x244a)) ||
4080 ((code >= 0x249c) && (code <= 0x24e9)) ||
4081 ((code >= 0x2500) && (code <= 0x2595)) ||
4082 ((code >= 0x25a0) && (code <= 0x25b6)) ||
4083 ((code >= 0x25b8) && (code <= 0x25c0)) ||
4084 ((code >= 0x25c2) && (code <= 0x25f7)) ||
4085 ((code >= 0x2600) && (code <= 0x2613)) ||
4086 ((code >= 0x2619) && (code <= 0x266e)) ||
4087 ((code >= 0x2670) && (code <= 0x2671)) ||
4088 ((code >= 0x2701) && (code <= 0x2704)) ||
4089 ((code >= 0x2706) && (code <= 0x2709)) ||
4090 ((code >= 0x270c) && (code <= 0x2727)) ||
4091 ((code >= 0x2729) && (code <= 0x274b)) ||
4092 (code == 0x274d) ||
4093 ((code >= 0x274f) && (code <= 0x2752)) ||
4094 (code == 0x2756) ||
4095 ((code >= 0x2758) && (code <= 0x275e)) ||
4096 ((code >= 0x2761) && (code <= 0x2767)) ||
4097 (code == 0x2794) ||
4098 ((code >= 0x2798) && (code <= 0x27af)) ||
4099 ((code >= 0x27b1) && (code <= 0x27be)) ||
4100 ((code >= 0x2800) && (code <= 0x28ff)) ||
4101 ((code >= 0x2e80) && (code <= 0x2e99)) ||
4102 ((code >= 0x2e9b) && (code <= 0x2ef3)) ||
4103 ((code >= 0x2f00) && (code <= 0x2fd5)) ||
4104 ((code >= 0x2ff0) && (code <= 0x2ffb)) ||
4105 (code == 0x3004) ||
4106 ((code >= 0x3012) && (code <= 0x3013)) ||
4107 (code == 0x3020) ||
4108 ((code >= 0x3036) && (code <= 0x3037)) ||
4109 ((code >= 0x303e) && (code <= 0x303f)) ||
4110 ((code >= 0x3190) && (code <= 0x3191)) ||
4111 ((code >= 0x3196) && (code <= 0x319f)) ||
4112 ((code >= 0x3200) && (code <= 0x321c)) ||
4113 ((code >= 0x322a) && (code <= 0x3243)) ||
4114 ((code >= 0x3260) && (code <= 0x327b)) ||
4115 (code == 0x327f) ||
4116 ((code >= 0x328a) && (code <= 0x32b0)) ||
4117 ((code >= 0x32c0) && (code <= 0x32cb)) ||
4118 ((code >= 0x32d0) && (code <= 0x32fe)) ||
4119 ((code >= 0x3300) && (code <= 0x3376)) ||
4120 ((code >= 0x337b) && (code <= 0x33dd)) ||
4121 ((code >= 0x33e0) && (code <= 0x33fe)) ||
4122 ((code >= 0xa490) && (code <= 0xa4a1)) ||
4123 ((code >= 0xa4a4) && (code <= 0xa4b3)) ||
4124 ((code >= 0xa4b5) && (code <= 0xa4c0)) ||
4125 ((code >= 0xa4c2) && (code <= 0xa4c4)) ||
4126 (code == 0xa4c6) ||
4127 (code == 0xffe4) ||
4128 (code == 0xffe8) ||
4129 ((code >= 0xffed) && (code <= 0xffee)) ||
4130 ((code >= 0xfffc) && (code <= 0xfffd)) ||
4131 ((code >= 0x1d000) && (code <= 0x1d0f5)) ||
4132 ((code >= 0x1d100) && (code <= 0x1d126)) ||
4133 ((code >= 0x1d12a) && (code <= 0x1d164)) ||
4134 ((code >= 0x1d16a) && (code <= 0x1d16c)) ||
4135 ((code >= 0x1d183) && (code <= 0x1d184)) ||
4136 ((code >= 0x1d18c) && (code <= 0x1d1a9)) ||
4137 ((code >= 0x1d1ae) && (code <= 0x1d1dd)));
4138}
4139
4140/**
4141 * xmlUCSIsCatZ:
4142 * @code: UCS code point
4143 *
4144 * Check whether the character is part of Z UCS Category
4145 *
4146 * Returns 1 if true 0 otherwise
4147 */
4148int
4149xmlUCSIsCatZ(int code) {
4150 return((code == 0x20) ||
4151 (code == 0xa0) ||
4152 (code == 0x1680) ||
4153 ((code >= 0x2000) && (code <= 0x200b)) ||
4154 ((code >= 0x2028) && (code <= 0x2029)) ||
4155 (code == 0x202f) ||
4156 (code == 0x3000));
4157}
4158
4159/**
4160 * xmlUCSIsCatZl:
4161 * @code: UCS code point
4162 *
4163 * Check whether the character is part of Zl UCS Category
4164 *
4165 * Returns 1 if true 0 otherwise
4166 */
4167int
4168xmlUCSIsCatZl(int code) {
4169 return((code == 0x2028));
4170}
4171
4172/**
4173 * xmlUCSIsCatZp:
4174 * @code: UCS code point
4175 *
4176 * Check whether the character is part of Zp UCS Category
4177 *
4178 * Returns 1 if true 0 otherwise
4179 */
4180int
4181xmlUCSIsCatZp(int code) {
4182 return((code == 0x2029));
4183}
4184
4185/**
4186 * xmlUCSIsCatZs:
4187 * @code: UCS code point
4188 *
4189 * Check whether the character is part of Zs UCS Category
4190 *
4191 * Returns 1 if true 0 otherwise
4192 */
4193int
4194xmlUCSIsCatZs(int code) {
4195 return((code == 0x20) ||
4196 (code == 0xa0) ||
4197 (code == 0x1680) ||
4198 ((code >= 0x2000) && (code <= 0x200b)) ||
4199 (code == 0x202f) ||
4200 (code == 0x3000));
4201}
4202
4203/**
4204 * xmlUCSIsCat:
4205 * @code: UCS code point
4206 * @cat: UCS Category name
4207 *
4208 * Check whether the caracter is part of the UCS Category
4209 *
4210 * Returns 1 if true, 0 if false and -1 on unknown category
4211 */
4212int
4213xmlUCSIsCat(int code, const char *cat) {
4214 if (!strcmp(cat, "C"))
4215 return(xmlUCSIsCatC(code));
4216 if (!strcmp(cat, "Cc"))
4217 return(xmlUCSIsCatCc(code));
4218 if (!strcmp(cat, "Cf"))
4219 return(xmlUCSIsCatCf(code));
4220 if (!strcmp(cat, "Co"))
4221 return(xmlUCSIsCatCo(code));
4222 if (!strcmp(cat, "Cs"))
4223 return(xmlUCSIsCatCs(code));
4224 if (!strcmp(cat, "L"))
4225 return(xmlUCSIsCatL(code));
4226 if (!strcmp(cat, "Ll"))
4227 return(xmlUCSIsCatLl(code));
4228 if (!strcmp(cat, "Lm"))
4229 return(xmlUCSIsCatLm(code));
4230 if (!strcmp(cat, "Lo"))
4231 return(xmlUCSIsCatLo(code));
4232 if (!strcmp(cat, "Lt"))
4233 return(xmlUCSIsCatLt(code));
4234 if (!strcmp(cat, "Lu"))
4235 return(xmlUCSIsCatLu(code));
4236 if (!strcmp(cat, "M"))
4237 return(xmlUCSIsCatM(code));
4238 if (!strcmp(cat, "Mc"))
4239 return(xmlUCSIsCatMc(code));
4240 if (!strcmp(cat, "Me"))
4241 return(xmlUCSIsCatMe(code));
4242 if (!strcmp(cat, "Mn"))
4243 return(xmlUCSIsCatMn(code));
4244 if (!strcmp(cat, "N"))
4245 return(xmlUCSIsCatN(code));
4246 if (!strcmp(cat, "Nd"))
4247 return(xmlUCSIsCatNd(code));
4248 if (!strcmp(cat, "Nl"))
4249 return(xmlUCSIsCatNl(code));
4250 if (!strcmp(cat, "No"))
4251 return(xmlUCSIsCatNo(code));
4252 if (!strcmp(cat, "P"))
4253 return(xmlUCSIsCatP(code));
4254 if (!strcmp(cat, "Pc"))
4255 return(xmlUCSIsCatPc(code));
4256 if (!strcmp(cat, "Pd"))
4257 return(xmlUCSIsCatPd(code));
4258 if (!strcmp(cat, "Pe"))
4259 return(xmlUCSIsCatPe(code));
4260 if (!strcmp(cat, "Pf"))
4261 return(xmlUCSIsCatPf(code));
4262 if (!strcmp(cat, "Pi"))
4263 return(xmlUCSIsCatPi(code));
4264 if (!strcmp(cat, "Po"))
4265 return(xmlUCSIsCatPo(code));
4266 if (!strcmp(cat, "Ps"))
4267 return(xmlUCSIsCatPs(code));
4268 if (!strcmp(cat, "S"))
4269 return(xmlUCSIsCatS(code));
4270 if (!strcmp(cat, "Sc"))
4271 return(xmlUCSIsCatSc(code));
4272 if (!strcmp(cat, "Sk"))
4273 return(xmlUCSIsCatSk(code));
4274 if (!strcmp(cat, "Sm"))
4275 return(xmlUCSIsCatSm(code));
4276 if (!strcmp(cat, "So"))
4277 return(xmlUCSIsCatSo(code));
4278 if (!strcmp(cat, "Z"))
4279 return(xmlUCSIsCatZ(code));
4280 if (!strcmp(cat, "Zl"))
4281 return(xmlUCSIsCatZl(code));
4282 if (!strcmp(cat, "Zp"))
4283 return(xmlUCSIsCatZp(code));
4284 if (!strcmp(cat, "Zs"))
4285 return(xmlUCSIsCatZs(code));
4286 return(-1);
4287}
4288
4289
4290#endif /* LIBXML_UNICODE_ENABLED */