0a76ae0789807c543ed44e11002ed7d27c2d1297
[mono.git] / mcs / class / System.XML / System.Xml / XmlChar.cs
1 // -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-\r
2 //\r
3 // System.Xml.XmlChar.cs\r
4 //\r
5 // Author:\r
6 //   Jason Diamond (jason@injektilo.org)\r
7 //\r
8 // (C) 2001 Jason Diamond  http://injektilo.org/\r
9 //\r
10 \r
11 using System;\r
12 \r
13 namespace System.Xml\r
14 {\r
15         internal class XmlChar\r
16         {\r
17                 internal static bool IsWhitespace(int ch)\r
18                 {\r
19                         return ch == 0x20 || ch == 0x9 || ch == 0xD || ch == 0xA;\r
20                 }\r
21 \r
22                 internal static bool IsFirstNameChar(int ch)\r
23                 {\r
24                         bool result = false;\r
25 \r
26                         if (ch >= 0 && ch <= 0xFFFF)\r
27                         {\r
28                                 result = (nameBitmap[(firstNamePages[ch >> 8] << 3) + ((ch & 0xFF) >> 5)] & (1 << (ch & 0x1F))) != 0;\r
29                         }\r
30 \r
31                         return result;\r
32                 }\r
33 \r
34                 internal static bool IsNameChar(int ch)\r
35                 {\r
36                         bool result = false;\r
37 \r
38                         if (ch >= 0 && ch <= 0xFFFF)\r
39                         {\r
40                                 result = (nameBitmap[(namePages[ch >> 8] << 3) + ((ch & 0xFF) >> 5)] & (1 << (ch & 0x1F))) != 0;\r
41                         }\r
42 \r
43                         return result;\r
44                 }\r
45 \r
46                 private static byte[] firstNamePages =\r
47                 {\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
80                 };\r
81 \r
82                 private static byte[] namePages =\r
83                 {\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
116                 };\r
117 \r
118                 private static uint[] nameBitmap =\r
119                 {\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
200                 };\r
201         }\r
202 }\r