1 // -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
\r
3 // System.Xml.XmlChar.cs
\r
6 // Jason Diamond (jason@injektilo.org)
\r
8 // (C) 2001 Jason Diamond http://injektilo.org/
\r
13 namespace System.Xml
\r
15 internal class XmlChar
\r
17 internal static bool IsWhitespace(int ch)
\r
19 return ch == 0x20 || ch == 0x9 || ch == 0xD || ch == 0xA;
\r
22 internal static bool IsFirstNameChar(int ch)
\r
24 bool result = false;
\r
26 if (ch >= 0 && ch <= 0xFFFF)
\r
28 result = (nameBitmap[(firstNamePages[ch >> 8] << 3) + ((ch & 0xFF) >> 5)] & (1 << (ch & 0x1F))) != 0;
\r
34 internal static bool IsNameChar(int ch)
\r
36 bool result = false;
\r
38 if (ch >= 0 && ch <= 0xFFFF)
\r
40 result = (nameBitmap[(namePages[ch >> 8] << 3) + ((ch & 0xFF) >> 5)] & (1 << (ch & 0x1F))) != 0;
\r
46 private static byte[] firstNamePages =
\r
48 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
\r
49 0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
\r
50 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
\r
52 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
53 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
54 0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
55 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
57 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
\r
58 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
59 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
60 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
61 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
62 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
63 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
64 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
65 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
66 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
67 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
\r
68 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
69 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
\r
70 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
71 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
72 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
73 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
74 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
\r
75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
77 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
78 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
79 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
\r
82 private static byte[] namePages =
\r
84 0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
\r
85 0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
\r
86 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
87 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
\r
88 0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
89 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
90 0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
\r
94 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
95 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
96 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
97 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
98 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
99 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
100 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
101 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
102 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
103 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
\r
104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
105 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
\r
106 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
107 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
108 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
109 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
\r
110 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
\r
111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
\r
115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
\r
118 private static uint[] nameBitmap =
\r
120 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
121 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
122 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
\r
123 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
\r
124 0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
\r
125 0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
\r
126 0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
\r
127 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
\r
128 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
\r
129 0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
\r
130 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
131 0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
\r
132 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
\r
133 0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
\r
134 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
\r
135 0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
\r
136 0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
\r
137 0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
\r
138 0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
\r
139 0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
\r
140 0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
\r
141 0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
\r
142 0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
\r
143 0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
\r
144 0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
\r
145 0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
\r
146 0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
\r
147 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
148 0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
\r
149 0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
\r
150 0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
\r
151 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
152 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
153 0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
\r
154 0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
\r
155 0x40000000, 0xF580C900, 0x00000007, 0x02010800,
\r
156 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
\r
157 0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
\r
158 0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
\r
159 0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
\r
160 0x00000000, 0x00004C40, 0x00000000, 0x00000000,
\r
161 0x00000007, 0x00000000, 0x00000000, 0x00000000,
\r
162 0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
\r
163 0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
\r
164 0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
\r
165 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
166 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
\r
167 0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
\r
168 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
\r
169 0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
\r
170 0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
\r
171 0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
\r
172 0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
\r
173 0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
\r
174 0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
\r
175 0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
\r
176 0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
\r
177 0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
\r
178 0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
\r
179 0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
\r
180 0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
\r
181 0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
\r
182 0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
\r
183 0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
\r
184 0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
\r
185 0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
\r
186 0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
\r
187 0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
\r
188 0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
\r
189 0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
\r
190 0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
\r
191 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
192 0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
\r
193 0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
\r
194 0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
\r
195 0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
\r
196 0x00000000, 0x00000000, 0x00000000, 0x00000000,
\r
197 0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
\r
198 0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
\r
199 0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF
\r