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