~ubuntu-branches/ubuntu/raring/babel/raring-proposed

« back to all changes in this revision

Viewing changes to runtime/libparsifal/include/libparsifal/nametab.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2008-08-01 07:56:58 UTC
  • mfrom: (3.1.2 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080801075658-9ezcrbh8dcs8lg70
Tags: 1.2.0.dfsg-6
Added libparsifal-dev as dependency to libsidl-dev (closes: #483324).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*===========================================================================
 
2
  nametab.h
 
3
    this header contains ASCII and UTF-8 tables for qualified 
 
4
    name checking + macros for comparing multibyte UTF-8 sequences:
 
5
    UTF8_GET_NAMING2 and UTF8_GET_NAMING3 
 
6
 
 
7
    UTF8_GET_NAMING... and UTF-8 tables are stolen from EXPAT 
 
8
    note: DO NOT increment parameters in these macro calls i.e. 
 
9
    ISMAPCH(whitespace, *c++) will return invalid value 
 
10
 
 
11
    memory usage:
 
12
 
 
13
    namingBitmap (16x80):                   1280 bytes
 
14
    nmstrtPages & namePages (2x8x32)         512 bytes
 
15
    4 ascii tables (4x32)                    128 bytes
 
16
    ---------------------------------------------------
 
17
    total                                   1920 bytes
 
18
 
 
19
    TODO: fix ascii tables (separate to pages to save space)
 
20
 
 
21
    see parsifal.h for copyright info
 
22
===========================================================================*/
 
23
 
 
24
#ifndef NAMETAB__H
 
25
#define NAMETAB__H
 
26
 
 
27
#include "xmlcfg.h" /* for UINT32 */
 
28
 
 
29
/* ascii tables generated by GENMAPS.C */
 
30
static const XMLCH nameStartAscii[32] = {
 
31
0x00, 0x00, 0x00, 0x00, 
 
32
0x00, 0x00, 0x00, 0x04, 
 
33
0xFE, 0xFF, 0xFF, 0x87, 
 
34
0xFE, 0xFF, 0xFF, 0x07, 
 
35
0x00, 0x00, 0x00, 0x00, 
 
36
0x00, 0x00, 0x00, 0x00, 
 
37
0x00, 0x00, 0x00, 0x00, 
 
38
0x00, 0x00, 0x00, 0x00
 
39
}; /* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_: */
 
40
 
 
41
static const XMLCH nameAscii[32] = {
 
42
0x00, 0x00, 0x00, 0x00, 
 
43
0x00, 0x60, 0xFF, 0x07, 
 
44
0xFE, 0xFF, 0xFF, 0x87, 
 
45
0xFE, 0xFF, 0xFF, 0x07, 
 
46
0x00, 0x00, 0x00, 0x00, 
 
47
0x00, 0x00, 0x00, 0x00, 
 
48
0x00, 0x00, 0x00, 0x00, 
 
49
0x00, 0x00, 0x00, 0x00
 
50
}; /* ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_:0123456789.- */
 
51
 
 
52
static const XMLCH whitespace[32] = {
 
53
0x00, 0x26, 0x00, 0x00, 
 
54
0x01, 0x00, 0x00, 0x00, 
 
55
0x00, 0x00, 0x00, 0x00, 
 
56
0x00, 0x00, 0x00, 0x00, 
 
57
0x00, 0x00, 0x00, 0x00, 
 
58
0x00, 0x00, 0x00, 0x00, 
 
59
0x00, 0x00, 0x00, 0x00, 
 
60
0x00, 0x00, 0x00, 0x00
 
61
};
 
62
 
 
63
static const XMLCH illByte[32] = {
 
64
0xFF, 0xD9, 0xFF, 0xFF, 
 
65
0x00, 0x00, 0x00, 0x00, 
 
66
0x00, 0x00, 0x00, 0x00, 
 
67
0x00, 0x00, 0x00, 0x00, 
 
68
0x00, 0x00, 0x00, 0x00, 
 
69
0x00, 0x00, 0x00, 0x00, 
 
70
0x00, 0x00, 0x00, 0x00, 
 
71
0x00, 0x00, 0x00, 0x00
 
72
}; /* from \0x0 to \0x1f excluding whitespace chars 0x9, 0xA, 0xD */
 
73
 
 
74
#define utf8_isName2(c) (UTF8_GET_NAMING2(namePages, (c)))
 
75
#define utf8_isName3(c) (UTF8_GET_NAMING3(namePages, (c)))
 
76
#define utf8_isNmstrt2(c) (UTF8_GET_NAMING2(nmstrtPages, (c)))
 
77
#define utf8_isNmstrt3(c) (UTF8_GET_NAMING3(nmstrtPages, (c)))
 
78
 
 
79
/* the rest is stolen from EXPAT: */
 
80
 
 
81
/* A 2 byte UTF-8 representation splits the characters 11 bits
 
82
between the bottom 5 and 6 bits of the bytes.
 
83
We need 8 bits to index into pages, 3 bits to add to that index and
 
84
5 bits to generate the mask. */
 
85
#define UTF8_GET_NAMING2(pages, byte) \
 
86
    (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \
 
87
                      + ((((byte)[0]) & 3) << 1) \
 
88
                      + ((((byte)[1]) >> 5) & 1)] \
 
89
         & (1 << (((byte)[1]) & 0x1F)))
 
90
 
 
91
/* A 3 byte UTF-8 representation splits the characters 16 bits
 
92
between the bottom 4, 6 and 6 bits of the bytes.
 
93
We need 8 bits to index into pages, 3 bits to add to that index and
 
94
5 bits to generate the mask. */
 
95
#define UTF8_GET_NAMING3(pages, byte) \
 
96
  (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \
 
97
                             + ((((byte)[1]) >> 2) & 0xF)] \
 
98
               << 3) \
 
