source: trunk/src/namechars.h @ 826

Last change on this file since 826 was 826, checked in by cameron, 9 years ago

Use unsigned char consistently for name character bitmaps.

File size: 18.9 KB
Line 
1/* namechars.h - Bitset maps for name characters.
2    Copyright (c) 2008, 2010 Robert D. Cameron.
3    Licensed to the public under the Open Software License 3.0.
4    Licensed to International Characters, Inc., under the Academic
5    Free License 3.0.
6   
7    This is a generated file using xml_chars.py.  Do not edit.
8   
9    The XML10 maps apply to XML 1.0 4th edition and prior.
10    The XML11 maps apply to XML 1.1 and the proposed XML 1.0 5th edition.
11
12*/
13#ifndef NAMECHARS_H
14#define NAMECHARS_H
15unsigned char NameStrt_XML10_0000_11FF[] = {
16    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
17    0x7F, 0xFF, 0xFF, 0xE1, 0x7F, 0xFF, 0xFF, 0xE0,
18    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19    0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
20    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFE,
21    0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
22    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
23    0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x3F,
24    0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
25    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
26    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x1F,
27    0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30    0x02, 0xEB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF,
31    0xFF, 0xFE, 0xFE, 0x2A, 0xBF, 0xFF, 0xF0, 0x00,
32    0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
33    0xFF, 0xFF, 0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
34    0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
35    0xF9, 0x98, 0xFF, 0xFF, 0xFF, 0xF3, 0xFC, 0xC0,
36    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
37    0xFF, 0xFF, 0xFE, 0x40, 0x7F, 0xFF, 0xFF, 0xFF,
38    0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0x00,
40    0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xE0,
41    0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
42    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E,
43    0xFF, 0xFE, 0xF4, 0x00, 0x06, 0x00, 0x00, 0x00,
44    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52    0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4,
53    0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00,
54    0x07, 0xF9, 0x9F, 0xFF, 0xFF, 0xBF, 0xA3, 0xC0,
55    0x00, 0x00, 0x00, 0x0D, 0xC0, 0x00, 0xC0, 0x00,
56    0x07, 0xE1, 0x9F, 0xFF, 0xFF, 0xBF, 0xB6, 0xC0,
57    0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x38, 0x00,
58    0x07, 0xF5, 0xDF, 0xFF, 0xFF, 0xBF, 0xB7, 0xC4,
59    0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
60    0x07, 0xF9, 0x9F, 0xFF, 0xFF, 0xBF, 0xB3, 0xC4,
61    0x00, 0x00, 0x00, 0x0D, 0xC0, 0x00, 0x00, 0x00,
62    0x07, 0xE3, 0xBC, 0x6B, 0x18, 0xE3, 0xFD, 0xC0,
63    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64    0x07, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xF7, 0xC0,
65    0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
66    0x07, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xF7, 0xC0,
67    0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x00, 0x00,
68    0x07, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xFF, 0xC0,
69    0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
70    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72    0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB0, 0x00,
73    0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74    0x69, 0xA4, 0x0F, 0x7F, 0x75, 0x36, 0xB0, 0x04,
75    0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77    0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00,
78    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82    0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
83    0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
84    0xB7, 0x5B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A,
85    0x80, 0x0A, 0x8C, 0x41, 0xD5, 0x46, 0x34, 0x00,
86    0x00, 0x00, 0x00, 0x02, 0x00, 0x93, 0x01, 0xAF,
87    0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x40};
88
89unsigned char NameStrt_XML10_1E00_1FFF[] = {
90    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
91    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
92    0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
93    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
94    0xFF, 0xFF, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
95    0xFC, 0xFC, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0xFC,
96    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFA,
97    0x3B, 0xF8, 0xF3, 0xF0, 0xFF, 0xF8, 0x3B, 0xF8};
98
99unsigned char NameStrt_XML10_2000_21FF[] = {
100    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104    0x00, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00,
105    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106    0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
108
109unsigned char NameStrt_XML10_3000_31FF[] = {
110    0x01, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00,
111    0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
112    0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xFF, 0xFF,
113    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
114    0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00,
115    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
118
119unsigned char NameChar_XML10_0000_11FF[] = {
120    0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xE0,
121    0x7F, 0xFF, 0xFF, 0xE1, 0x7F, 0xFF, 0xFF, 0xE0,
122    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
123    0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
124    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFE,
125    0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
126    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
127    0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x3F,
128    0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
129    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
130    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x1F,
131    0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
132    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
133    0xFC, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
134    0x03, 0xEB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF,
135    0xFF, 0xFE, 0xFE, 0x2A, 0xBF, 0xFF, 0xF0, 0x00,
136    0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
137    0xFF, 0xFF, 0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
138    0xDE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
139    0xF9, 0x98, 0xFF, 0xFF, 0xFF, 0xF3, 0xFC, 0xC0,
140    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
141    0xFF, 0xFF, 0xFE, 0x40, 0x7F, 0xFF, 0xFF, 0xFF,
142    0xFE, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFF, 0xDD,
143    0x68, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0x00,
144    0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xE0,
145    0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xC0, 0xFF, 0xFF,
146    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E,
147    0xFF, 0xFE, 0xF7, 0xFF, 0xFF, 0xBC, 0xFF, 0xC0,
148    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
151    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
152    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156    0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
157    0xFF, 0xFC, 0x78, 0xFF, 0xF3, 0xFF, 0x00, 0x00,
158    0x77, 0xF9, 0x9F, 0xFF, 0xFF, 0xBF, 0xA3, 0xCB,
159    0xF9, 0x9C, 0x01, 0x0D, 0xF3, 0xFF, 0xC0, 0x00,
160    0x27, 0xE1, 0x9F, 0xFF, 0xFF, 0xBF, 0xB6, 0xCB,
161    0xE1, 0x9C, 0x00, 0x7A, 0x03, 0xFF, 0xF8, 0x00,
162    0x77, 0xF5, 0xDF, 0xFF, 0xFF, 0xBF, 0xB7, 0xCF,
163    0xFD, 0xDC, 0x00, 0x00, 0x83, 0xFF, 0x00, 0x00,
164    0x77, 0xF9, 0x9F, 0xFF, 0xFF, 0xBF, 0xB3, 0xCF,
165    0xF1, 0x9C, 0x03, 0x0D, 0xC3, 0xFF, 0x00, 0x00,
166    0x37, 0xE3, 0xBC, 0x6B, 0x18, 0xE3, 0xFD, 0xC3,
167    0xE3, 0xBC, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00,
168    0x77, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xF7, 0xC3,
169    0xFB, 0xBC, 0x06, 0x00, 0xC3, 0xFF, 0x00, 0x00,
170    0x37, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xF7, 0xC3,
171    0xFB, 0xBC, 0x06, 0x02, 0xC3, 0xFF, 0x00, 0x00,
172    0x37, 0xFB, 0xBF, 0xFF, 0xFF, 0xBF, 0xFF, 0xC3,
173    0xF3, 0xBC, 0x01, 0x00, 0xC3, 0xFF, 0x00, 0x00,
174    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
175    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176    0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xE0,
177    0xFF, 0xFE, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
178    0x69, 0xA4, 0x0F, 0x7F, 0x75, 0x36, 0xFF, 0xDC,
179    0xFA, 0xFC, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
180    0x00, 0x00, 0x00, 0xC0, 0xFF, 0xC0, 0x05, 0x43,
181    0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF,
182    0xFB, 0xF0, 0xFD, 0x7F, 0xFF, 0xFC, 0x7F, 0x40,
183    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186    0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
187    0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
188    0xB7, 0x5B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A,
189    0x80, 0x0A, 0x8C, 0x41, 0xD5, 0x46, 0x34, 0x00,
190    0x00, 0x00, 0x00, 0x02, 0x00, 0x93, 0x01, 0xAF,
191    0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0x40};
192
193unsigned char NameChar_XML10_2000_21FF[] = {
194    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197    0x00, 0x00, 0xFF, 0xF8, 0x40, 0x00, 0x00, 0x00,
198    0x00, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00,
199    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200    0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
202
203unsigned char NameChar_XML10_3000_31FF[] = {
204    0x05, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0x7C, 0x00,
205    0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
206    0xFF, 0xFF, 0xF8, 0x66, 0x7F, 0xFF, 0xFF, 0xFF,
207    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE,
208    0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00,
209    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
212
213unsigned char NameStrt_XML11_0000_03FF[] = {
214    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
215    0x7F, 0xFF, 0xFF, 0xE1, 0x7F, 0xFF, 0xFF, 0xE0,
216    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217    0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
218    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
219    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
220    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
221    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
222    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
223    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
224    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
225    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
226    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD,
228    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
229    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
230
231unsigned char NameChar_XML11_0000_03FF[] = {
232    0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xE0,
233    0x7F, 0xFF, 0xFF, 0xE1, 0x7F, 0xFF, 0xFF, 0xE0,
234    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
235    0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
236    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
237    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
238    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
239    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
240    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
241    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
242    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
243    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
244    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
245    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
246    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
247    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
248
249
250
251static inline bool bit_test(const unsigned char bit_Map[], const int codepoint) {
252        return (bit_Map[codepoint>>3] >> (7 - (codepoint & 7))) & 1;
253}
254
255/*  Is a given codepoint a legal NameStart character in XML 1.0 up to 4th edition? */
256static inline bool is_XML10_NameStrt_codepoint(const int codepoint) {
257        switch (codepoint >> 12) {
258                case 0: return bit_test(NameStrt_XML10_0000_11FF, codepoint);
259                case 1: if (codepoint <= 0x11FF)
260                                return bit_test(NameStrt_XML10_0000_11FF, codepoint);
261                        else if (codepoint < 0x1E00) return false;
262                        else return bit_test(NameStrt_XML10_1E00_1FFF, codepoint & 0x1FF);
263                case 2: if (codepoint > 0x2182) return false;
264                        else return bit_test(NameStrt_XML10_2000_21FF, codepoint & 0x1FF);
265                case 3: if (codepoint > 0x312C) return false;
266                        else return bit_test(NameStrt_XML10_3000_31FF, codepoint & 0x1FF);
267                case 4: return codepoint >= 0x4E00;
268                case 5: case 6: case 7: case 8: return true;
269                case 9: return codepoint <= 0x9FA5;
270                case 0xA: return codepoint >= 0xAC00;
271                case 0xB: case 0xC: return true;
272                case 0xD: return codepoint <= 0xD7A3;
273                default: return false;
274        }
275}
276
277/*  Is a given codepoint a legal Name character in XML 1.0 up to 4th edition? */
278static inline bool is_XML10_NameChar_codepoint(const int codepoint) {
279        switch (codepoint >> 12) {
280                case 0: return bit_test(NameChar_XML10_0000_11FF, codepoint);
281                case 1: if (codepoint <= 0x11FF)
282                                return bit_test(NameChar_XML10_0000_11FF, codepoint);
283                        else if (codepoint < 0x1E00) return false;
284                        else return bit_test(NameStrt_XML10_1E00_1FFF, codepoint & 0x1FF);
285                case 2: if (codepoint > 0x2182) return false;
286                        else return bit_test(NameChar_XML10_2000_21FF, codepoint & 0x1FF);
287                case 3: if (codepoint > 0x312C) return false;
288                        else return bit_test(NameChar_XML10_3000_31FF, codepoint & 0x1FF);
289                case 4: return codepoint >= 0x4E00;
290                case 5: case 6: case 7: case 8: return true;
291                case 9: return codepoint <= 0x9FA5;
292                case 0xA:       return codepoint >= 0xAC00;
293                case 0xB: case 0xC: return true;
294                case 0xD: return codepoint <= 0xD7A3;
295                default: return false;
296        }
297}
298
299/*  Is a given codepoint a legal NameStart character in XML 1.0 5e or XML 1.1? */
300static inline bool is_XML11_NameStrt_codepoint(const int codepoint) {
301        if (likely(codepoint) <= 0x03FF) return bit_test(NameStrt_XML11_0000_03FF, codepoint);
302        else switch (codepoint >> 12) {
303                case 0: case 1: return true;
304                case 2: if (codepoint >= 0x2070)
305                                if (codepoint <= 0x218F) return true;
306                                else return (codepoint >= 0x2C00) & (codepoint <= 0x2FEF);
307                        else return (codepoint >= 0x200C) & (codepoint <= 0x200D);
308                case 3: return codepoint >= 0x3001;
309                case 4: case 5: case 6: case 7: case 8: case 9: case 0xA: case 0xB: case 0xC: return true;
310                case 0xD: return codepoint <= 0xD7FF;
311                case 0xE: return false;
312                case 0xF: if (codepoint <= 0xFDCF) return codepoint >= 0xF900;
313                          else return (codepoint >= 0xFDF0) & (codepoint <= 0xFFFD);
314                default: return codepoint <= 0xEFFFF;
315        }
316}
317
318/*  Is a given codepoint a legal Name character in XML 1.0 5e or XML 1.1? */
319static inline bool is_XML11_NameChar_codepoint(const int codepoint) {
320        if (likely(codepoint) <= 0x03FF) return bit_test(NameChar_XML11_0000_03FF, codepoint);
321        else switch (codepoint >> 12) {
322                case 0: case 1: return true;
323                case 2: if (codepoint >= 0x2070)
324                                if (codepoint <= 0x218F) return true;
325                                else return (codepoint >= 0x2C00) & (codepoint <= 0x2FEF);
326                        else if (codepoint <= 0x200D) return codepoint >= 0x200C;
327                        else return (codepoint == 0x203F) | (codepoint == 0x2040);
328                case 3: return codepoint >= 0x3001;
329                case 4: case 5: case 6: case 7: case 8: case 9: case 0xA: case 0xB: case 0xC: return true;
330                case 0xD: return codepoint <= 0xD7FF;
331                case 0xE: return false;
332                case 0xF: if (codepoint <= 0xFDCF) return codepoint >= 0xF900;
333                          else return (codepoint >= 0xFDF0) & (codepoint <= 0xFFFD);
334                default: return codepoint <= 0xEFFFF;
335        }
336}
337
338/*  Return the number of UTF-8 bytes comprising a legal NameStart character,
339    0 if the byte array does not begin with a valid character. 
340    Use XML 1.0 rules up to 4th edition */
341
342static inline int XML_10_UTF8_NameStrt_bytes (const unsigned char bytes[]) {
343        if (bytes[0] <= 0x7F) {
344                if (bit_test(NameStrt_XML10_0000_11FF, (int) bytes[0])) return 1;
345                else return 0;
346        }
347        else if (bytes[0] <= 0xDF) {
348                int codepoint = ((bytes[0] & 0x3F) << 6) | (bytes[1] & 0x3F);
349                if (bit_test(NameStrt_XML10_0000_11FF, codepoint)) return 2;
350                else return 0;
351        }
352        else if (bytes[0] <= 0xEF) {
353                int codepoint = ((bytes[0] & 0x0F) << 12)| ((bytes[1] & 0x3F) << 6) | (bytes[2] & 0x3F);
354                return is_XML10_NameStrt_codepoint(codepoint) ? 3 : 0;
355        }
356        else return 0;
357}
358
359/*  Return the number of UTF-8 bytes comprising a legal Name character,
360    0 if the byte array does not begin with a valid character. 
361    Use XML 1.0 rules up to 4th edition */
362
363static inline int XML_10_UTF8_NameChar_bytes (const unsigned char bytes[]) {
364        if (bytes[0] <= 0x7F) {
365                if (bit_test(NameChar_XML10_0000_11FF, (int) bytes[0])) return 1;
366                else return 0;
367        }
368        else if (bytes[0] <= 0xDF) {
369                int codepoint = ((bytes[0] & 0x3F) << 6) | (bytes[1] & 0x3F);
370                if (bit_test(NameChar_XML10_0000_11FF, codepoint)) return 2;
371                else return 0;
372        }
373        else if (bytes[0] <= 0xEF) {
374                int codepoint = ((bytes[0] & 0x0F) << 12)| ((bytes[1] & 0x3F) << 6) | (bytes[2] & 0x3F);
375                return is_XML10_NameChar_codepoint(codepoint) ? 3 : 0;
376        }
377        else return 0;
378}
379
380/*  Return the number of UTF-8 bytes comprising a legal NameStart character,
381    0 if the byte array does not begin with a valid character. 
382    Use rules for XML 5th edition/XML 1.1. */
383
384static inline int XML_11_UTF8_NameStrt_bytes (const unsigned char bytes[]) {
385        if (bytes[0] <= 0x7F) {
386                if (bit_test(NameStrt_XML11_0000_03FF, (int) bytes[0])) return 1;
387                else return 0;
388        }
389        else if (bytes[0] <= 0xDF) {
390                int codepoint = ((bytes[0] & 0x3F) << 6) | (bytes[1] & 0x3F);
391                return is_XML11_NameStrt_codepoint(codepoint) ? 2 : 0;
392        }
393        else if (bytes[0] <= 0xEF) {
394                int codepoint = ((bytes[0] & 0x0F) << 12)| ((bytes[1] & 0x3F) << 6) | (bytes[2] & 0x3F);
395                return is_XML11_NameStrt_codepoint(codepoint) ? 3 : 0;
396        }
397        else {
398                int codepoint = ((bytes[0] & 0x0F) << 18)| ((bytes[1] & 0x3F) << 12) |
399                                ((bytes[2] & 0x3F) << 6) | (bytes[3] & 0x3F);
400                return is_XML11_NameStrt_codepoint(codepoint) ? 4 : 0;
401        }
402}
403
404/*  Return the number of UTF-8 bytes comprising a legal Name character,
405    0 if the byte array does not begin with a valid character. 
406    Use XML 1.0 rules up to 4th edition */
407
408static inline int XML_11_UTF8_NameChar_bytes (const unsigned char bytes[]) {
409        if (bytes[0] <= 0x7F) {
410                if (bit_test(NameChar_XML11_0000_03FF, (int) bytes[0])) return 1;
411                else return 0;
412        }
413        else if (bytes[0] <= 0xDF) {
414                int codepoint = ((bytes[0] & 0x3F) << 6) | (bytes[1] & 0x3F);
415                return is_XML11_NameChar_codepoint(codepoint) ? 2 : 0;
416        }
417        else if (bytes[0] <= 0xEF) {
418                int codepoint = ((bytes[0] & 0x0F) << 12)| ((bytes[1] & 0x3F) << 6) | (bytes[2] & 0x3F);
419                return is_XML11_NameChar_codepoint(codepoint) ? 3 : 0;
420        }
421        else {
422                int codepoint = ((bytes[0] & 0x0F) << 18)| ((bytes[1] & 0x3F) << 12) |
423                                ((bytes[2] & 0x3F) << 6) | (bytes[3] & 0x3F);
424                return is_XML11_NameChar_codepoint(codepoint) ? 4 : 0;
425        }
426}
427
428#endif
Note: See TracBrowser for help on using the repository browser.