-
Notifications
You must be signed in to change notification settings - Fork 88
/
rapidxml_tables.hpp
288 lines (271 loc) · 32.1 KB
/
rapidxml_tables.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
//
// Created by dwd on 9/7/24.
//
#ifndef RAPIDXML_RAPIDXML_TABLES_HPP
#define RAPIDXML_RAPIDXML_TABLES_HPP
#include <vector>
#include <array>
///////////////////////////////////////////////////////////////////////
// Internals
//! \cond internal
namespace rapidxml::internal {
// Struct that contains lookup tables for the parser
struct lookup_tables {
// Whitespace (space \n \r \t)
static inline const std::vector<bool> lookup_whitespace =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, false, false, false, false, false, false, false, false, true , true , false, false, true , false, false, // 0
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 1
true , false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 2
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 3
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 4
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 5
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 6
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 7
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 8
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // 9
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // A
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // B
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // C
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // D
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, // E
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false // F
};
// Element name (anything but space \n \r \t / > ? \0 and :)
static inline const std::vector<bool> lookup_element_name =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , false, false, true , true , false, true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , false, // 2
true , true , true , true , true , true , true , true , true , true , false, true , true , true , false, false, // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Node name (anything but space \n \r \t / > ? \0)
static inline const std::vector<bool> lookup_node_name =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , false, false, true , true , false, true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , false, // 2
true , true , true , true , true , true , true , true , true , true , true , true , true , true , false, false, // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Text (i.e. PCDATA) (anything but < \0)
static inline const std::vector<bool> lookup_text =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , false, true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Text (i.e. PCDATA) that does not require processing when ws normalization is disabled
// (anything but < \0 &)
static inline const std::vector<bool> lookup_text_pure_no_ws =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , true , true , true , true , false, true , true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , false, true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled
// (anything but < \0 & space \n \r \t)
static inline const std::vector<bool> lookup_text_pure_with_ws =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , false, false, true , true , false, true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
false, true , true , true , true , true , false, true , true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , false, true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Attribute name (anything but space \n \r \t / < > = ? ! \0)
static inline const std::vector<bool> lookup_attribute_name =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , false, false, true , true , false, true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
false, false, true , true , true , true , true , true , true , true , true , true , true , true , true , false, // 2
true , true , true , true , true , true , true , true , true , true , true , true , false, false, false, false, // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Attribute data with single quote (anything but ' \0)
static inline const std::vector<bool> lookup_attribute_data_1 =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , true , true , true , true , true , false, true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Attribute data with single quote that does not require processing (anything but ' \0 &)
static inline const std::vector<bool> lookup_attribute_data_1_pure =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , true , true , true , true , false, false, true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Attribute data with double quote (anything but " \0)
static inline const std::vector<bool> lookup_attribute_data_2 =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , false, true , true , true , true , true , true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , 1 // F
};
// Attribute data with double quote that does not require processing (anything but " \0 &)
static inline const std::vector<bool> lookup_attribute_data_2_pure =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
false, true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 0
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 1
true , true , false, true , true , true , false, true , true , true , true , true , true , true , true , true , // 2
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 3
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 4
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 5
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 6
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 7
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 8
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // 9
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // A
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // B
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // C
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // D
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , // E
true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true // F
};
// Digits (dec and hex, 255 denotes end of numeric character reference)
static inline const std::array<unsigned char, 256> lookup_digits =
{
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3
255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5
255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 // F
};
};
}
//! \endcond
#endif //RAPIDXML_RAPIDXML_TABLES_HPP