99
                      + ((((byte)[1]) & 3) << 1) \
 
100
                      + ((((byte)[2]) >> 5) & 1)] \
 
101
         & (1 << (((byte)[2]) & 0x1F)))
 
102
 
 
103
static const UINT32 namingBitmap[] = {
 
104
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
105
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
106
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 
107
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 
108
0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
 
109
0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
 
110
0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
 
111
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
 
112
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
 
113
0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
 
114
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
115
0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
 
116
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
 
117
0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
 
118
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
 
119
0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
 
120
0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
 
121
0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
 
122
0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
 
123
0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
 
124
0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
 
125
0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
 
126
0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
 
127
0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
 
128
0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
 
129
0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
 
130
0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
 
131
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
132
0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
 
133
0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
 
134
0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
 
135
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
136
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
137
0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
 
138
0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
 
139
0x40000000, 0xF580C900, 0x00000007, 0x02010800,
 
140
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 
141
0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
 
142
0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
 
143
0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
 
144
0x00000000, 0x00004C40, 0x00000000, 0x00000000,
 
145
0x00000007, 0x00000000, 0x00000000, 0x00000000,
 
146
0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
 
147
0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
 
148
0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
 
149
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
150
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 
151
0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
 
152
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
 
153
0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
 
154
0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
 
155
0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
 
156
0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
 
157
0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
 
158
0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
 
159
0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
 
160
0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
 
161
0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
 
162
0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
 
163
0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
 
164
0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
 
165
0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
 
166
0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
 
167
0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
 
168
0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
 
169
0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
 
170
0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
 
171
0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
 
172
0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
 
173
0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
 
174
0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
 
175
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
176
0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
 
177
0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
 
178
0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
 
179
0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
 
180
0x00000000, 0x00000000, 0x00000000, 0x00000000,
 
181
0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
 
182
0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
 
183
0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
 
184
};
 
185
static const unsigned char nmstrtPages[] = {
 
186
0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
 
187
0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
 
188
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
189
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
 
190
0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
191
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
192
0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
193
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
194
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
195
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 
196
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
197
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
198
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
199
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
200
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
201
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
202
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
203
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
204
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
205
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
 
206
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
207
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
 
208
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
209
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
210
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
211
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
212
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 
213
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
214
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
215
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
216
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
217
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
218
};
 
219
static const unsigned char namePages[] = {
 
220
0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
 
221
0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
 
222
0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
223
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
 
224
0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
225
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
226
0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
227
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
228
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
229
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
 
230
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
231
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
232
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
233
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
234
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
235
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
236
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
237
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
238
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
239
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
 
240
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
241
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
 
242
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
243
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
244
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
245
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 
246
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
 
247
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
248
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
249
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
250
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
251
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 
252
};
 
253
 
 
254
#endif /* NAMETAB__H */
 
255
 
 
256
 
 
257