ruby_rnv 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/ext/rnv/extconf.rb +15 -0
  4. data/ext/rnv/ruby_rnv.c +742 -0
  5. data/ext/rnv/src/ary.c +78 -0
  6. data/ext/rnv/src/ary.h +10 -0
  7. data/ext/rnv/src/drv.c +472 -0
  8. data/ext/rnv/src/drv.h +35 -0
  9. data/ext/rnv/src/er.c +15 -0
  10. data/ext/rnv/src/er.h +16 -0
  11. data/ext/rnv/src/erbit.h +14 -0
  12. data/ext/rnv/src/ht.c +90 -0
  13. data/ext/rnv/src/ht.h +22 -0
  14. data/ext/rnv/src/ll.h +43 -0
  15. data/ext/rnv/src/m.c +60 -0
  16. data/ext/rnv/src/m.h +10 -0
  17. data/ext/rnv/src/rn.c +569 -0
  18. data/ext/rnv/src/rn.h +150 -0
  19. data/ext/rnv/src/rnc.c +1191 -0
  20. data/ext/rnv/src/rnc.h +68 -0
  21. data/ext/rnv/src/rnd.c +436 -0
  22. data/ext/rnv/src/rnd.h +25 -0
  23. data/ext/rnv/src/rnl.c +62 -0
  24. data/ext/rnv/src/rnl.h +18 -0
  25. data/ext/rnv/src/rnv.c +158 -0
  26. data/ext/rnv/src/rnv.h +30 -0
  27. data/ext/rnv/src/rnx.c +153 -0
  28. data/ext/rnv/src/rnx.h +16 -0
  29. data/ext/rnv/src/rx.c +749 -0
  30. data/ext/rnv/src/rx.h +43 -0
  31. data/ext/rnv/src/rx_cls_ranges.c +126 -0
  32. data/ext/rnv/src/rx_cls_u.c +262 -0
  33. data/ext/rnv/src/s.c +103 -0
  34. data/ext/rnv/src/s.h +32 -0
  35. data/ext/rnv/src/sc.c +62 -0
  36. data/ext/rnv/src/sc.h +26 -0
  37. data/ext/rnv/src/type.h +121 -0
  38. data/ext/rnv/src/u.c +88 -0
  39. data/ext/rnv/src/u.h +26 -0
  40. data/ext/rnv/src/xcl.c +472 -0
  41. data/ext/rnv/src/xmlc.c +20 -0
  42. data/ext/rnv/src/xmlc.h +16 -0
  43. data/ext/rnv/src/xsd.c +789 -0
  44. data/ext/rnv/src/xsd.h +27 -0
  45. data/ext/rnv/src/xsd_tm.c +100 -0
  46. data/ext/rnv/src/xsd_tm.h +15 -0
  47. data/lib/rnv.rb +2 -0
  48. data/lib/rnv/ox_sax_document.rb +84 -0
  49. data/lib/rnv/validator.rb +104 -0
  50. metadata +175 -0
data/ext/rnv/src/rx.h ADDED
@@ -0,0 +1,43 @@
1
+ /* $Id: rx.h,v 1.12 2004/01/24 18:42:41 dvd Exp $ */
2
+
3
+ #include <stdarg.h>
4
+ #include "type.h"
5
+
6
+ #ifndef RX_H
7
+ #define RX_H
8
+
9
+ #define RX_ER_BADCH 0
10
+ #define RX_ER_UNFIN 1
11
+ #define RX_ER_NOLSQ 2
12
+ #define RX_ER_NORSQ 3
13
+ #define RX_ER_NOLCU 4
14
+ #define RX_ER_NORCU 5
15
+ #define RX_ER_NOLPA 6
16
+ #define RX_ER_NORPA 7
17
+ #define RX_ER_BADCL 8
18
+ #define RX_ER_NODGT 9
19
+ #define RX_ER_DNUOB 10
20
+ #define RX_ER_NOTRC 11
21
+
22
+ //extern void (*rx_verror_handler)(int erno,va_list ap);
23
+ //extern int rx_compact;
24
+
25
+ extern void rx_default_verror_handler(rnv_t *rnv, int erno,va_list ap);
26
+
27
+ extern void rx_init(rx_st_t *rx_st);
28
+ extern void rx_clear(rx_st_t *rx_st);
29
+
30
+ /* just compiles the expression to check the syntax */
31
+ extern int rx_check(rnv_t *rnv, rx_st_t *rx_st, char *rx);
32
+
33
+ /*
34
+ returns positive value if the s[0..n] ~= rx, 0 if not, -1 on regex error;
35
+ rx and s are in utf-8, rx is 0-terminated, s is n bytes long;
36
+ rmatch replaces white space in s with 0x20,
37
+ cmatch collapses white space.
38
+ */
39
+ extern int rx_match(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
40
+ extern int rx_rmatch(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
41
+ extern int rx_cmatch(rnv_t *rnv, rx_st_t *rx_st, char *rx,char *s,int n);
42
+
43
+ #endif
@@ -0,0 +1,126 @@
1
+ /* $Id: rx_cls_ranges.c,v 1.2 2003/12/21 23:07:39 dvd Exp $ */
2
+
3
+ /* blocks */
4
+ static int IsBasicLatinRanges[][2]={{0x0000,0x007F}};
5
+ static int IsLatin_1SupplementRanges[][2]={{0x0080,0x00FF}};
6
+ static int IsLatinExtended_ARanges[][2]={{0x0100,0x017F}};
7
+ static int IsLatinExtended_BRanges[][2]={{0x0180,0x024F}};
8
+ static int IsIPAExtensionsRanges[][2]={{0x0250,0x02AF}};
9
+ static int IsSpacingModifierLettersRanges[][2]={{0x02B0,0x02FF}};
10
+ static int IsCombiningDiacriticalMarksRanges[][2]={{0x0300,0x036F}};
11
+ static int IsGreekRanges[][2]={{0x0370,0x03FF}};
12
+ static int IsCyrillicRanges[][2]={{0x0400,0x04FF}};
13
+ static int IsArmenianRanges[][2]={{0x0530,0x058F}};
14
+ static int IsHebrewRanges[][2]={{0x0590,0x05FF}};
15
+ static int IsArabicRanges[][2]={{0x0600,0x06FF}};
16
+ static int IsSyriacRanges[][2]={{0x0700,0x074F}};
17
+ static int IsThaanaRanges[][2]={{0x0780,0x07BF}};
18
+ static int IsDevanagariRanges[][2]={{0x0900,0x097F}};
19
+ static int IsBengaliRanges[][2]={{0x0980,0x09FF}};
20
+ static int IsGurmukhiRanges[][2]={{0x0A00,0x0A7F}};
21
+ static int IsGujaratiRanges[][2]={{0x0A80,0x0AFF}};
22
+ static int IsOriyaRanges[][2]={{0x0B00,0x0B7F}};
23
+ static int IsTamilRanges[][2]={{0x0B80,0x0BFF}};
24
+ static int IsTeluguRanges[][2]={{0x0C00,0x0C7F}};
25
+ static int IsKannadaRanges[][2]={{0x0C80,0x0CFF}};
26
+ static int IsMalayalamRanges[][2]={{0x0D00,0x0D7F}};
27
+ static int IsSinhalaRanges[][2]={{0x0D80,0x0DFF}};
28
+ static int IsThaiRanges[][2]={{0x0E00,0x0E7F}};
29
+ static int IsLaoRanges[][2]={{0x0E80,0x0EFF}};
30
+ static int IsTibetanRanges[][2]={{0x0F00,0x0FFF}};
31
+ static int IsMyanmarRanges[][2]={{0x1000,0x109F}};
32
+ static int IsGeorgianRanges[][2]={{0x10A0,0x10FF}};
33
+ static int IsHangulJamoRanges[][2]={{0x1100,0x11FF}};
34
+ static int IsEthiopicRanges[][2]={{0x1200,0x137F}};
35
+ static int IsCherokeeRanges[][2]={{0x13A0,0x13FF}};
36
+ static int IsUnifiedCanadianAboriginalSyllabicsRanges[][2]={{0x1400,0x167F}};
37
+ static int IsOghamRanges[][2]={{0x1680,0x169F}};
38
+ static int IsRunicRanges[][2]={{0x16A0,0x16FF}};
39
+ static int IsKhmerRanges[][2]={{0x1780,0x17FF}};
40
+ static int IsMongolianRanges[][2]={{0x1800,0x18AF}};
41
+ static int IsLatinExtendedAdditionalRanges[][2]={{0x1E00,0x1EFF}};
42
+ static int IsGreekExtendedRanges[][2]={{0x1F00,0x1FFF}};
43
+ static int IsGeneralPunctuationRanges[][2]={{0x2000,0x206F}};
44
+ static int IsSuperscriptsandSubscriptsRanges[][2]={{0x2070,0x209F}};
45
+ static int IsCurrencySymbolsRanges[][2]={{0x20A0,0x20CF}};
46
+ static int IsCombiningMarksforSymbolsRanges[][2]={{0x20D0,0x20FF}};
47
+ static int IsLetterlikeSymbolsRanges[][2]={{0x2100,0x214F}};
48
+ static int IsNumberFormsRanges[][2]={{0x2150,0x218F}};
49
+ static int IsArrowsRanges[][2]={{0x2190,0x21FF}};
50
+ static int IsMathematicalOperatorsRanges[][2]={{0x2200,0x22FF}};
51
+ static int IsMiscellaneousTechnicalRanges[][2]={{0x2300,0x23FF}};
52
+ static int IsControlPicturesRanges[][2]={{0x2400,0x243F}};
53
+ static int IsOpticalCharacterRecognitionRanges[][2]={{0x2440,0x245F}};
54
+ static int IsEnclosedAlphanumericsRanges[][2]={{0x2460,0x24FF}};
55
+ static int IsBoxDrawingRanges[][2]={{0x2500,0x257F}};
56
+ static int IsBlockElementsRanges[][2]={{0x2580,0x259F}};
57
+ static int IsGeometricShapesRanges[][2]={{0x25A0,0x25FF}};
58
+ static int IsMiscellaneousSymbolsRanges[][2]={{0x2600,0x26FF}};
59
+ static int IsDingbatsRanges[][2]={{0x2700,0x27BF}};
60
+ static int IsBraillePatternsRanges[][2]={{0x2800,0x28FF}};
61
+ static int IsCJKRadicalsSupplementRanges[][2]={{0x2E80,0x2EFF}};
62
+ static int IsKangxiRadicalsRanges[][2]={{0x2F00,0x2FDF}};
63
+ static int IsIdeographicDescriptionCharactersRanges[][2]={{0x2FF0,0x2FFF}};
64
+ static int IsCJKSymbolsandPunctuationRanges[][2]={{0x3000,0x303F}};
65
+ static int IsHiraganaRanges[][2]={{0x3040,0x309F}};
66
+ static int IsKatakanaRanges[][2]={{0x30A0,0x30FF}};
67
+ static int IsBopomofoRanges[][2]={{0x3100,0x312F}};
68
+ static int IsHangulCompatibilityJamoRanges[][2]={{0x3130,0x318F}};
69
+ static int IsKanbunRanges[][2]={{0x3190,0x319F}};
70
+ static int IsBopomofoExtendedRanges[][2]={{0x31A0,0x31BF}};
71
+ static int IsEnclosedCJKLettersandMonthsRanges[][2]={{0x3200,0x32FF}};
72
+ static int IsCJKCompatibilityRanges[][2]={{0x3300,0x33FF}};
73
+ static int IsCJKUnifiedIdeographsExtensionARanges[][2]={{0x3400,0x4DB5}};
74
+ static int IsCJKUnifiedIdeographsRanges[][2]={{0x4E00,0x9FFF}};
75
+ static int IsYiSyllablesRanges[][2]={{0xA000,0xA48F}};
76
+ static int IsYiRadicalsRanges[][2]={{0xA490,0xA4CF}};
77
+ static int IsHangulSyllablesRanges[][2]={{0xAC00,0xD7A3}};
78
+ static int IsCJKCompatibilityIdeographsRanges[][2]={{0xF900,0xFAFF}};
79
+ static int IsAlphabeticPresentationFormsRanges[][2]={{0xFB00,0xFB4F}};
80
+ static int IsArabicPresentationForms_ARanges[][2]={{0xFB50,0xFDFF}};
81
+ static int IsCombiningHalfMarksRanges[][2]={{0xFE20,0xFE2F}};
82
+ static int IsCJKCompatibilityFormsRanges[][2]={{0xFE30,0xFE4F}};
83
+ static int IsSmallFormVariantsRanges[][2]={{0xFE50,0xFE6F}};
84
+ static int IsArabicPresentationForms_BRanges[][2]={{0xFE70,0xFEFE}};
85
+ static int IsSpecialsRanges[][2]={{0xFEFF,0xFEFF},{0xFFF0,0xFFFD}};
86
+ static int IsHalfwidthandFullwidthFormsRanges[][2]={{0xFF00,0xFFEF}};
87
+ static int IsOldItalicRanges[][2]={{0x10300,0x1032F}};
88
+ static int IsGothicRanges[][2]={{0x10330,0x1034F}};
89
+ static int IsDeseretRanges[][2]={{0x10400,0x1044F}};
90
+ static int IsByzantineMusicalSymbolsRanges[][2]={{0x1D000,0x1D0FF}};
91
+ static int IsMusicalSymbolsRanges[][2]={{0x1D100,0x1D1FF}};
92
+ static int IsMathematicalAlphanumericSymbolsRanges[][2]={{0x1D400,0x1D7FF}};
93
+ static int IsCJKUnifiedIdeographsExtensionBRanges[][2]={{0x20000,0x2A6D6}};
94
+ static int IsCJKCompatibilityIdeographsSupplementRanges[][2]={{0x2F800,0x2FA1F}};
95
+ static int IsTagsRanges[][2]={{0xE0000,0xE007F}};
96
+ static int IsPrivateUseRanges[][2]={{0xE000,0xF8FF},{0xF0000,0xFFFFD},{0x100000,0x10FFFD}};
97
+
98
+ /* classes */
99
+ static int LuRanges[][2]={{0x41,0x5A},{0xC0,0xD6},{0xD8,0xDE},{0x100,0x100},{0x102,0x102},{0x104,0x104},{0x106,0x106},{0x108,0x108},{0x10A,0x10A},{0x10C,0x10C},{0x10E,0x10E},{0x110,0x110},{0x112,0x112},{0x114,0x114},{0x116,0x116},{0x118,0x118},{0x11A,0x11A},{0x11C,0x11C},{0x11E,0x11E},{0x120,0x120},{0x122,0x122},{0x124,0x124},{0x126,0x126},{0x128,0x128},{0x12A,0x12A},{0x12C,0x12C},{0x12E,0x12E},{0x130,0x130},{0x132,0x132},{0x134,0x134},{0x136,0x136},{0x139,0x139},{0x13B,0x13B},{0x13D,0x13D},{0x13F,0x13F},{0x141,0x141},{0x143,0x143},{0x145,0x145},{0x147,0x147},{0x14A,0x14A},{0x14C,0x14C},{0x14E,0x14E},{0x150,0x150},{0x152,0x152},{0x154,0x154},{0x156,0x156},{0x158,0x158},{0x15A,0x15A},{0x15C,0x15C},{0x15E,0x15E},{0x160,0x160},{0x162,0x162},{0x164,0x164},{0x166,0x166},{0x168,0x168},{0x16A,0x16A},{0x16C,0x16C},{0x16E,0x16E},{0x170,0x170},{0x172,0x172},{0x174,0x174},{0x176,0x176},{0x178,0x179},{0x17B,0x17B},{0x17D,0x17D},{0x181,0x182},{0x184,0x184},{0x186,0x187},{0x189,0x18B},{0x18E,0x191},{0x193,0x194},{0x196,0x198},{0x19C,0x19D},{0x19F,0x1A0},{0x1A2,0x1A2},{0x1A4,0x1A4},{0x1A6,0x1A7},{0x1A9,0x1A9},{0x1AC,0x1AC},{0x1AE,0x1AF},{0x1B1,0x1B3},{0x1B5,0x1B5},{0x1B7,0x1B8},{0x1BC,0x1BC},{0x1C4,0x1C4},{0x1C7,0x1C7},{0x1CA,0x1CA},{0x1CD,0x1CD},{0x1CF,0x1CF},{0x1D1,0x1D1},{0x1D3,0x1D3},{0x1D5,0x1D5},{0x1D7,0x1D7},{0x1D9,0x1D9},{0x1DB,0x1DB},{0x1DE,0x1DE},{0x1E0,0x1E0},{0x1E2,0x1E2},{0x1E4,0x1E4},{0x1E6,0x1E6},{0x1E8,0x1E8},{0x1EA,0x1EA},{0x1EC,0x1EC},{0x1EE,0x1EE},{0x1F1,0x1F1},{0x1F4,0x1F4},{0x1F6,0x1F8},{0x1FA,0x1FA},{0x1FC,0x1FC},{0x1FE,0x1FE},{0x200,0x200},{0x202,0x202},{0x204,0x204},{0x206,0x206},{0x208,0x208},{0x20A,0x20A},{0x20C,0x20C},{0x20E,0x20E},{0x210,0x210},{0x212,0x212},{0x214,0x214},{0x216,0x216},{0x218,0x218},{0x21A,0x21A},{0x21C,0x21C},{0x21E,0x21E},{0x222,0x222},{0x224,0x224},{0x226,0x226},{0x228,0x228},{0x22A,0x22A},{0x22C,0x22C},{0x22E,0x22E},{0x230,0x230},{0x232,0x232},{0x386,0x386},{0x388,0x38A},{0x38C,0x38C},{0x38E,0x38F},{0x391,0x3A1},{0x3A3,0x3AB},{0x3D2,0x3D4},{0x3DA,0x3DA},{0x3DC,0x3DC},{0x3DE,0x3DE},{0x3E0,0x3E0},{0x3E2,0x3E2},{0x3E4,0x3E4},{0x3E6,0x3E6},{0x3E8,0x3E8},{0x3EA,0x3EA},{0x3EC,0x3EC},{0x3EE,0x3EE},{0x3F4,0x3F4},{0x400,0x42F},{0x460,0x460},{0x462,0x462},{0x464,0x464},{0x466,0x466},{0x468,0x468},{0x46A,0x46A},{0x46C,0x46C},{0x46E,0x46E},{0x470,0x470},{0x472,0x472},{0x474,0x474},{0x476,0x476},{0x478,0x478},{0x47A,0x47A},{0x47C,0x47C},{0x47E,0x47E},{0x480,0x480},{0x48C,0x48C},{0x48E,0x48E},{0x490,0x490},{0x492,0x492},{0x494,0x494},{0x496,0x496},{0x498,0x498},{0x49A,0x49A},{0x49C,0x49C},{0x49E,0x49E},{0x4A0,0x4A0},{0x4A2,0x4A2},{0x4A4,0x4A4},{0x4A6,0x4A6},{0x4A8,0x4A8},{0x4AA,0x4AA},{0x4AC,0x4AC},{0x4AE,0x4AE},{0x4B0,0x4B0},{0x4B2,0x4B2},{0x4B4,0x4B4},{0x4B6,0x4B6},{0x4B8,0x4B8},{0x4BA,0x4BA},{0x4BC,0x4BC},{0x4BE,0x4BE},{0x4C0,0x4C1},{0x4C3,0x4C3},{0x4C7,0x4C7},{0x4CB,0x4CB},{0x4D0,0x4D0},{0x4D2,0x4D2},{0x4D4,0x4D4},{0x4D6,0x4D6},{0x4D8,0x4D8},{0x4DA,0x4DA},{0x4DC,0x4DC},{0x4DE,0x4DE},{0x4E0,0x4E0},{0x4E2,0x4E2},{0x4E4,0x4E4},{0x4E6,0x4E6},{0x4E8,0x4E8},{0x4EA,0x4EA},{0x4EC,0x4EC},{0x4EE,0x4EE},{0x4F0,0x4F0},{0x4F2,0x4F2},{0x4F4,0x4F4},{0x4F8,0x4F8},{0x531,0x556},{0x10A0,0x10C5},{0x1E00,0x1E00},{0x1E02,0x1E02},{0x1E04,0x1E04},{0x1E06,0x1E06},{0x1E08,0x1E08},{0x1E0A,0x1E0A},{0x1E0C,0x1E0C},{0x1E0E,0x1E0E},{0x1E10,0x1E10},{0x1E12,0x1E12},{0x1E14,0x1E14},{0x1E16,0x1E16},{0x1E18,0x1E18},{0x1E1A,0x1E1A},{0x1E1C,0x1E1C},{0x1E1E,0x1E1E},{0x1E20,0x1E20},{0x1E22,0x1E22},{0x1E24,0x1E24},{0x1E26,0x1E26},{0x1E28,0x1E28},{0x1E2A,0x1E2A},{0x1E2C,0x1E2C},{0x1E2E,0x1E2E},{0x1E30,0x1E30},{0x1E32,0x1E32},{0x1E34,0x1E34},{0x1E36,0x1E36},{0x1E38,0x1E38},{0x1E3A,0x1E3A},{0x1E3C,0x1E3C},{0x1E3E,0x1E3E},{0x1E40,0x1E40},{0x1E42,0x1E42},{0x1E44,0x1E44},{0x1E46,0x1E46},{0x1E48,0x1E48},{0x1E4A,0x1E4A},{0x1E4C,0x1E4C},{0x1E4E,0x1E4E},{0x1E50,0x1E50},{0x1E52,0x1E52},{0x1E54,0x1E54},{0x1E56,0x1E56},{0x1E58,0x1E58},{0x1E5A,0x1E5A},{0x1E5C,0x1E5C},{0x1E5E,0x1E5E},{0x1E60,0x1E60},{0x1E62,0x1E62},{0x1E64,0x1E64},{0x1E66,0x1E66},{0x1E68,0x1E68},{0x1E6A,0x1E6A},{0x1E6C,0x1E6C},{0x1E6E,0x1E6E},{0x1E70,0x1E70},{0x1E72,0x1E72},{0x1E74,0x1E74},{0x1E76,0x1E76},{0x1E78,0x1E78},{0x1E7A,0x1E7A},{0x1E7C,0x1E7C},{0x1E7E,0x1E7E},{0x1E80,0x1E80},{0x1E82,0x1E82},{0x1E84,0x1E84},{0x1E86,0x1E86},{0x1E88,0x1E88},{0x1E8A,0x1E8A},{0x1E8C,0x1E8C},{0x1E8E,0x1E8E},{0x1E90,0x1E90},{0x1E92,0x1E92},{0x1E94,0x1E94},{0x1EA0,0x1EA0},{0x1EA2,0x1EA2},{0x1EA4,0x1EA4},{0x1EA6,0x1EA6},{0x1EA8,0x1EA8},{0x1EAA,0x1EAA},{0x1EAC,0x1EAC},{0x1EAE,0x1EAE},{0x1EB0,0x1EB0},{0x1EB2,0x1EB2},{0x1EB4,0x1EB4},{0x1EB6,0x1EB6},{0x1EB8,0x1EB8},{0x1EBA,0x1EBA},{0x1EBC,0x1EBC},{0x1EBE,0x1EBE},{0x1EC0,0x1EC0},{0x1EC2,0x1EC2},{0x1EC4,0x1EC4},{0x1EC6,0x1EC6},{0x1EC8,0x1EC8},{0x1ECA,0x1ECA},{0x1ECC,0x1ECC},{0x1ECE,0x1ECE},{0x1ED0,0x1ED0},{0x1ED2,0x1ED2},{0x1ED4,0x1ED4},{0x1ED6,0x1ED6},{0x1ED8,0x1ED8},{0x1EDA,0x1EDA},{0x1EDC,0x1EDC},{0x1EDE,0x1EDE},{0x1EE0,0x1EE0},{0x1EE2,0x1EE2},{0x1EE4,0x1EE4},{0x1EE6,0x1EE6},{0x1EE8,0x1EE8},{0x1EEA,0x1EEA},{0x1EEC,0x1EEC},{0x1EEE,0x1EEE},{0x1EF0,0x1EF0},{0x1EF2,0x1EF2},{0x1EF4,0x1EF4},{0x1EF6,0x1EF6},{0x1EF8,0x1EF8},{0x1F08,0x1F0F},{0x1F18,0x1F1D},{0x1F28,0x1F2F},{0x1F38,0x1F3F},{0x1F48,0x1F4D},{0x1F59,0x1F59},{0x1F5B,0x1F5B},{0x1F5D,0x1F5D},{0x1F5F,0x1F5F},{0x1F68,0x1F6F},{0x1FB8,0x1FBB},{0x1FC8,0x1FCB},{0x1FD8,0x1FDB},{0x1FE8,0x1FEC},{0x1FF8,0x1FFB},{0x2102,0x2102},{0x2107,0x2107},{0x210B,0x210D},{0x2110,0x2112},{0x2115,0x2115},{0x2119,0x211D},{0x2124,0x2124},{0x2126,0x2126},{0x2128,0x2128},{0x212A,0x212D},{0x2130,0x2131},{0x2133,0x2133},{0xFF21,0xFF3A},{0x10400,0x10425},{0x1D400,0x1D419},{0x1D434,0x1D44D},{0x1D468,0x1D481},{0x1D49C,0x1D49C},{0x1D49E,0x1D49F},{0x1D4A2,0x1D4A2},{0x1D4A5,0x1D4A6},{0x1D4A9,0x1D4AC},{0x1D4AE,0x1D4B5},{0x1D4D0,0x1D4E9},{0x1D504,0x1D505},{0x1D507,0x1D50A},{0x1D50D,0x1D514},{0x1D516,0x1D51C},{0x1D538,0x1D539},{0x1D53B,0x1D53E},{0x1D540,0x1D544},{0x1D546,0x1D546},{0x1D54A,0x1D550},{0x1D56C,0x1D585},{0x1D5A0,0x1D5B9},{0x1D5D4,0x1D5ED},{0x1D608,0x1D621},{0x1D63C,0x1D655},{0x1D670,0x1D689},{0x1D6A8,0x1D6C0},{0x1D6E2,0x1D6FA},{0x1D71C,0x1D734},{0x1D756,0x1D76E},{0x1D790,0x1D7A8}};
100
+ static int LlRanges[][2]={{0x61,0x7A},{0xAA,0xAA},{0xB5,0xB5},{0xBA,0xBA},{0xDF,0xF6},{0xF8,0xFF},{0x101,0x101},{0x103,0x103},{0x105,0x105},{0x107,0x107},{0x109,0x109},{0x10B,0x10B},{0x10D,0x10D},{0x10F,0x10F},{0x111,0x111},{0x113,0x113},{0x115,0x115},{0x117,0x117},{0x119,0x119},{0x11B,0x11B},{0x11D,0x11D},{0x11F,0x11F},{0x121,0x121},{0x123,0x123},{0x125,0x125},{0x127,0x127},{0x129,0x129},{0x12B,0x12B},{0x12D,0x12D},{0x12F,0x12F},{0x131,0x131},{0x133,0x133},{0x135,0x135},{0x137,0x138},{0x13A,0x13A},{0x13C,0x13C},{0x13E,0x13E},{0x140,0x140},{0x142,0x142},{0x144,0x144},{0x146,0x146},{0x148,0x149},{0x14B,0x14B},{0x14D,0x14D},{0x14F,0x14F},{0x151,0x151},{0x153,0x153},{0x155,0x155},{0x157,0x157},{0x159,0x159},{0x15B,0x15B},{0x15D,0x15D},{0x15F,0x15F},{0x161,0x161},{0x163,0x163},{0x165,0x165},{0x167,0x167},{0x169,0x169},{0x16B,0x16B},{0x16D,0x16D},{0x16F,0x16F},{0x171,0x171},{0x173,0x173},{0x175,0x175},{0x177,0x177},{0x17A,0x17A},{0x17C,0x17C},{0x17E,0x180},{0x183,0x183},{0x185,0x185},{0x188,0x188},{0x18C,0x18D},{0x192,0x192},{0x195,0x195},{0x199,0x19B},{0x19E,0x19E},{0x1A1,0x1A1},{0x1A3,0x1A3},{0x1A5,0x1A5},{0x1A8,0x1A8},{0x1AA,0x1AB},{0x1AD,0x1AD},{0x1B0,0x1B0},{0x1B4,0x1B4},{0x1B6,0x1B6},{0x1B9,0x1BA},{0x1BD,0x1BF},{0x1C6,0x1C6},{0x1C9,0x1C9},{0x1CC,0x1CC},{0x1CE,0x1CE},{0x1D0,0x1D0},{0x1D2,0x1D2},{0x1D4,0x1D4},{0x1D6,0x1D6},{0x1D8,0x1D8},{0x1DA,0x1DA},{0x1DC,0x1DD},{0x1DF,0x1DF},{0x1E1,0x1E1},{0x1E3,0x1E3},{0x1E5,0x1E5},{0x1E7,0x1E7},{0x1E9,0x1E9},{0x1EB,0x1EB},{0x1ED,0x1ED},{0x1EF,0x1F0},{0x1F3,0x1F3},{0x1F5,0x1F5},{0x1F9,0x1F9},{0x1FB,0x1FB},{0x1FD,0x1FD},{0x1FF,0x1FF},{0x201,0x201},{0x203,0x203},{0x205,0x205},{0x207,0x207},{0x209,0x209},{0x20B,0x20B},{0x20D,0x20D},{0x20F,0x20F},{0x211,0x211},{0x213,0x213},{0x215,0x215},{0x217,0x217},{0x219,0x219},{0x21B,0x21B},{0x21D,0x21D},{0x21F,0x21F},{0x223,0x223},{0x225,0x225},{0x227,0x227},{0x229,0x229},{0x22B,0x22B},{0x22D,0x22D},{0x22F,0x22F},{0x231,0x231},{0x233,0x233},{0x250,0x2AD},{0x390,0x390},{0x3AC,0x3CE},{0x3D0,0x3D1},{0x3D5,0x3D7},{0x3DB,0x3DB},{0x3DD,0x3DD},{0x3DF,0x3DF},{0x3E1,0x3E1},{0x3E3,0x3E3},{0x3E5,0x3E5},{0x3E7,0x3E7},{0x3E9,0x3E9},{0x3EB,0x3EB},{0x3ED,0x3ED},{0x3EF,0x3F3},{0x3F5,0x3F5},{0x430,0x45F},{0x461,0x461},{0x463,0x463},{0x465,0x465},{0x467,0x467},{0x469,0x469},{0x46B,0x46B},{0x46D,0x46D},{0x46F,0x46F},{0x471,0x471},{0x473,0x473},{0x475,0x475},{0x477,0x477},{0x479,0x479},{0x47B,0x47B},{0x47D,0x47D},{0x47F,0x47F},{0x481,0x481},{0x48D,0x48D},{0x48F,0x48F},{0x491,0x491},{0x493,0x493},{0x495,0x495},{0x497,0x497},{0x499,0x499},{0x49B,0x49B},{0x49D,0x49D},{0x49F,0x49F},{0x4A1,0x4A1},{0x4A3,0x4A3},{0x4A5,0x4A5},{0x4A7,0x4A7},{0x4A9,0x4A9},{0x4AB,0x4AB},{0x4AD,0x4AD},{0x4AF,0x4AF},{0x4B1,0x4B1},{0x4B3,0x4B3},{0x4B5,0x4B5},{0x4B7,0x4B7},{0x4B9,0x4B9},{0x4BB,0x4BB},{0x4BD,0x4BD},{0x4BF,0x4BF},{0x4C2,0x4C2},{0x4C4,0x4C4},{0x4C8,0x4C8},{0x4CC,0x4CC},{0x4D1,0x4D1},{0x4D3,0x4D3},{0x4D5,0x4D5},{0x4D7,0x4D7},{0x4D9,0x4D9},{0x4DB,0x4DB},{0x4DD,0x4DD},{0x4DF,0x4DF},{0x4E1,0x4E1},{0x4E3,0x4E3},{0x4E5,0x4E5},{0x4E7,0x4E7},{0x4E9,0x4E9},{0x4EB,0x4EB},{0x4ED,0x4ED},{0x4EF,0x4EF},{0x4F1,0x4F1},{0x4F3,0x4F3},{0x4F5,0x4F5},{0x4F9,0x4F9},{0x561,0x587},{0x1E01,0x1E01},{0x1E03,0x1E03},{0x1E05,0x1E05},{0x1E07,0x1E07},{0x1E09,0x1E09},{0x1E0B,0x1E0B},{0x1E0D,0x1E0D},{0x1E0F,0x1E0F},{0x1E11,0x1E11},{0x1E13,0x1E13},{0x1E15,0x1E15},{0x1E17,0x1E17},{0x1E19,0x1E19},{0x1E1B,0x1E1B},{0x1E1D,0x1E1D},{0x1E1F,0x1E1F},{0x1E21,0x1E21},{0x1E23,0x1E23},{0x1E25,0x1E25},{0x1E27,0x1E27},{0x1E29,0x1E29},{0x1E2B,0x1E2B},{0x1E2D,0x1E2D},{0x1E2F,0x1E2F},{0x1E31,0x1E31},{0x1E33,0x1E33},{0x1E35,0x1E35},{0x1E37,0x1E37},{0x1E39,0x1E39},{0x1E3B,0x1E3B},{0x1E3D,0x1E3D},{0x1E3F,0x1E3F},{0x1E41,0x1E41},{0x1E43,0x1E43},{0x1E45,0x1E45},{0x1E47,0x1E47},{0x1E49,0x1E49},{0x1E4B,0x1E4B},{0x1E4D,0x1E4D},{0x1E4F,0x1E4F},{0x1E51,0x1E51},{0x1E53,0x1E53},{0x1E55,0x1E55},{0x1E57,0x1E57},{0x1E59,0x1E59},{0x1E5B,0x1E5B},{0x1E5D,0x1E5D},{0x1E5F,0x1E5F},{0x1E61,0x1E61},{0x1E63,0x1E63},{0x1E65,0x1E65},{0x1E67,0x1E67},{0x1E69,0x1E69},{0x1E6B,0x1E6B},{0x1E6D,0x1E6D},{0x1E6F,0x1E6F},{0x1E71,0x1E71},{0x1E73,0x1E73},{0x1E75,0x1E75},{0x1E77,0x1E77},{0x1E79,0x1E79},{0x1E7B,0x1E7B},{0x1E7D,0x1E7D},{0x1E7F,0x1E7F},{0x1E81,0x1E81},{0x1E83,0x1E83},{0x1E85,0x1E85},{0x1E87,0x1E87},{0x1E89,0x1E89},{0x1E8B,0x1E8B},{0x1E8D,0x1E8D},{0x1E8F,0x1E8F},{0x1E91,0x1E91},{0x1E93,0x1E93},{0x1E95,0x1E9B},{0x1EA1,0x1EA1},{0x1EA3,0x1EA3},{0x1EA5,0x1EA5},{0x1EA7,0x1EA7},{0x1EA9,0x1EA9},{0x1EAB,0x1EAB},{0x1EAD,0x1EAD},{0x1EAF,0x1EAF},{0x1EB1,0x1EB1},{0x1EB3,0x1EB3},{0x1EB5,0x1EB5},{0x1EB7,0x1EB7},{0x1EB9,0x1EB9},{0x1EBB,0x1EBB},{0x1EBD,0x1EBD},{0x1EBF,0x1EBF},{0x1EC1,0x1EC1},{0x1EC3,0x1EC3},{0x1EC5,0x1EC5},{0x1EC7,0x1EC7},{0x1EC9,0x1EC9},{0x1ECB,0x1ECB},{0x1ECD,0x1ECD},{0x1ECF,0x1ECF},{0x1ED1,0x1ED1},{0x1ED3,0x1ED3},{0x1ED5,0x1ED5},{0x1ED7,0x1ED7},{0x1ED9,0x1ED9},{0x1EDB,0x1EDB},{0x1EDD,0x1EDD},{0x1EDF,0x1EDF},{0x1EE1,0x1EE1},{0x1EE3,0x1EE3},{0x1EE5,0x1EE5},{0x1EE7,0x1EE7},{0x1EE9,0x1EE9},{0x1EEB,0x1EEB},{0x1EED,0x1EED},{0x1EEF,0x1EEF},{0x1EF1,0x1EF1},{0x1EF3,0x1EF3},{0x1EF5,0x1EF5},{0x1EF7,0x1EF7},{0x1EF9,0x1EF9},{0x1F00,0x1F07},{0x1F10,0x1F15},{0x1F20,0x1F27},{0x1F30,0x1F37},{0x1F40,0x1F45},{0x1F50,0x1F57},{0x1F60,0x1F67},{0x1F70,0x1F7D},{0x1F80,0x1F87},{0x1F90,0x1F97},{0x1FA0,0x1FA7},{0x1FB0,0x1FB4},{0x1FB6,0x1FB7},{0x1FBE,0x1FBE},{0x1FC2,0x1FC4},{0x1FC6,0x1FC7},{0x1FD0,0x1FD3},{0x1FD6,0x1FD7},{0x1FE0,0x1FE7},{0x1FF2,0x1FF4},{0x1FF6,0x1FF7},{0x207F,0x207F},{0x210A,0x210A},{0x210E,0x210F},{0x2113,0x2113},{0x212F,0x212F},{0x2134,0x2134},{0x2139,0x2139},{0xFB00,0xFB06},{0xFB13,0xFB17},{0xFF41,0xFF5A},{0x10428,0x1044D},{0x1D41A,0x1D433},{0x1D44E,0x1D454},{0x1D456,0x1D467},{0x1D482,0x1D49B},{0x1D4B6,0x1D4B9},{0x1D4BB,0x1D4BB},{0x1D4BD,0x1D4C0},{0x1D4C2,0x1D4C3},{0x1D4C5,0x1D4CF},{0x1D4EA,0x1D503},{0x1D51E,0x1D537},{0x1D552,0x1D56B},{0x1D586,0x1D59F},{0x1D5BA,0x1D5D3},{0x1D5EE,0x1D607},{0x1D622,0x1D63B},{0x1D656,0x1D66F},{0x1D68A,0x1D6A3},{0x1D6C2,0x1D6DA},{0x1D6DC,0x1D6E1},{0x1D6FC,0x1D714},{0x1D716,0x1D71B},{0x1D736,0x1D74E},{0x1D750,0x1D755},{0x1D770,0x1D788},{0x1D78A,0x1D78F},{0x1D7AA,0x1D7C2},{0x1D7C4,0x1D7C9}};
101
+ static int LtRanges[][2]={{0x1C5,0x1C5},{0x1C8,0x1C8},{0x1CB,0x1CB},{0x1F2,0x1F2},{0x1F88,0x1F8F},{0x1F98,0x1F9F},{0x1FA8,0x1FAF},{0x1FBC,0x1FBC},{0x1FCC,0x1FCC},{0x1FFC,0x1FFC}};
102
+ static int LmRanges[][2]={{0x2B0,0x2B8},{0x2BB,0x2C1},{0x2D0,0x2D1},{0x2E0,0x2E4},{0x2EE,0x2EE},{0x37A,0x37A},{0x559,0x559},{0x640,0x640},{0x6E5,0x6E6},{0xE46,0xE46},{0xEC6,0xEC6},{0x1843,0x1843},{0x3005,0x3005},{0x3031,0x3035},{0x309D,0x309E},{0x30FC,0x30FE},{0xFF70,0xFF70},{0xFF9E,0xFF9F}};
103
+ static int LoRanges[][2]={{0x1BB,0x1BB},{0x1C0,0x1C3},{0x5D0,0x5EA},{0x5F0,0x5F2},{0x621,0x63A},{0x641,0x64A},{0x671,0x6D3},{0x6D5,0x6D5},{0x6FA,0x6FC},{0x710,0x710},{0x712,0x72C},{0x780,0x7A5},{0x905,0x939},{0x93D,0x93D},{0x950,0x950},{0x958,0x961},{0x985,0x98C},{0x98F,0x990},{0x993,0x9A8},{0x9AA,0x9B0},{0x9B2,0x9B2},{0x9B6,0x9B9},{0x9DC,0x9DD},{0x9DF,0x9E1},{0x9F0,0x9F1},{0xA05,0xA0A},{0xA0F,0xA10},{0xA13,0xA28},{0xA2A,0xA30},{0xA32,0xA33},{0xA35,0xA36},{0xA38,0xA39},{0xA59,0xA5C},{0xA5E,0xA5E},{0xA72,0xA74},{0xA85,0xA8B},{0xA8D,0xA8D},{0xA8F,0xA91},{0xA93,0xAA8},{0xAAA,0xAB0},{0xAB2,0xAB3},{0xAB5,0xAB9},{0xABD,0xABD},{0xAD0,0xAD0},{0xAE0,0xAE0},{0xB05,0xB0C},{0xB0F,0xB10},{0xB13,0xB28},{0xB2A,0xB30},{0xB32,0xB33},{0xB36,0xB39},{0xB3D,0xB3D},{0xB5C,0xB5D},{0xB5F,0xB61},{0xB85,0xB8A},{0xB8E,0xB90},{0xB92,0xB95},{0xB99,0xB9A},{0xB9C,0xB9C},{0xB9E,0xB9F},{0xBA3,0xBA4},{0xBA8,0xBAA},{0xBAE,0xBB5},{0xBB7,0xBB9},{0xC05,0xC0C},{0xC0E,0xC10},{0xC12,0xC28},{0xC2A,0xC33},{0xC35,0xC39},{0xC60,0xC61},{0xC85,0xC8C},{0xC8E,0xC90},{0xC92,0xCA8},{0xCAA,0xCB3},{0xCB5,0xCB9},{0xCDE,0xCDE},{0xCE0,0xCE1},{0xD05,0xD0C},{0xD0E,0xD10},{0xD12,0xD28},{0xD2A,0xD39},{0xD60,0xD61},{0xD85,0xD96},{0xD9A,0xDB1},{0xDB3,0xDBB},{0xDBD,0xDBD},{0xDC0,0xDC6},{0xE01,0xE30},{0xE32,0xE33},{0xE40,0xE45},{0xE81,0xE82},{0xE84,0xE84},{0xE87,0xE88},{0xE8A,0xE8A},{0xE8D,0xE8D},{0xE94,0xE97},{0xE99,0xE9F},{0xEA1,0xEA3},{0xEA5,0xEA5},{0xEA7,0xEA7},{0xEAA,0xEAB},{0xEAD,0xEB0},{0xEB2,0xEB3},{0xEBD,0xEBD},{0xEC0,0xEC4},{0xEDC,0xEDD},{0xF00,0xF00},{0xF40,0xF47},{0xF49,0xF6A},{0xF88,0xF8B},{0x1000,0x1021},{0x1023,0x1027},{0x1029,0x102A},{0x1050,0x1055},{0x10D0,0x10F6},{0x1100,0x1159},{0x115F,0x11A2},{0x11A8,0x11F9},{0x1200,0x1206},{0x1208,0x1246},{0x1248,0x1248},{0x124A,0x124D},{0x1250,0x1256},{0x1258,0x1258},{0x125A,0x125D},{0x1260,0x1286},{0x1288,0x1288},{0x128A,0x128D},{0x1290,0x12AE},{0x12B0,0x12B0},{0x12B2,0x12B5},{0x12B8,0x12BE},{0x12C0,0x12C0},{0x12C2,0x12C5},{0x12C8,0x12CE},{0x12D0,0x12D6},{0x12D8,0x12EE},{0x12F0,0x130E},{0x1310,0x1310},{0x1312,0x1315},{0x1318,0x131E},{0x1320,0x1346},{0x1348,0x135A},{0x13A0,0x13F4},{0x1401,0x166C},{0x166F,0x1676},{0x1681,0x169A},{0x16A0,0x16EA},{0x1780,0x17B3},{0x1820,0x1842},{0x1844,0x1877},{0x1880,0x18A8},{0x2135,0x2138},{0x3006,0x3006},{0x3041,0x3094},{0x30A1,0x30FA},{0x3105,0x312C},{0x3131,0x318E},{0x31A0,0x31B7},{0x3400,0x4DB5},{0x4E00,0x9FA5},{0xA000,0xA48C},{0xAC00,0xD7A3},{0xF900,0xFA2D},{0xFB1D,0xFB1D},{0xFB1F,0xFB28},{0xFB2A,0xFB36},{0xFB38,0xFB3C},{0xFB3E,0xFB3E},{0xFB40,0xFB41},{0xFB43,0xFB44},{0xFB46,0xFBB1},{0xFBD3,0xFD3D},{0xFD50,0xFD8F},{0xFD92,0xFDC7},{0xFDF0,0xFDFB},{0xFE70,0xFE72},{0xFE74,0xFE74},{0xFE76,0xFEFC},{0xFF66,0xFF6F},{0xFF71,0xFF9D},{0xFFA0,0xFFBE},{0xFFC2,0xFFC7},{0xFFCA,0xFFCF},{0xFFD2,0xFFD7},{0xFFDA,0xFFDC},{0x10300,0x1031E},{0x10330,0x10349},{0x20000,0x2A6D6},{0x2F800,0x2FA1D}};
104
+ static int MnRanges[][2]={{0x300,0x34E},{0x360,0x362},{0x483,0x486},{0x591,0x5A1},{0x5A3,0x5B9},{0x5BB,0x5BD},{0x5BF,0x5BF},{0x5C1,0x5C2},{0x5C4,0x5C4},{0x64B,0x655},{0x670,0x670},{0x6D6,0x6DC},{0x6DF,0x6E4},{0x6E7,0x6E8},{0x6EA,0x6ED},{0x711,0x711},{0x730,0x74A},{0x7A6,0x7B0},{0x901,0x902},{0x93C,0x93C},{0x941,0x948},{0x94D,0x94D},{0x951,0x954},{0x962,0x963},{0x981,0x981},{0x9BC,0x9BC},{0x9C1,0x9C4},{0x9CD,0x9CD},{0x9E2,0x9E3},{0xA02,0xA02},{0xA3C,0xA3C},{0xA41,0xA42},{0xA47,0xA48},{0xA4B,0xA4D},{0xA70,0xA71},{0xA81,0xA82},{0xABC,0xABC},{0xAC1,0xAC5},{0xAC7,0xAC8},{0xACD,0xACD},{0xB01,0xB01},{0xB3C,0xB3C},{0xB3F,0xB3F},{0xB41,0xB43},{0xB4D,0xB4D},{0xB56,0xB56},{0xB82,0xB82},{0xBC0,0xBC0},{0xBCD,0xBCD},{0xC3E,0xC40},{0xC46,0xC48},{0xC4A,0xC4D},{0xC55,0xC56},{0xCBF,0xCBF},{0xCC6,0xCC6},{0xCCC,0xCCD},{0xD41,0xD43},{0xD4D,0xD4D},{0xDCA,0xDCA},{0xDD2,0xDD4},{0xDD6,0xDD6},{0xE31,0xE31},{0xE34,0xE3A},{0xE47,0xE4E},{0xEB1,0xEB1},{0xEB4,0xEB9},{0xEBB,0xEBC},{0xEC8,0xECD},{0xF18,0xF19},{0xF35,0xF35},{0xF37,0xF37},{0xF39,0xF39},{0xF71,0xF7E},{0xF80,0xF84},{0xF86,0xF87},{0xF90,0xF97},{0xF99,0xFBC},{0xFC6,0xFC6},{0x102D,0x1030},{0x1032,0x1032},{0x1036,0x1037},{0x1039,0x1039},{0x1058,0x1059},{0x17B7,0x17BD},{0x17C6,0x17C6},{0x17C9,0x17D3},{0x18A9,0x18A9},{0x20D0,0x20DC},{0x20E1,0x20E1},{0x302A,0x302F},{0x3099,0x309A},{0xFB1E,0xFB1E},{0xFE20,0xFE23},{0x1D167,0x1D169},{0x1D17B,0x1D182},{0x1D185,0x1D18B},{0x1D1AA,0x1D1AD}};
105
+ static int McRanges[][2]={{0x903,0x903},{0x93E,0x940},{0x949,0x94C},{0x982,0x983},{0x9BE,0x9C0},{0x9C7,0x9C8},{0x9CB,0x9CC},{0x9D7,0x9D7},{0xA3E,0xA40},{0xA83,0xA83},{0xABE,0xAC0},{0xAC9,0xAC9},{0xACB,0xACC},{0xB02,0xB03},{0xB3E,0xB3E},{0xB40,0xB40},{0xB47,0xB48},{0xB4B,0xB4C},{0xB57,0xB57},{0xB83,0xB83},{0xBBE,0xBBF},{0xBC1,0xBC2},{0xBC6,0xBC8},{0xBCA,0xBCC},{0xBD7,0xBD7},{0xC01,0xC03},{0xC41,0xC44},{0xC82,0xC83},{0xCBE,0xCBE},{0xCC0,0xCC4},{0xCC7,0xCC8},{0xCCA,0xCCB},{0xCD5,0xCD6},{0xD02,0xD03},{0xD3E,0xD40},{0xD46,0xD48},{0xD4A,0xD4C},{0xD57,0xD57},{0xD82,0xD83},{0xDCF,0xDD1},{0xDD8,0xDDF},{0xDF2,0xDF3},{0xF3E,0xF3F},{0xF7F,0xF7F},{0x102C,0x102C},{0x1031,0x1031},{0x1038,0x1038},{0x1056,0x1057},{0x17B4,0x17B6},{0x17BE,0x17C5},{0x17C7,0x17C8},{0x1D165,0x1D166},{0x1D16D,0x1D172}};
106
+ static int MeRanges[][2]={{0x488,0x489},{0x6DD,0x6DE},{0x20DD,0x20E0},{0x20E2,0x20E3}};
107
+ static int NdRanges[][2]={{0x30,0x39},{0x660,0x669},{0x6F0,0x6F9},{0x966,0x96F},{0x9E6,0x9EF},{0xA66,0xA6F},{0xAE6,0xAEF},{0xB66,0xB6F},{0xBE7,0xBEF},{0xC66,0xC6F},{0xCE6,0xCEF},{0xD66,0xD6F},{0xE50,0xE59},{0xED0,0xED9},{0xF20,0xF29},{0x1040,0x1049},{0x1369,0x1371},{0x17E0,0x17E9},{0x1810,0x1819},{0xFF10,0xFF19},{0x1D7CE,0x1D7FF}};
108
+ static int NlRanges[][2]={{0x16EE,0x16F0},{0x2160,0x2183},{0x3007,0x3007},{0x3021,0x3029},{0x3038,0x303A},{0x1034A,0x1034A}};
109
+ static int NoRanges[][2]={{0xB2,0xB3},{0xB9,0xB9},{0xBC,0xBE},{0x9F4,0x9F9},{0xBF0,0xBF2},{0xF2A,0xF33},{0x1372,0x137C},{0x2070,0x2070},{0x2074,0x2079},{0x2080,0x2089},{0x2153,0x215F},{0x2460,0x249B},{0x24EA,0x24EA},{0x2776,0x2793},{0x3192,0x3195},{0x3220,0x3229},{0x3280,0x3289},{0x10320,0x10323}};
110
+ static int PcRanges[][2]={{0x5F,0x5F},{0x203F,0x2040},{0x30FB,0x30FB},{0xFE33,0xFE34},{0xFE4D,0xFE4F},{0xFF3F,0xFF3F},{0xFF65,0xFF65}};
111
+ static int PdRanges[][2]={{0x2D,0x2D},{0xAD,0xAD},{0x58A,0x58A},{0x1806,0x1806},{0x2010,0x2015},{0x301C,0x301C},{0x3030,0x3030},{0xFE31,0xFE32},{0xFE58,0xFE58},{0xFE63,0xFE63},{0xFF0D,0xFF0D}};
112
+ static int PsRanges[][2]={{0x28,0x28},{0x5B,0x5B},{0x7B,0x7B},{0xF3A,0xF3A},{0xF3C,0xF3C},{0x169B,0x169B},{0x201A,0x201A},{0x201E,0x201E},{0x2045,0x2045},{0x207D,0x207D},{0x208D,0x208D},{0x2329,0x2329},{0x3008,0x3008},{0x300A,0x300A},{0x300C,0x300C},{0x300E,0x300E},{0x3010,0x3010},{0x3014,0x3014},{0x3016,0x3016},{0x3018,0x3018},{0x301A,0x301A},{0x301D,0x301D},{0xFD3E,0xFD3E},{0xFE35,0xFE35},{0xFE37,0xFE37},{0xFE39,0xFE39},{0xFE3B,0xFE3B},{0xFE3D,0xFE3D},{0xFE3F,0xFE3F},{0xFE41,0xFE41},{0xFE43,0xFE43},{0xFE59,0xFE59},{0xFE5B,0xFE5B},{0xFE5D,0xFE5D},{0xFF08,0xFF08},{0xFF3B,0xFF3B},{0xFF5B,0xFF5B},{0xFF62,0xFF62}};
113
+ static int PeRanges[][2]={{0x29,0x29},{0x5D,0x5D},{0x7D,0x7D},{0xF3B,0xF3B},{0xF3D,0xF3D},{0x169C,0x169C},{0x2046,0x2046},{0x207E,0x207E},{0x208E,0x208E},{0x232A,0x232A},{0x3009,0x3009},{0x300B,0x300B},{0x300D,0x300D},{0x300F,0x300F},{0x3011,0x3011},{0x3015,0x3015},{0x3017,0x3017},{0x3019,0x3019},{0x301B,0x301B},{0x301E,0x301F},{0xFD3F,0xFD3F},{0xFE36,0xFE36},{0xFE38,0xFE38},{0xFE3A,0xFE3A},{0xFE3C,0xFE3C},{0xFE3E,0xFE3E},{0xFE40,0xFE40},{0xFE42,0xFE42},{0xFE44,0xFE44},{0xFE5A,0xFE5A},{0xFE5C,0xFE5C},{0xFE5E,0xFE5E},{0xFF09,0xFF09},{0xFF3D,0xFF3D},{0xFF5D,0xFF5D},{0xFF63,0xFF63}};
114
+ static int PiRanges[][2]={{0xAB,0xAB},{0x2018,0x2018},{0x201B,0x201C},{0x201F,0x201F},{0x2039,0x2039}};
115
+ static int PfRanges[][2]={{0xBB,0xBB},{0x2019,0x2019},{0x201D,0x201D},{0x203A,0x203A}};
116
+ static int PoRanges[][2]={{0x21,0x23},{0x25,0x27},{0x2A,0x2A},{0x2C,0x2C},{0x2E,0x2F},{0x3A,0x3B},{0x3F,0x40},{0x5C,0x5C},{0xA1,0xA1},{0xB7,0xB7},{0xBF,0xBF},{0x37E,0x37E},{0x387,0x387},{0x55A,0x55F},{0x589,0x589},{0x5BE,0x5BE},{0x5C0,0x5C0},{0x5C3,0x5C3},{0x5F3,0x5F4},{0x60C,0x60C},{0x61B,0x61B},{0x61F,0x61F},{0x66A,0x66D},{0x6D4,0x6D4},{0x700,0x70D},{0x964,0x965},{0x970,0x970},{0xDF4,0xDF4},{0xE4F,0xE4F},{0xE5A,0xE5B},{0xF04,0xF12},{0xF85,0xF85},{0x104A,0x104F},{0x10FB,0x10FB},{0x1361,0x1368},{0x166D,0x166E},{0x16EB,0x16ED},{0x17D4,0x17DA},{0x17DC,0x17DC},{0x1800,0x1805},{0x1807,0x180A},{0x2016,0x2017},{0x2020,0x2027},{0x2030,0x2038},{0x203B,0x203E},{0x2041,0x2043},{0x2048,0x204D},{0x3001,0x3003},{0xFE30,0xFE30},{0xFE49,0xFE4C},{0xFE50,0xFE52},{0xFE54,0xFE57},{0xFE5F,0xFE61},{0xFE68,0xFE68},{0xFE6A,0xFE6B},{0xFF01,0xFF03},{0xFF05,0xFF07},{0xFF0A,0xFF0A},{0xFF0C,0xFF0C},{0xFF0E,0xFF0F},{0xFF1A,0xFF1B},{0xFF1F,0xFF20},{0xFF3C,0xFF3C},{0xFF61,0xFF61},{0xFF64,0xFF64}};
117
+ static int ZsRanges[][2]={{0x20,0x20},{0xA0,0xA0},{0x1680,0x1680},{0x2000,0x200B},{0x202F,0x202F},{0x3000,0x3000}};
118
+ static int ZlRanges[][2]={{0x2028,0x2028}};
119
+ static int ZpRanges[][2]={{0x2029,0x2029}};
120
+ static int SmRanges[][2]={{0x2B,0x2B},{0x3C,0x3E},{0x7C,0x7C},{0x7E,0x7E},{0xAC,0xAC},{0xB1,0xB1},{0xD7,0xD7},{0xF7,0xF7},{0x2044,0x2044},{0x207A,0x207C},{0x208A,0x208C},{0x2190,0x2194},{0x219A,0x219B},{0x21A0,0x21A0},{0x21A3,0x21A3},{0x21A6,0x21A6},{0x21AE,0x21AE},{0x21CE,0x21CF},{0x21D2,0x21D2},{0x21D4,0x21D4},{0x2200,0x22F1},{0x2308,0x230B},{0x2320,0x2321},{0x25B7,0x25B7},{0x25C1,0x25C1},{0x266F,0x266F},{0xFB29,0xFB29},{0xFE62,0xFE62},{0xFE64,0xFE66},{0xFF0B,0xFF0B},{0xFF1C,0xFF1E},{0xFF5C,0xFF5C},{0xFF5E,0xFF5E},{0xFFE2,0xFFE2},{0xFFE9,0xFFEC},{0x1D6C1,0x1D6C1},{0x1D6DB,0x1D6DB},{0x1D6FB,0x1D6FB},{0x1D715,0x1D715},{0x1D735,0x1D735},{0x1D74F,0x1D74F},{0x1D76F,0x1D76F},{0x1D789,0x1D789},{0x1D7A9,0x1D7A9},{0x1D7C3,0x1D7C3}};
121
+ static int ScRanges[][2]={{0x24,0x24},{0xA2,0xA5},{0x9F2,0x9F3},{0xE3F,0xE3F},{0x17DB,0x17DB},{0x20A0,0x20AF},{0xFE69,0xFE69},{0xFF04,0xFF04},{0xFFE0,0xFFE1},{0xFFE5,0xFFE6}};
122
+ static int SkRanges[][2]={{0x5E,0x5E},{0x60,0x60},{0xA8,0xA8},{0xAF,0xAF},{0xB4,0xB4},{0xB8,0xB8},{0x2B9,0x2BA},{0x2C2,0x2CF},{0x2D2,0x2DF},{0x2E5,0x2ED},{0x374,0x375},{0x384,0x385},{0x1FBD,0x1FBD},{0x1FBF,0x1FC1},{0x1FCD,0x1FCF},{0x1FDD,0x1FDF},{0x1FED,0x1FEF},{0x1FFD,0x1FFE},{0x309B,0x309C},{0xFF3E,0xFF3E},{0xFF40,0xFF40},{0xFFE3,0xFFE3}};
123
+ static int SoRanges[][2]={{0xA6,0xA7},{0xA9,0xA9},{0xAE,0xAE},{0xB0,0xB0},{0xB6,0xB6},{0x482,0x482},{0x6E9,0x6E9},{0x6FD,0x6FE},{0x9FA,0x9FA},{0xB70,0xB70},{0xF01,0xF03},{0xF13,0xF17},{0xF1A,0xF1F},{0xF34,0xF34},{0xF36,0xF36},{0xF38,0xF38},{0xFBE,0xFC5},{0xFC7,0xFCC},{0xFCF,0xFCF},{0x2100,0x2101},{0x2103,0x2106},{0x2108,0x2109},{0x2114,0x2114},{0x2116,0x2118},{0x211E,0x2123},{0x2125,0x2125},{0x2127,0x2127},{0x2129,0x2129},{0x212E,0x212E},{0x2132,0x2132},{0x213A,0x213A},{0x2195,0x2199},{0x219C,0x219F},{0x21A1,0x21A2},{0x21A4,0x21A5},{0x21A7,0x21AD},{0x21AF,0x21CD},{0x21D0,0x21D1},{0x21D3,0x21D3},{0x21D5,0x21F3},{0x2300,0x2307},{0x230C,0x231F},{0x2322,0x2328},{0x232B,0x237B},{0x237D,0x239A},{0x2400,0x2426},{0x2440,0x244A},{0x249C,0x24E9},{0x2500,0x2595},{0x25A0,0x25B6},{0x25B8,0x25C0},{0x25C2,0x25F7},{0x2600,0x2613},{0x2619,0x266E},{0x2670,0x2671},{0x2701,0x2704},{0x2706,0x2709},{0x270C,0x2727},{0x2729,0x274B},{0x274D,0x274D},{0x274F,0x2752},{0x2756,0x2756},{0x2758,0x275E},{0x2761,0x2767},{0x2794,0x2794},{0x2798,0x27AF},{0x27B1,0x27BE},{0x2800,0x28FF},{0x2E80,0x2E99},{0x2E9B,0x2EF3},{0x2F00,0x2FD5},{0x2FF0,0x2FFB},{0x3004,0x3004},{0x3012,0x3013},{0x3020,0x3020},{0x3036,0x3037},{0x303E,0x303F},{0x3190,0x3191},{0x3196,0x319F},{0x3200,0x321C},{0x322A,0x3243},{0x3260,0x327B},{0x327F,0x327F},{0x328A,0x32B0},{0x32C0,0x32CB},{0x32D0,0x32FE},{0x3300,0x3376},{0x337B,0x33DD},{0x33E0,0x33FE},{0xA490,0xA4A1},{0xA4A4,0xA4B3},{0xA4B5,0xA4C0},{0xA4C2,0xA4C4},{0xA4C6,0xA4C6},{0xFFE4,0xFFE4},{0xFFE8,0xFFE8},{0xFFED,0xFFEE},{0xFFFC,0xFFFD},{0x1D000,0x1D0F5},{0x1D100,0x1D126},{0x1D12A,0x1D164},{0x1D16A,0x1D16C},{0x1D183,0x1D184},{0x1D18C,0x1D1A9},{0x1D1AE,0x1D1DD}};
124
+ static int CcRanges[][2]={{0x0,0x1F},{0x7F,0x9F}};
125
+ static int CfRanges[][2]={{0x70F,0x70F},{0x180B,0x180E},{0x200C,0x200F},{0x202A,0x202E},{0x206A,0x206F},{0xFEFF,0xFEFF},{0xFFF9,0xFFFB},{0x1D173,0x1D17A},{0xE0001,0xE0001},{0xE0020,0xE007F}};
126
+ static int CoRanges[][2]={{0xE000,0xF8FF},{0xF0000,0xFFFFD},{0x100000,0x10FFFD}};
@@ -0,0 +1,262 @@
1
+ /* $Id: rx_cls_u.c,v 1.2 2003/12/21 18:57:34 dvd Exp $ */
2
+
3
+ #define CLS_U_ 0
4
+ #define CLS_U_C 1
5
+ #define CLS_U_Cc 2
6
+ #define CLS_U_Cf 3
7
+ #define CLS_U_Co 4
8
+ #define CLS_U_IsAlphabeticPresentationForms 5
9
+ #define CLS_U_IsArabic 6
10
+ #define CLS_U_IsArabicPresentationForms_A 7
11
+ #define CLS_U_IsArabicPresentationForms_B 8
12
+ #define CLS_U_IsArmenian 9
13
+ #define CLS_U_IsArrows 10
14
+ #define CLS_U_IsBasicLatin 11
15
+ #define CLS_U_IsBengali 12
16
+ #define CLS_U_IsBlockElements 13
17
+ #define CLS_U_IsBopomofo 14
18
+ #define CLS_U_IsBopomofoExtended 15
19
+ #define CLS_U_IsBoxDrawing 16
20
+ #define CLS_U_IsBraillePatterns 17
21
+ #define CLS_U_IsByzantineMusicalSymbols 18
22
+ #define CLS_U_IsCJKCompatibility 19
23
+ #define CLS_U_IsCJKCompatibilityForms 20
24
+ #define CLS_U_IsCJKCompatibilityIdeographs 21
25
+ #define CLS_U_IsCJKCompatibilityIdeographsSupplement 22
26
+ #define CLS_U_IsCJKRadicalsSupplement 23
27
+ #define CLS_U_IsCJKSymbolsandPunctuation 24
28
+ #define CLS_U_IsCJKUnifiedIdeographs 25
29
+ #define CLS_U_IsCJKUnifiedIdeographsExtensionA 26
30
+ #define CLS_U_IsCJKUnifiedIdeographsExtensionB 27
31
+ #define CLS_U_IsCherokee 28
32
+ #define CLS_U_IsCombiningDiacriticalMarks 29
33
+ #define CLS_U_IsCombiningHalfMarks 30
34
+ #define CLS_U_IsCombiningMarksforSymbols 31
35
+ #define CLS_U_IsControlPictures 32
36
+ #define CLS_U_IsCurrencySymbols 33
37
+ #define CLS_U_IsCyrillic 34
38
+ #define CLS_U_IsDeseret 35
39
+ #define CLS_U_IsDevanagari 36
40
+ #define CLS_U_IsDingbats 37
41
+ #define CLS_U_IsEnclosedAlphanumerics 38
42
+ #define CLS_U_IsEnclosedCJKLettersandMonths 39
43
+ #define CLS_U_IsEthiopic 40
44
+ #define CLS_U_IsGeneralPunctuation 41
45
+ #define CLS_U_IsGeometricShapes 42
46
+ #define CLS_U_IsGeorgian 43
47
+ #define CLS_U_IsGothic 44
48
+ #define CLS_U_IsGreek 45
49
+ #define CLS_U_IsGreekExtended 46
50
+ #define CLS_U_IsGujarati 47
51
+ #define CLS_U_IsGurmukhi 48
52
+ #define CLS_U_IsHalfwidthandFullwidthForms 49
53
+ #define CLS_U_IsHangulCompatibilityJamo 50
54
+ #define CLS_U_IsHangulJamo 51
55
+ #define CLS_U_IsHangulSyllables 52
56
+ #define CLS_U_IsHebrew 53
57
+ #define CLS_U_IsHiragana 54
58
+ #define CLS_U_IsIPAExtensions 55
59
+ #define CLS_U_IsIdeographicDescriptionCharacters 56
60
+ #define CLS_U_IsKanbun 57
61
+ #define CLS_U_IsKangxiRadicals 58
62
+ #define CLS_U_IsKannada 59
63
+ #define CLS_U_IsKatakana 60
64
+ #define CLS_U_IsKhmer 61
65
+ #define CLS_U_IsLao 62
66
+ #define CLS_U_IsLatin_1Supplement 63
67
+ #define CLS_U_IsLatinExtended_A 64
68
+ #define CLS_U_IsLatinExtended_B 65
69
+ #define CLS_U_IsLatinExtendedAdditional 66
70
+ #define CLS_U_IsLetterlikeSymbols 67
71
+ #define CLS_U_IsMalayalam 68
72
+ #define CLS_U_IsMathematicalAlphanumericSymbols 69
73
+ #define CLS_U_IsMathematicalOperators 70
74
+ #define CLS_U_IsMiscellaneousSymbols 71
75
+ #define CLS_U_IsMiscellaneousTechnical 72
76
+ #define CLS_U_IsMongolian 73
77
+ #define CLS_U_IsMusicalSymbols 74
78
+ #define CLS_U_IsMyanmar 75
79
+ #define CLS_U_IsNumberForms 76
80
+ #define CLS_U_IsOgham 77
81
+ #define CLS_U_IsOldItalic 78
82
+ #define CLS_U_IsOpticalCharacterRecognition 79
83
+ #define CLS_U_IsOriya 80
84
+ #define CLS_U_IsPrivateUse 81
85
+ #define CLS_U_IsRunic 82
86
+ #define CLS_U_IsSinhala 83
87
+ #define CLS_U_IsSmallFormVariants 84
88
+ #define CLS_U_IsSpacingModifierLetters 85
89
+ #define CLS_U_IsSpecials 86
90
+ #define CLS_U_IsSuperscriptsandSubscripts 87
91
+ #define CLS_U_IsSyriac 88
92
+ #define CLS_U_IsTags 89
93
+ #define CLS_U_IsTamil 90
94
+ #define CLS_U_IsTelugu 91
95
+ #define CLS_U_IsThaana 92
96
+ #define CLS_U_IsThai 93
97
+ #define CLS_U_IsTibetan 94
98
+ #define CLS_U_IsUnifiedCanadianAboriginalSyllabics 95
99
+ #define CLS_U_IsYiRadicals 96
100
+ #define CLS_U_IsYiSyllables 97
101
+ #define CLS_U_L 98
102
+ #define CLS_U_Ll 99
103
+ #define CLS_U_Lm 100
104
+ #define CLS_U_Lo 101
105
+ #define CLS_U_Lt 102
106
+ #define CLS_U_Lu 103
107
+ #define CLS_U_M 104
108
+ #define CLS_U_Mc 105
109
+ #define CLS_U_Me 106
110
+ #define CLS_U_Mn 107
111
+ #define CLS_U_N 108
112
+ #define CLS_U_Nd 109
113
+ #define CLS_U_Nl 110
114
+ #define CLS_U_No 111
115
+ #define CLS_U_P 112
116
+ #define CLS_U_Pc 113
117
+ #define CLS_U_Pd 114
118
+ #define CLS_U_Pe 115
119
+ #define CLS_U_Pf 116
120
+ #define CLS_U_Pi 117
121
+ #define CLS_U_Po 118
122
+ #define CLS_U_Ps 119
123
+ #define CLS_U_S 120
124
+ #define CLS_U_Sc 121
125
+ #define CLS_U_Sk 122
126
+ #define CLS_U_Sm 123
127
+ #define CLS_U_So 124
128
+ #define CLS_U_Z 125
129
+ #define CLS_U_Zl 126
130
+ #define CLS_U_Zp 127
131
+ #define CLS_U_Zs 128
132
+ #define NUM_CLS_U 129
133
+ static char *clstab[NUM_CLS_U]={"",
134
+ "C",
135
+ "Cc",
136
+ "Cf",
137
+ "Co",
138
+ "IsAlphabeticPresentationForms",
139
+ "IsArabic",
140
+ "IsArabicPresentationForms-A",
141
+ "IsArabicPresentationForms-B",
142
+ "IsArmenian",
143
+ "IsArrows",
144
+ "IsBasicLatin",
145
+ "IsBengali",
146
+ "IsBlockElements",
147
+ "IsBopomofo",
148
+ "IsBopomofoExtended",
149
+ "IsBoxDrawing",
150
+ "IsBraillePatterns",
151
+ "IsByzantineMusicalSymbols",
152
+ "IsCJKCompatibility",
153
+ "IsCJKCompatibilityForms",
154
+ "IsCJKCompatibilityIdeographs",
155
+ "IsCJKCompatibilityIdeographsSupplement",
156
+ "IsCJKRadicalsSupplement",
157
+ "IsCJKSymbolsandPunctuation",
158
+ "IsCJKUnifiedIdeographs",
159
+ "IsCJKUnifiedIdeographsExtensionA",
160
+ "IsCJKUnifiedIdeographsExtensionB",
161
+ "IsCherokee",
162
+ "IsCombiningDiacriticalMarks",
163
+ "IsCombiningHalfMarks",
164
+ "IsCombiningMarksforSymbols",
165
+ "IsControlPictures",
166
+ "IsCurrencySymbols",
167
+ "IsCyrillic",
168
+ "IsDeseret",
169
+ "IsDevanagari",
170
+ "IsDingbats",
171
+ "IsEnclosedAlphanumerics",
172
+ "IsEnclosedCJKLettersandMonths",
173
+ "IsEthiopic",
174
+ "IsGeneralPunctuation",
175
+ "IsGeometricShapes",
176
+ "IsGeorgian",
177
+ "IsGothic",
178
+ "IsGreek",
179
+ "IsGreekExtended",
180
+ "IsGujarati",
181
+ "IsGurmukhi",
182
+ "IsHalfwidthandFullwidthForms",
183
+ "IsHangulCompatibilityJamo",
184
+ "IsHangulJamo",
185
+ "IsHangulSyllables",
186
+ "IsHebrew",
187
+ "IsHiragana",
188
+ "IsIPAExtensions",
189
+ "IsIdeographicDescriptionCharacters",
190
+ "IsKanbun",
191
+ "IsKangxiRadicals",
192
+ "IsKannada",
193
+ "IsKatakana",
194
+ "IsKhmer",
195
+ "IsLao",
196
+ "IsLatin-1Supplement",
197
+ "IsLatinExtended-A",
198
+ "IsLatinExtended-B",
199
+ "IsLatinExtendedAdditional",
200
+ "IsLetterlikeSymbols",
201
+ "IsMalayalam",
202
+ "IsMathematicalAlphanumericSymbols",
203
+ "IsMathematicalOperators",
204
+ "IsMiscellaneousSymbols",
205
+ "IsMiscellaneousTechnical",
206
+ "IsMongolian",
207
+ "IsMusicalSymbols",
208
+ "IsMyanmar",
209
+ "IsNumberForms",
210
+ "IsOgham",
211
+ "IsOldItalic",
212
+ "IsOpticalCharacterRecognition",
213
+ "IsOriya",
214
+ "IsPrivateUse",
215
+ "IsRunic",
216
+ "IsSinhala",
217
+ "IsSmallFormVariants",
218
+ "IsSpacingModifierLetters",
219
+ "IsSpecials",
220
+ "IsSuperscriptsandSubscripts",
221
+ "IsSyriac",
222
+ "IsTags",
223
+ "IsTamil",
224
+ "IsTelugu",
225
+ "IsThaana",
226
+ "IsThai",
227
+ "IsTibetan",
228
+ "IsUnifiedCanadianAboriginalSyllabics",
229
+ "IsYiRadicals",
230
+ "IsYiSyllables",
231
+ "L",
232
+ "Ll",
233
+ "Lm",
234
+ "Lo",
235
+ "Lt",
236
+ "Lu",
237
+ "M",
238
+ "Mc",
239
+ "Me",
240
+ "Mn",
241
+ "N",
242
+ "Nd",
243
+ "Nl",
244
+ "No",
245
+ "P",
246
+ "Pc",
247
+ "Pd",
248
+ "Pe",
249
+ "Pf",
250
+ "Pi",
251
+ "Po",
252
+ "Ps",
253
+ "S",
254
+ "Sc",
255
+ "Sk",
256
+ "Sm",
257
+ "So",
258
+ "Z",
259
+ "Zl",
260
+ "Zp",
261
+ "Zs"
262
+ };
data/ext/rnv/src/s.c ADDED
@@ -0,0 +1,103 @@
1
+ /* $Id: s.c,v 1.4 2005/01/05 09:46:25 dvd Exp $ */
2
+
3
+ #include <string.h> /*strcpy,strlen*/
4
+ #include <assert.h>
5
+ #include "xmlc.h"
6
+ #include "m.h"
7
+ #include "s.h"
8
+
9
+ int s_cmpn(char *s1,char *s2,int n2) {
10
+ char *end=s2+n2;
11
+ for(;;++s1,++s2) {
12
+ if(s2==end) return *s1;
13
+ if(*s1=='\0') return -*s2;
14
+ if(*s1!=*s2) return *s1-*s2;
15
+ }
16
+ }
17
+
18
+ int s_tokcmpn(char *s1,char *s2,int n2) {
19
+ char *end2=s2+n2;
20
+ /* all white space characters are one byte long */
21
+ while(xmlc_white_space(*s1)) ++s1;
22
+ while(s2!=end2&&xmlc_white_space(*s2)) ++s2;
23
+ for(;;) {
24
+ if(s2==end2) {
25
+ while(xmlc_white_space(*s1)) ++s1;
26
+ return *s1;
27
+ }
28
+ if(*s1=='\0') {
29
+ while(s2!=end2&&xmlc_white_space(*s2)) ++s2;
30
+ return s2==end2?0:-*s2;
31
+ }
32
+ if(xmlc_white_space(*s1)&&xmlc_white_space(*s2)) {
33
+ do ++s1; while(xmlc_white_space(*s1));
34
+ do ++s2; while(s2!=end2&&xmlc_white_space(*s2));
35
+ } else {
36
+ if(*s1!=*s2) return *s1-*s2;
37
+ ++s1; ++s2;
38
+ }
39
+ }
40
+ }
41
+
42
+ int s_hval(char *s) {
43
+ int h=0;
44
+ while(*s) h=h*31+*(s++);
45
+ return h;
46
+ }
47
+
48
+ char *s_clone(char *s) {
49
+ return strcpy((char*)m_alloc(strlen(s)+1,sizeof(char)),s);
50
+ }
51
+
52
+ char *s_abspath(char *r,char *b) {
53
+ if(*r!='/') {
54
+ char *c=b,*sep=(char*)0;
55
+ for(;;) {if(!(*c)) break; if(*c++=='/') sep=c;}
56
+ if(sep) {
57
+ char *p=r,*q;
58
+ while(*p++); q=p+(sep-b);
59
+ do *(--q)=*(--p); while(p!=r);
60
+ while(b!=sep) *r++=*b++;
61
+ }
62
+ }
63
+ return r;
64
+ }
65
+
66
+ int s_tab(char *s,char *tab[],int size) {return s_ntab(s,strlen(s),tab,size);}
67
+ int s_ntab(char *s,int len,char *tab[],int size) {
68
+ int n=0,m=size-1,i,cmp;
69
+ for(;;) {
70
+ if(n>m) return size;
71
+ i=(n+m)/2;
72
+ if((cmp=s_cmpn(tab[i],s,len))==0) return i; else {if(cmp>0) m=i-1; else n=i+1;}
73
+ }
74
+ }
75
+
76
+ void s_test() {
77
+ assert(s_cmpn("","",0)==0);
78
+ assert(s_cmpn("/xyz","/xyz",4)==0);
79
+ assert(s_cmpn("xyz","yz",2)<0);
80
+ assert(s_cmpn("xyz","xxyz",4)>0);
81
+
82
+ { char r[256];
83
+ s_abspath(strcpy(r,"/x"),"/y");
84
+ assert(strcmp(r,"/x")==0);
85
+ s_abspath(strcpy(r,"x"),"/y");
86
+ assert(strcmp(r,"/x")==0);
87
+ s_abspath(strcpy(r,"x"),"/y/");
88
+ assert(strcmp(r,"/y/x")==0);
89
+ s_abspath(strcpy(r,"x"),"y/");
90
+ assert(strcmp(r,"y/x")==0);
91
+ s_abspath(strcpy(r,"x"),"y");
92
+ assert(strcmp(r,"x")==0);
93
+ s_abspath(strcpy(r,""),"y");
94
+ assert(strcmp(r,"")==0);
95
+ }
96
+
97
+ assert(s_tokcmpn("","",0)==0);
98
+ assert(s_tokcmpn(""," ",1)==0);
99
+ assert(s_tokcmpn("A","A",1)==0);
100
+ assert(s_tokcmpn(" A B","A B ",5)==0);
101
+ assert(s_tokcmpn("AB","A B",3)>0);
102
+ assert(s_tokcmpn("","A",1)<0);
103
+ }