1
/****************************************************************************
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
6
** This file is part of the QtCore module of the Qt Toolkit.
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
40
****************************************************************************/
46
// This file is not part of the Qt API. It exists for the convenience
47
// of other Qt classes. This header file may change from version to
48
// version without notice, or even be removed.
53
// This file was generated by qlalr - DO NOT EDIT!
54
#ifndef QXMLSTREAM_P_H
55
#define QXMLSTREAM_P_H
61
class QXmlStreamReader_Table
64
enum VariousConstants {
119
UNRESOLVED_ENTITY = 46,
127
NON_TERMINAL_COUNT = 84,
129
GOTO_INDEX_OFFSET = 427,
130
GOTO_INFO_OFFSET = 1017,
131
GOTO_CHECK_OFFSET = 1017
134
static const char *const spell [];
135
static const short lhs [];
136
static const short rhs [];
137
static const short goto_default [];
138
static const short action_default [];
139
static const short action_index [];
140
static const short action_info [];
141
static const short action_check [];
143
static inline int nt_action (int state, int nt)
145
const int yyn = action_index [GOTO_INDEX_OFFSET + state] + nt;
146
if (yyn < 0 || action_check [GOTO_CHECK_OFFSET + yyn] != nt)
147
return goto_default [nt];
149
return action_info [GOTO_INFO_OFFSET + yyn];
152
static inline int t_action (int state, int token)
154
const int yyn = action_index [state] + token;
156
if (yyn < 0 || action_check [yyn] != token)
157
return - action_default [state];
159
return action_info [yyn];
164
const char *const QXmlStreamReader_Table::spell [] = {
165
"end of file", 0, " ", "<", ">", "&", "#", "\'", "\"", "[",
166
"]", "(", ")", "|", "=", "%", "/", ":", ";", ",",
167
"-", "+", "*", ".", "?", "!", "[a-zA-Z]", "[0-9]", "[CDATA[", "DOCTYPE",
168
"ELEMENT", "ATTLIST", "ENTITY", "NOTATION", "SYSTEM", "PUBLIC", "NDATA", "REQUIRED", "IMPLIED", "FIXED",
169
"EMPTY", "ANY", "PCDATA", 0, 0, 0, 0, "CDATA", "ID", "IDREF",
170
"IDREFS", "ENTITIES", "NMTOKEN", "NMTOKENS", "<?xml", "version", 0};
172
const short QXmlStreamReader_Table::lhs [] = {
173
57, 57, 59, 59, 59, 59, 59, 59, 59, 59,
174
67, 68, 64, 72, 72, 72, 75, 66, 66, 66,
175
66, 79, 78, 80, 80, 80, 80, 80, 80, 80,
176
81, 81, 81, 81, 81, 81, 81, 87, 83, 88,
177
88, 88, 88, 91, 92, 93, 93, 93, 93, 94,
178
94, 96, 96, 96, 97, 97, 98, 98, 99, 99,
179
100, 100, 89, 89, 95, 90, 101, 101, 103, 103,
180
103, 103, 103, 103, 103, 103, 103, 103, 104, 105,
181
105, 105, 105, 107, 108, 109, 109, 84, 84, 110,
182
110, 112, 112, 85, 85, 85, 65, 65, 76, 114,
183
63, 115, 116, 86, 86, 86, 117, 117, 117, 117,
184
117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
185
117, 117, 117, 117, 117, 117, 117, 117, 117, 118,
186
118, 119, 119, 119, 119, 119, 119, 119, 119, 122,
187
70, 70, 70, 70, 123, 124, 123, 124, 123, 124,
188
123, 124, 126, 126, 126, 126, 126, 126, 126, 126,
189
126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
190
126, 126, 126, 126, 125, 73, 113, 113, 113, 113,
191
127, 128, 127, 128, 127, 128, 127, 128, 129, 129,
192
129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
193
129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
194
129, 129, 129, 106, 106, 106, 106, 131, 132, 131,
195
132, 131, 131, 132, 132, 133, 133, 133, 133, 135,
196
71, 71, 71, 136, 136, 137, 62, 60, 61, 138,
197
121, 82, 130, 134, 120, 139, 139, 139, 139, 58,
198
58, 58, 58, 58, 58, 58, 58, 58, 58, 74,
199
69, 69, 77, 111, 102, 102, 102, 102, 102, 140};
201
const short QXmlStreamReader_Table::rhs [] = {
202
2, 1, 4, 2, 2, 2, 2, 2, 2, 0,
203
1, 1, 9, 2, 4, 0, 4, 4, 6, 6,
204
4, 1, 3, 1, 1, 1, 2, 2, 2, 0,
205
1, 1, 1, 1, 1, 1, 1, 4, 4, 1,
206
1, 1, 1, 1, 2, 1, 1, 1, 0, 2,
207
2, 2, 6, 6, 1, 5, 1, 5, 3, 5,
208
0, 1, 6, 8, 4, 2, 1, 5, 1, 1,
209
1, 1, 1, 1, 1, 1, 6, 7, 1, 2,
210
2, 1, 4, 3, 3, 1, 2, 5, 6, 4,
211
6, 3, 5, 5, 3, 4, 4, 5, 2, 3,
212
2, 2, 4, 5, 5, 7, 1, 1, 1, 1,
213
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
214
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
215
1, 2, 2, 2, 2, 1, 1, 1, 1, 1,
216
2, 2, 3, 3, 2, 2, 2, 2, 1, 1,
217
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
218
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
219
1, 1, 1, 1, 1, 1, 2, 2, 3, 3,
220
2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
221
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
222
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
223
1, 1, 1, 2, 2, 3, 3, 2, 2, 2,
224
2, 1, 1, 1, 1, 1, 1, 1, 1, 5,
225
0, 1, 3, 1, 3, 2, 4, 3, 5, 1,
226
3, 3, 3, 3, 4, 1, 1, 2, 2, 2,
227
4, 2, 2, 2, 2, 2, 2, 2, 0, 1,
228
0, 1, 1, 1, 1, 1, 1, 1, 1, 2};
230
const short QXmlStreamReader_Table::action_default [] = {
231
10, 259, 0, 2, 1, 0, 125, 117, 119, 120,
232
127, 129, 123, 11, 114, 108, 0, 109, 128, 111,
233
115, 113, 121, 124, 126, 107, 110, 112, 118, 116,
234
131, 122, 240, 12, 254, 136, 250, 253, 0, 130,
235
140, 257, 16, 252, 138, 137, 0, 256, 139, 259,
236
231, 258, 255, 0, 0, 264, 0, 247, 246, 0,
237
249, 248, 245, 241, 99, 263, 0, 236, 0, 0,
238
260, 97, 98, 101, 0, 132, 134, 133, 135, 0,
239
0, 261, 0, 0, 176, 0, 173, 165, 167, 168,
240
142, 154, 171, 162, 156, 157, 153, 159, 163, 161,
241
169, 172, 152, 155, 158, 160, 166, 164, 174, 170,
242
150, 175, 0, 144, 148, 146, 151, 141, 149, 0,
243
147, 143, 145, 0, 15, 14, 262, 0, 22, 21,
244
261, 30, 0, 20, 0, 0, 32, 37, 31, 0,
245
33, 261, 0, 34, 0, 24, 0, 35, 0, 26,
246
36, 25, 0, 242, 41, 40, 261, 43, 49, 261,
247
42, 0, 44, 261, 49, 261, 0, 261, 0, 49,
248
0, 48, 46, 47, 51, 52, 261, 261, 0, 57,
249
261, 54, 261, 0, 58, 0, 55, 261, 53, 261,
250
0, 56, 65, 0, 261, 61, 261, 0, 59, 62,
251
63, 0, 261, 0, 0, 60, 64, 45, 50, 66,
252
0, 39, 0, 0, 261, 0, 94, 95, 0, 0,
253
0, 0, 261, 0, 210, 201, 203, 205, 178, 190,
254
208, 199, 193, 191, 194, 189, 196, 198, 206, 209,
255
188, 192, 195, 197, 202, 200, 204, 207, 211, 213,
256
212, 186, 0, 0, 243, 180, 184, 182, 0, 0,
257
93, 187, 177, 185, 0, 183, 179, 181, 92, 0,
258
96, 0, 0, 0, 0, 0, 261, 86, 261, 0,
259
262, 0, 87, 0, 89, 69, 74, 73, 70, 71,
260
72, 261, 75, 76, 0, 0, 0, 269, 268, 266,
261
267, 265, 67, 261, 0, 261, 0, 0, 68, 77,
262
261, 0, 261, 0, 0, 78, 0, 79, 0, 82,
263
85, 0, 0, 215, 225, 224, 0, 227, 229, 228,
264
226, 0, 244, 217, 221, 219, 223, 214, 222, 0,
265
220, 216, 218, 0, 81, 80, 0, 83, 0, 84,
266
88, 100, 0, 38, 0, 0, 0, 0, 91, 90,
267
0, 103, 23, 27, 29, 28, 0, 0, 261, 262,
268
0, 261, 0, 106, 105, 261, 0, 104, 102, 0,
269
0, 18, 261, 17, 0, 19, 0, 0, 251, 0,
270
261, 0, 239, 0, 232, 238, 0, 237, 234, 261,
271
261, 262, 233, 235, 0, 261, 0, 230, 261, 0,
272
261, 0, 231, 0, 0, 13, 270, 9, 5, 8,
273
4, 0, 7, 259, 6, 0, 3};
275
const short QXmlStreamReader_Table::goto_default [] = {
276
2, 4, 3, 49, 388, 43, 37, 52, 47, 41,
277
249, 53, 127, 84, 393, 81, 85, 126, 42, 46,
278
169, 130, 131, 146, 145, 149, 138, 136, 140, 147,
279
139, 159, 160, 157, 168, 167, 209, 165, 164, 166,
280
187, 180, 196, 200, 303, 302, 295, 321, 320, 319,
281
279, 277, 278, 142, 56, 141, 222, 38, 34, 148,
282
39, 48, 40, 248, 45, 36, 119, 112, 330, 111,
283
264, 252, 251, 250, 339, 326, 325, 329, 398, 399,
286
const short QXmlStreamReader_Table::action_index [] = {
287
-21, -57, 33, 119, 960, 70, -57, -57, -57, -57,
288
-57, -57, -57, -57, -57, -57, 105, -57, -57, -57,
289
-57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
290
-57, -57, -57, -57, -57, -57, -57, -57, 40, -57,
291
795, -57, 47, -57, -57, -57, 107, -57, -57, -57,
292
84, -57, -57, -38, 80, -57, 12, -57, -57, 97,
293
-57, -57, -57, -57, -57, -57, 13, -57, 56, 34,
294
-57, -57, -57, -57, 51, -57, -57, -57, -57, 53,
295
57, 84, 300, 255, -57, 84, -57, -57, -57, -57,
296
-57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
297
-57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
298
-57, -57, 355, -57, -57, -57, -57, -57, -57, 326,
299
-57, -57, -57, 48, -57, -57, -57, 50, -57, -57,
300
84, 155, 32, -57, 38, 22, -57, -57, -57, 115,
301
-57, 35, 156, -57, 173, -57, 245, -57, 44, -57,
302
-57, -57, 16, -57, -57, -57, 29, -57, 116, 29,
303
-57, 133, -57, 29, 129, 84, 15, 29, -22, 121,
304
74, -57, -57, -57, -57, 82, 29, 29, 88, -57,
305
29, 7, 29, 86, -57, 83, -57, 27, 19, 26,
306
94, -57, -57, 106, 29, 3, 29, -8, -57, -57,
307
-57, 104, 29, -6, -7, -57, -57, -57, -57, -57,
308
17, -57, -2, 11, 29, 18, -57, -57, 850, 65,
309
465, 67, 84, 135, -57, -57, -57, -57, -57, -57,
310
-57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
311
-57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
312
-57, -57, 630, 24, -57, -57, -57, -57, 84, 76,
313
-57, -57, -57, -57, 740, -57, -57, -57, -57, 39,
314
-57, 23, 21, 14, 78, 22, 84, -57, 84, 184,
315
20, 31, -57, 41, -57, -57, -57, -57, -57, -57,
316
-57, 84, -57, -57, 36, 126, 162, -57, -57, -57,
317
-57, -57, -57, 29, 79, 29, 29, 160, -57, -57,
318
29, 145, 29, 75, 29, -57, 575, -57, 410, -57,
319
-57, 110, 64, -57, -57, -57, 685, -57, -57, -57,
320
-57, -17, -57, -57, -57, -57, -57, -57, -57, 520,
321
-57, -57, -57, 29, -57, -57, 61, -57, 29, -57,
322
-57, -57, 29, -57, 29, 29, -15, 29, -57, -57,
323
29, -57, -57, -57, -57, -57, 95, 43, 29, 45,
324
9, 29, 10, -57, -57, 29, 2, -57, -57, -24,
325
190, -57, 29, -57, 1, -57, 905, 150, -57, -26,
326
29, 0, -57, 109, -26, -57, 8, -57, -57, 29,
327
29, -19, -57, -57, -11, 29, 59, -57, 29, -5,
328
29, 103, 29, -16, 6, -57, -57, -57, -57, -57,
329
-57, 69, -57, -57, -57, 905, -57,
331
-84, -84, -84, 204, 75, -84, -84, -84, -84, -84,
332
-84, -84, -84, -84, -84, -84, 7, -84, -84, -84,
333
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
334
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
335
101, -84, -84, -84, -84, -84, -84, -84, -84, 64,
336
54, -84, -84, -84, -84, -84, -84, -84, -84, -84,
337
-84, -84, -84, -84, -84, -84, 68, -84, 30, -84,
338
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
339
32, -84, -16, -7, -84, 42, -84, -84, -84, -84,
340
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
341
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
342
-84, -84, 45, -84, -84, -84, -84, -84, -84, 44,
343
-84, -84, -84, 33, -84, -84, -84, -84, -84, -84,
344
36, 108, -84, -84, -84, 69, -84, -84, -84, 62,
345
-84, 63, -84, -84, -84, -84, 118, -84, -84, -84,
346
-84, -84, -84, -84, -84, -84, -2, -84, -84, -10,
347
-84, -84, -84, 25, -21, 11, -84, 20, -84, -25,
348
-84, -84, -84, -84, -84, -84, 1, 2, -36, -84,
349
-9, -84, 5, -13, -84, -8, -84, 6, -84, 8,
350
12, -84, -84, -84, 23, -84, 4, -1, -84, -84,
351
-84, -84, 0, -84, -14, -84, -84, -84, -84, -84,
352
-84, -84, 55, -84, 58, -84, -84, -84, -84, 53,
353
47, 123, 67, 66, -84, -84, -84, -84, -84, -84,
354
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
355
-84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
356
-84, -84, -15, -84, -84, -84, -84, -84, 41, 40,
357
-84, -84, -84, -84, -46, -84, -84, -84, -84, -84,
358
-84, 35, -84, 34, 37, 18, 70, -84, 89, -84,
359
43, -84, -84, -84, -84, -84, -84, -84, -84, -84,
360
-84, 48, -84, -84, -84, -84, -84, -84, -84, -84,
361
-84, -84, -84, 31, -84, 29, 27, 17, -84, -84,
362
38, 24, 39, -84, 49, -84, 71, -84, 93, -84,
363
-84, -84, -12, -84, -84, -84, 94, -84, -84, -84,
364
-84, -84, -84, -84, -84, -84, -84, -84, -84, 78,
365
-84, -84, -84, 50, -84, -84, 46, -84, 56, -84,
366
-84, -84, 60, -84, 61, 59, 51, 57, -84, -84,
367
14, -84, -84, -84, -84, -84, -11, -6, 72, -5,
368
-84, -3, -84, -84, -84, 52, -84, -84, -84, -20,
369
77, -84, 21, -84, -84, -84, 76, 16, -84, 19,
370
26, -84, -84, -84, 10, -84, -84, -84, -84, 80,
371
13, 73, -84, -84, -84, 22, -27, -84, 9, -84,
372
28, 15, 82, -84, -84, -84, -84, -84, -84, -84,
373
-84, -84, -84, 3, -84, 98, -84};
375
const short QXmlStreamReader_Table::action_info [] = {
376
65, 332, 65, 405, 392, 385, 377, 65, 414, 410,
377
415, 55, 397, 374, 373, 217, 206, 408, 65, 65,
378
207, 211, 216, 1, 55, 199, 182, 192, 70, 70,
379
63, 70, 189, 416, 153, 350, 133, 70, 72, 55,
380
65, 351, 254, 270, 73, 284, 65, 310, 55, 65,
381
83, 82, 83, 82, 129, 83, 82, 54, 70, 128,
382
83, 82, 66, 64, 83, 82, 318, 316, 318, 316,
383
54, 212, 83, 82, 83, 82, 54, 55, 367, 366,
384
69, 80, 79, 83, 82, 163, 70, 314, 305, 272,
385
55, 306, 305, 354, 163, 177, 55, 163, 379, 163,
386
65, 176, 83, 82, 55, 163, 58, 57, 0, 65,
387
83, 82, 65, 395, 65, 62, 203, 202, 195, 194,
388
65, 417, 16, 61, 60, 396, 156, 272, 0, 66,
389
64, 65, 317, 318, 316, 378, 379, 171, 173, 162,
390
172, 54, 171, 173, 163, 172, 0, 345, 344, 343,
391
171, 173, 0, 172, 0, 155, 154, 70, 134, 65,
392
0, 55, 297, 220, 218, 298, 389, 0, 300, 0,
393
135, 301, 299, 33, 66, 64, 65, 297, 0, 297,
394
298, 0, 298, 300, 0, 300, 301, 299, 301, 299,
395
221, 219, 70, 272, 381, 291, 0, 0, 0, 128,
396
13, 0, 0, 273, 271, 274, 275, 0, 0, 0,
397
0, 0, 0, 0, 0, 0, 287, 294, 0, 0,
398
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399
0, 285, 288, 289, 290, 286, 292, 293, 0, 0,
400
0, 0, 0, 0, 0, 0, 0, 70, 134, 0,
401
0, 0, 0, 0, 0, 362, 0, 108, 0, 103,
402
135, 94, 117, 116, 95, 104, 97, 105, 99, 93,
403
98, 107, 87, 106, 88, 89, 100, 109, 92, 101,
404
86, 96, 91, 0, 0, 0, 0, 0, 0, 0,
405
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406
0, 0, 108, 0, 103, 0, 94, 102, 90, 95,
407
104, 97, 105, 99, 93, 98, 107, 87, 106, 88,
408
89, 100, 109, 92, 101, 86, 96, 91, 108, 0,
409
103, 0, 94, 121, 120, 95, 104, 97, 105, 99,
410
93, 98, 107, 87, 106, 88, 89, 100, 109, 92,
411
101, 86, 96, 91, 0, 0, 0, 108, 0, 103,
412
0, 94, 114, 113, 95, 104, 97, 105, 99, 93,
413
98, 107, 87, 106, 88, 89, 100, 109, 92, 101,
414
86, 96, 91, 0, 0, 0, 0, 0, 0, 0,
415
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
416
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417
0, 0, 108, 0, 103, 322, 94, 337, 336, 95,
418
104, 97, 105, 99, 93, 98, 107, 87, 106, 88,
419
89, 100, 109, 92, 101, 86, 96, 91, 0, 0,
420
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
422
0, 0, 0, 0, 0, 0, 0, 246, 233, 241,
423
223, 232, 262, 261, 234, 242, 236, 243, 237, 231,
424
0, 245, 225, 244, 226, 227, 238, 247, 230, 239,
425
224, 235, 229, 0, 0, 0, 0, 0, 0, 0,
426
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
427
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428
0, 0, 108, 0, 103, 322, 94, 341, 340, 95,
429
104, 97, 105, 99, 93, 98, 107, 87, 106, 88,
430
89, 100, 109, 92, 101, 86, 96, 91, 0, 0,
431
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
432
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
433
0, 0, 0, 0, 0, 0, 0, 108, 0, 103,
434
322, 94, 324, 323, 95, 104, 97, 105, 99, 93,
435
98, 107, 87, 106, 88, 89, 100, 109, 92, 101,
436
86, 96, 91, 0, 0, 0, 0, 0, 0, 0,
437
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
438
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
439
0, 0, 246, 233, 241, 223, 232, 256, 255, 234,
440
242, 236, 243, 237, 231, 0, 245, 225, 244, 226,
441
227, 238, 247, 230, 239, 224, 235, 229, 0, 0,
442
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
444
0, 0, 0, 0, 0, 0, 0, 108, 0, 103,
445
322, 94, 334, 333, 95, 104, 97, 105, 99, 93,
446
98, 107, 87, 106, 88, 89, 100, 109, 92, 101,
447
86, 96, 91, 0, 0, 0, 0, 0, 0, 0,
448
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
449
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
450
0, 0, 246, 233, 241, 223, 232, 266, 265, 234,
451
242, 236, 243, 237, 231, 0, 245, 225, 244, 226,
452
227, 238, 247, 230, 239, 224, 235, 229, 0, 0,
453
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
454
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
455
0, 0, 0, 0, 0, 0, 0, 30, 0, 25,
456
74, 15, 24, 10, 17, 26, 19, 27, 21, 14,
457
20, 29, 7, 28, 8, 9, 22, 31, 12, 23,
458
6, 18, 11, 0, 0, 0, 0, 0, 0, 0,
459
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460
13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461
0, 0, 246, 233, 241, 223, 232, 240, 228, 234,
462
242, 236, 243, 237, 231, 0, 245, 225, 244, 226,
463
227, 238, 247, 230, 239, 224, 235, 229, 0, 0,
464
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465
0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
466
0, 0, 0, 0, 0, 0, 0, 30, 387, 25,
467
5, 15, 24, 10, 17, 26, 19, 27, 21, 14,
468
20, 29, 7, 28, 8, 9, 22, 31, 12, 23,
469
6, 18, 11, 0, 0, 0, 0, 0, 0, 0,
470
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
471
13, 32, 0, 0, 0, 0, 0, 0, 0, 33,
472
0, 0, 30, 16, 25, 5, 15, 24, 10, 17,
473
26, 19, 27, 21, 14, 20, 29, 7, 28, 8,
474
9, 22, 31, 12, 23, 6, 18, 11, 0, 0,
475
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476
0, 0, 0, 0, 0, 13, 32, 0, 0, 0,
477
0, 0, 0, 0, 33, 0, 0,
479
380, 179, 210, 181, 425, 368, 205, 375, 371, 372,
480
161, 208, 204, 178, 185, 174, 201, 183, 188, 198,
481
190, 409, 407, 175, 184, 404, 267, 67, 412, 186,
482
400, 361, 193, 384, 406, 197, 67, 170, 391, 390,
483
411, 307, 331, 304, 309, 125, 124, 71, 132, 191,
484
311, 313, 110, 260, 352, 276, 0, 257, 259, 123,
485
296, 118, 308, 348, 376, 386, 315, 346, 312, 258,
486
215, 394, 360, 349, 358, 213, 359, 353, 356, 269,
487
0, 328, 281, 0, 370, 44, 44, 280, 328, 369,
488
0, 355, 402, 400, 383, 347, 413, 401, 382, 394,
489
158, 283, 426, 328, 328, 357, 280, 0, 44, 214,
490
0, 76, 122, 115, 137, 0, 150, 0, 143, 263,
491
253, 0, 68, 152, 137, 151, 150, 144, 143, 0,
492
0, 0, 0, 0, 327, 365, 268, 144, 35, 35,
493
282, 327, 363, 364, 0, 0, 0, 0, 0, 0,
494
0, 403, 0, 0, 342, 0, 327, 327, 0, 0,
495
0, 35, 78, 0, 75, 77, 0, 0, 0, 338,
496
335, 0, 0, 0, 0, 0, 0, 0, 0, 0,
497
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
498
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
499
0, 0, 0, 0, 0, 0, 0, 423, 0, 420,
500
418, 424, 422, 419, 0, 0, 0, 0, 0, 0,
501
0, 0, 0, 421, 0, 0, 0, 0, 0, 0,
502
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
503
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
504
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
507
0, 0, 0, 0, 0, 0, 0, 0};
509
const short QXmlStreamReader_Table::action_check [] = {
510
26, 18, 26, 14, 4, 4, 4, 26, 24, 14,
511
4, 26, 4, 4, 4, 4, 22, 55, 26, 26,
512
42, 4, 4, 44, 26, 22, 19, 12, 2, 2,
513
18, 2, 13, 0, 18, 4, 4, 2, 4, 26,
514
26, 20, 18, 4, 4, 4, 26, 11, 26, 26,
515
7, 8, 7, 8, 4, 7, 8, 6, 2, 9,
516
7, 8, 24, 25, 7, 8, 7, 8, 7, 8,
517
6, 36, 7, 8, 7, 8, 6, 26, 34, 35,
518
24, 34, 35, 7, 8, 11, 2, 12, 13, 20,
519
26, 12, 13, 15, 11, 13, 26, 11, 29, 11,
520
26, 19, 7, 8, 26, 11, 26, 27, -1, 26,
521
7, 8, 26, 4, 26, 18, 12, 13, 12, 13,
522
26, 2, 3, 26, 27, 16, 11, 20, -1, 24,
523
25, 26, 6, 7, 8, 28, 29, 21, 22, 6,
524
24, 6, 21, 22, 11, 24, -1, 37, 38, 39,
525
21, 22, -1, 24, -1, 40, 41, 2, 3, 26,
526
-1, 26, 17, 7, 8, 20, 16, -1, 23, -1,
527
15, 26, 27, 54, 24, 25, 26, 17, -1, 17,
528
20, -1, 20, 23, -1, 23, 26, 27, 26, 27,
529
34, 35, 2, 20, 4, 11, -1, -1, -1, 9,
530
45, -1, -1, 30, 31, 32, 33, -1, -1, -1,
531
-1, -1, -1, -1, -1, -1, 32, 33, -1, -1,
532
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
533
-1, 47, 48, 49, 50, 51, 52, 53, -1, -1,
534
-1, -1, -1, -1, -1, -1, -1, 2, 3, -1,
535
-1, -1, -1, -1, -1, 10, -1, 2, -1, 4,
536
15, 6, 7, 8, 9, 10, 11, 12, 13, 14,
537
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
538
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
539
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
540
-1, -1, 2, -1, 4, -1, 6, 7, 8, 9,
541
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
542
20, 21, 22, 23, 24, 25, 26, 27, 2, -1,
543
4, -1, 6, 7, 8, 9, 10, 11, 12, 13,
544
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
545
24, 25, 26, 27, -1, -1, -1, 2, -1, 4,
546
-1, 6, 7, 8, 9, 10, 11, 12, 13, 14,
547
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
548
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
549
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
550
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
551
-1, -1, 2, -1, 4, 5, 6, 7, 8, 9,
552
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
553
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
554
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
555
-1, -1, -1, -1, -1, 45, -1, -1, -1, -1,
556
-1, -1, -1, -1, -1, -1, -1, 2, 3, 4,
557
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
558
-1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
559
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
560
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
561
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
562
-1, -1, 2, -1, 4, 5, 6, 7, 8, 9,
563
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
564
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
565
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
566
-1, -1, -1, -1, -1, 45, -1, -1, -1, -1,
567
-1, -1, -1, -1, -1, -1, -1, 2, -1, 4,
568
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
569
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
570
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
571
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
572
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
573
-1, -1, 2, 3, 4, 5, 6, 7, 8, 9,
574
10, 11, 12, 13, 14, -1, 16, 17, 18, 19,
575
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
576
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
577
-1, -1, -1, -1, -1, 45, -1, -1, -1, -1,
578
-1, -1, -1, -1, -1, -1, -1, 2, -1, 4,
579
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
580
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
581
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
582
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
583
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
584
-1, -1, 2, 3, 4, 5, 6, 7, 8, 9,
585
10, 11, 12, 13, 14, -1, 16, 17, 18, 19,
586
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
587
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
588
-1, -1, -1, -1, -1, 45, -1, -1, -1, -1,
589
-1, -1, -1, -1, -1, -1, -1, 2, -1, 4,
590
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
591
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
592
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
593
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
594
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
595
-1, -1, 2, 3, 4, 5, 6, 7, 8, 9,
596
10, 11, 12, 13, 14, -1, 16, 17, 18, 19,
597
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
598
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
599
-1, -1, -1, -1, -1, 45, -1, -1, -1, -1,
600
-1, -1, -1, -1, -1, -1, -1, 2, 3, 4,
601
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
602
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
603
25, 26, 27, -1, -1, -1, -1, -1, -1, -1,
604
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
605
45, 46, -1, -1, -1, -1, -1, -1, -1, 54,
606
-1, -1, 2, 3, 4, 5, 6, 7, 8, 9,
607
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
608
20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
609
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
610
-1, -1, -1, -1, -1, 45, 46, -1, -1, -1,
611
-1, -1, -1, -1, 54, -1, -1,
613
20, 37, 12, 12, 1, 16, 20, 13, 13, 12,
614
12, 36, 12, 12, 12, 36, 12, 12, 12, 20,
615
12, 12, 49, 12, 37, 12, 72, 20, 13, 37,
616
20, 17, 12, 12, 12, 12, 20, 12, 12, 20,
617
12, 12, 54, 12, 17, 13, 13, 17, 12, 37,
618
12, 12, 68, 13, 20, 20, -1, 72, 17, 17,
619
12, 68, 45, 20, 12, 1, 17, 17, 44, 16,
620
12, 17, 54, 17, 17, 12, 17, 17, 17, 12,
621
-1, 10, 12, -1, 12, 10, 10, 17, 10, 17,
622
-1, 54, 12, 20, 17, 49, 14, 17, 21, 17,
623
38, 12, 4, 10, 10, 54, 17, -1, 10, 54,
624
-1, 10, 68, 68, 6, -1, 8, -1, 10, 72,
625
54, -1, 54, 54, 6, 17, 8, 19, 10, -1,
626
-1, -1, -1, -1, 63, 17, 13, 19, 63, 63,
627
51, 63, 24, 25, -1, -1, -1, -1, -1, -1,
628
-1, 78, -1, -1, 76, -1, 63, 63, -1, -1,
629
-1, 63, 61, -1, 63, 64, -1, -1, -1, 76,
630
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
631
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
632
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
633
-1, -1, -1, -1, -1, -1, -1, 3, -1, 5,
634
6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
635
-1, -1, -1, 19, -1, -1, -1, -1, -1, -1,
636
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
637
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
638
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
639
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
640
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
641
-1, -1, -1, -1, -1, -1, -1, -1};
644
template <typename T> class QXmlStreamSimpleStack {
648
inline QXmlStreamSimpleStack():data(0), tos(-1), cap(0){}
649
inline ~QXmlStreamSimpleStack(){ if (data) free(data); }
651
inline void reserve(int extraCapacity) {
652
if (tos + extraCapacity + 1 > cap) {
653
cap = qMax(tos + extraCapacity + 1, cap << 1 );
654
data = reinterpret_cast<T *>(realloc(data, cap * sizeof(T)));
659
inline T &push() { reserve(1); return data[++tos]; }
660
inline T &rawPush() { return data[++tos]; }
661
inline const T &top() const { return data[tos]; }
662
inline T &top() { return data[tos]; }
663
inline T &pop() { return data[tos--]; }
664
inline T &operator[](int index) { return data[index]; }
665
inline const T &at(int index) const { return data[index]; }
666
inline int size() const { return tos + 1; }
667
inline void resize(int s) { tos = s - 1; }
668
inline bool isEmpty() const { return tos < 0; }
669
inline void clear() { tos = -1; }
675
Q_DECLARE_TR_FUNCTIONS(QXmlStream)
678
class QXmlStreamPrivateTagStack {
680
struct NamespaceDeclaration
683
QStringRef namespaceUri;
689
QStringRef qualifiedName;
690
NamespaceDeclaration namespaceDeclaration;
691
int tagStackStringStorageSize;
692
int namespaceDeclarationsSize;
696
QXmlStreamPrivateTagStack();
697
QXmlStreamSimpleStack<NamespaceDeclaration> namespaceDeclarations;
698
QString tagStackStringStorage;
699
int tagStackStringStorageSize;
702
inline QStringRef addToStringStorage(const QStringRef &s) {
703
int pos = tagStackStringStorageSize;
705
if (pos != tagStackStringStorage.size())
706
tagStackStringStorage.resize(pos);
707
tagStackStringStorage.insert(pos, s.unicode(), sz);
708
tagStackStringStorageSize += sz;
709
return QStringRef(&tagStackStringStorage, pos, sz);
711
inline QStringRef addToStringStorage(const QString &s) {
712
int pos = tagStackStringStorageSize;
714
if (pos != tagStackStringStorage.size())
715
tagStackStringStorage.resize(pos);
716
tagStackStringStorage.insert(pos, s.unicode(), sz);
717
tagStackStringStorageSize += sz;
718
return QStringRef(&tagStackStringStorage, pos, sz);
721
QXmlStreamSimpleStack<Tag> tagStack;
724
inline Tag &tagStack_pop() {
725
Tag& tag = tagStack.pop();
726
tagStackStringStorageSize = tag.tagStackStringStorageSize;
727
namespaceDeclarations.resize(tag.namespaceDeclarationsSize);
728
tagsDone = tagStack.isEmpty();
731
inline Tag &tagStack_push() {
732
Tag &tag = tagStack.push();
733
tag.tagStackStringStorageSize = tagStackStringStorageSize;
734
tag.namespaceDeclarationsSize = namespaceDeclarations.size();
740
class QXmlStreamEntityResolver;
741
#ifndef QT_NO_XMLSTREAMREADER
742
class QXmlStreamReaderPrivate : public QXmlStreamReader_Table, public QXmlStreamPrivateTagStack{
743
QXmlStreamReader *q_ptr;
744
Q_DECLARE_PUBLIC(QXmlStreamReader)
746
QXmlStreamReaderPrivate(QXmlStreamReader *q);
747
~QXmlStreamReaderPrivate();
750
QByteArray rawReadBuffer;
751
QByteArray dataBuffer;
756
QXmlStreamSimpleStack<uint> putStack;
758
Entity(const QString& str = QString())
759
:value(str), external(false), unparsed(false), literal(false),
760
hasBeenParsed(false), isCurrentlyReferenced(false){}
761
static inline Entity createLiteral(const QString &entity)
762
{ Entity result(entity); result.literal = result.hasBeenParsed = true; return result; }
767
uint hasBeenParsed : 1;
768
uint isCurrentlyReferenced : 1;
770
QHash<QString, Entity> entityHash;
771
QHash<QString, Entity> parameterEntityHash;
772
QXmlStreamSimpleStack<Entity *>entityReferenceStack;
773
inline bool referenceEntity(Entity &entity) {
774
if (entity.isCurrentlyReferenced) {
775
raiseWellFormedError(QXmlStream::tr("Recursive entity detected."));
778
entity.isCurrentlyReferenced = true;
779
entityReferenceStack.push() = &entity;
780
injectToken(ENTITY_DONE);
787
#ifndef QT_NO_TEXTCODEC
789
QTextDecoder *decoder;
796
QXmlStreamReader::TokenType type;
797
QXmlStreamReader::Error error;
799
QString unresolvedEntity;
801
qint64 lineNumber, lastLineStart, characterOffset;
804
void write(const QString &);
805
void write(const char *);
808
QXmlStreamAttributes attributes;
809
QStringRef namespaceForPrefix(const QStringRef &prefix);
811
void resolvePublicNamespaces();
813
uint resolveCharRef(int symbolIndex);
814
bool checkStartDocument();
815
void startDocument();
817
void checkPublicLiteral(const QStringRef &publicId);
820
QStringRef lastAttributeValue;
821
bool lastAttributeIsCData;
822
struct DtdAttribute {
824
QStringRef attributeQualifiedName;
825
QStringRef attributePrefix;
826
QStringRef attributeName;
827
QStringRef defaultValue;
829
bool isNamespaceAttribute;
831
QXmlStreamSimpleStack<DtdAttribute> dtdAttributes;
832
struct NotationDeclaration {
837
QXmlStreamSimpleStack<NotationDeclaration> notationDeclarations;
838
QXmlStreamNotationDeclarations publicNotationDeclarations;
839
QXmlStreamNamespaceDeclarations publicNamespaceDeclarations;
841
struct EntityDeclaration {
843
QStringRef notationName;
849
inline void clear() {
851
notationName.clear();
855
parameter = external = false;
858
QXmlStreamSimpleStack<EntityDeclaration> entityDeclarations;
859
QXmlStreamEntityDeclarations publicEntityDeclarations;
863
QStringRef prefix, namespaceUri, qualifiedName, name;
864
QStringRef processingInstructionTarget, processingInstructionData;
865
QStringRef dtdName, dtdPublicId, dtdSystemId;
866
QStringRef documentVersion, documentEncoding;
867
uint isEmptyElement : 1;
868
uint isWhitespace : 1;
871
uint hasCheckedStartDocument : 1;
872
uint normalizeLiterals : 1;
874
uint inParseEntity : 1;
875
uint referenceToUnparsedEntityDetected : 1;
876
uint referenceToParameterEntityDetected : 1;
877
uint hasExternalDtdSubset : 1;
878
uint lockEncoding : 1;
879
uint namespaceProcessing : 1;
882
void resume(int rule);
884
inline bool entitiesMustBeDeclared() const {
885
return (!inParseEntity
887
|| (!referenceToUnparsedEntityDetected
888
&& !referenceToParameterEntityDetected // Errata 13 as of 2006-04-25
889
&& !hasExternalDtdSubset)));
904
inline void reallocateStack();
905
inline Value &sym(int index) const
906
{ return sym_stack[tos + index - 1]; }
908
inline void clearTextBuffer() {
910
textBuffer.resize(0);
911
textBuffer.reserve(256);
918
QXmlStreamSimpleStack<Attribute> attributeStack;
920
inline QStringRef symString(int index) {
921
const Value &symbol = sym(index);
922
return QStringRef(&textBuffer, symbol.pos + symbol.prefix, symbol.len - symbol.prefix);
924
inline QStringRef symName(int index) {
925
const Value &symbol = sym(index);
926
return QStringRef(&textBuffer, symbol.pos, symbol.len);
928
inline QStringRef symString(int index, int offset) {
929
const Value &symbol = sym(index);
930
return QStringRef(&textBuffer, symbol.pos + symbol.prefix + offset, symbol.len - symbol.prefix - offset);
932
inline QStringRef symPrefix(int index) {
933
const Value &symbol = sym(index);
935
return QStringRef(&textBuffer, symbol.pos, symbol.prefix - 1);
938
inline QStringRef symString(const Value &symbol) {
939
return QStringRef(&textBuffer, symbol.pos + symbol.prefix, symbol.len - symbol.prefix);
941
inline QStringRef symName(const Value &symbol) {
942
return QStringRef(&textBuffer, symbol.pos, symbol.len);
944
inline QStringRef symPrefix(const Value &symbol) {
946
return QStringRef(&textBuffer, symbol.pos, symbol.prefix - 1);
950
inline void clearSym() { Value &val = sym(1); val.pos = textBuffer.size(); val.len = 0; }
956
uint filterCarriageReturn();
957
inline uint getChar();
958
inline uint peekChar();
959
inline void putChar(uint c) { putStack.push() = c; }
960
inline void putChar(QChar c) { putStack.push() = c.unicode(); }
961
void putString(const QString &s, int from = 0);
962
void putStringLiteral(const QString &s);
963
void putReplacement(const QString &s);
964
void putReplacementInAttributeValue(const QString &s);
965
ushort getChar_helper();
967
bool scanUntil(const char *str, short tokenToInject = -1);
968
bool scanString(const char *str, short tokenToInject, bool requireSpace = true);
969
inline void injectToken(ushort tokenToInject) {
970
putChar(int(tokenToInject) << 16);
973
QString resolveUndeclaredEntity(const QString &name);
974
void parseEntity(const QString &value);
975
QXmlStreamReaderPrivate *entityParser;
977
bool scanAfterLangleBang();
978
bool scanPublicOrSystem();
980
bool scanAfterDefaultDecl();
984
// scan optimization functions. Not strictly necessary but LALR is
985
// not very well suited for scanning fast
986
int fastScanLiteralContent();
988
int fastScanContentCharList();
989
int fastScanName(int *prefix = 0);
990
inline int fastScanNMTOKEN();
994
inline void consumeRule(int);
996
void raiseError(QXmlStreamReader::Error error, const QString& message = QString());
997
void raiseWellFormedError(const QString &message);
999
QXmlStreamEntityResolver *entityResolver;
1003
Never assign to variable type directly. Instead use this function.
1005
This prevents errors from being ignored.
1007
inline void setType(const QXmlStreamReader::TokenType t)
1009
if(type != QXmlStreamReader::Invalid)
1014
bool QXmlStreamReaderPrivate::parse()
1016
// cleanup currently reported token
1019
case QXmlStreamReader::StartElement:
1022
qualifiedName.clear();
1023
namespaceUri.clear();
1024
if (publicNamespaceDeclarations.size())
1025
publicNamespaceDeclarations.clear();
1026
if (attributes.size())
1027
attributes.resize(0);
1028
if (isEmptyElement) {
1029
setType(QXmlStreamReader::EndElement);
1030
Tag &tag = tagStack_pop();
1031
namespaceUri = tag.namespaceDeclaration.namespaceUri;
1033
qualifiedName = tag.qualifiedName;
1034
isEmptyElement = false;
1039
case QXmlStreamReader::EndElement:
1042
qualifiedName.clear();
1043
namespaceUri.clear();
1046
case QXmlStreamReader::DTD:
1047
publicNotationDeclarations.clear();
1048
publicEntityDeclarations.clear();
1050
dtdPublicId.clear();
1051
dtdSystemId.clear();
1053
case QXmlStreamReader::Comment:
1054
case QXmlStreamReader::Characters:
1056
isWhitespace = true;
1060
case QXmlStreamReader::EntityReference:
1065
case QXmlStreamReader::ProcessingInstruction:
1066
processingInstructionTarget.clear();
1067
processingInstructionData.clear();
1070
case QXmlStreamReader::NoToken:
1071
case QXmlStreamReader::Invalid:
1073
case QXmlStreamReader::StartDocument:
1074
lockEncoding = true;
1075
documentVersion.clear();
1076
documentEncoding.clear();
1077
#ifndef QT_NO_TEXTCODEC
1078
if(decoder->hasFailure()) {
1079
raiseWellFormedError(QXmlStream::tr("Encountered incorrectly encoded content."));
1090
setType(QXmlStreamReader::NoToken);
1093
// the main parse loop
1096
if (resumeReduction) {
1097
act = state_stack[tos-1];
1098
r = resumeReduction;
1099
resumeReduction = 0;
1100
goto ResumeReduction;
1103
act = state_stack[tos];
1106
if (token == -1 && - TERMINAL_COUNT != action_index[act]) {
1107
uint cu = getChar();
1110
if (cu & 0xff0000) {
1112
} else switch (token_char) {
1120
if ((token_char = filterCarriageReturn())) {
1122
lastLineStart = characterOffset + readBufferPos;
1131
if (!tagsDone && !inParseEntity) {
1132
int a = t_action(act, token);
1134
raiseError(QXmlStreamReader::PrematureEndOfDocumentError);
1142
lastLineStart = characterOffset + readBufferPos;
1211
token = QUESTIONMARK;
1237
act = t_action (act, token);
1238
if (act == ACCEPT_STATE) {
1239
// reset the parser in case someone resumes (process instructions can follow a valid document)
1241
state_stack[tos++] = 0;
1242
state_stack[tos] = 0;
1244
} else if (act > 0) {
1245
if (++tos == stack_size-1)
1248
Value &val = sym_stack[tos];
1250
val.pos = textBuffer.size();
1254
textBuffer += QChar(token_char);
1256
state_stack[tos] = act;
1260
} else if (act < 0) {
1263
#if defined (QLALR_DEBUG)
1264
int ridx = rule_index[r];
1265
printf ("%3d) %s ::=", r + 1, spell[rule_info[ridx]]);
1267
for (int i = ridx; i < ridx + rhs[r]; ++i) {
1268
int symbol = rule_info[i];
1269
if (const char *name = spell[symbol])
1270
printf (" %s", name);
1272
printf (" #%d", symbol);
1278
act = state_stack[tos++];
1283
setType(QXmlStreamReader::EndDocument);
1287
if (type != QXmlStreamReader::Invalid) {
1288
if (hasSeenTag || inParseEntity) {
1289
setType(QXmlStreamReader::EndDocument);
1291
raiseError(QXmlStreamReader::NotWellFormedError, QXmlStream::tr("Start tag expected."));
1294
state_stack[tos++] = 0;
1295
state_stack[tos] = 0;
1302
entityReferenceStack.pop()->isCurrentlyReferenced = false;
1307
if (!scanString(spell[VERSION], VERSION, false) && atEnd) {
1314
setType(QXmlStreamReader::StartDocument);
1315
documentVersion = symString(6);
1320
hasExternalDtdSubset = true;
1321
dtdSystemId = symString(2);
1325
checkPublicLiteral(symString(2));
1326
dtdPublicId = symString(2);
1327
dtdSystemId = symString(4);
1328
hasExternalDtdSubset = true;
1332
if (!scanPublicOrSystem() && atEnd) {
1336
dtdName = symString(3);
1341
dtdName = symString(3);
1346
setType(QXmlStreamReader::DTD);
1359
if (!scanString(spell[EMPTY], EMPTY, false)
1360
&& !scanString(spell[ANY], ANY, false)
1368
if (!scanString(spell[PCDATA], PCDATA, false) && atEnd) {
1375
lastAttributeIsCData = true;
1379
if (!scanAfterDefaultDecl() && atEnd) {
1387
lastAttributeValue.clear();
1388
lastAttributeIsCData = false;
1389
if (!scanAttType() && atEnd) {
1396
DtdAttribute &dtdAttribute = dtdAttributes.push();
1397
dtdAttribute.tagName.clear();
1398
dtdAttribute.isCDATA = lastAttributeIsCData;
1399
dtdAttribute.attributePrefix = addToStringStorage(symPrefix(1));
1400
dtdAttribute.attributeName = addToStringStorage(symString(1));
1401
dtdAttribute.attributeQualifiedName = addToStringStorage(symName(1));
1402
dtdAttribute.isNamespaceAttribute = (dtdAttribute.attributePrefix == QLatin1String("xmlns")
1403
|| (dtdAttribute.attributePrefix.isEmpty()
1404
&& dtdAttribute.attributeName == QLatin1String("xmlns")));
1405
if (lastAttributeValue.isNull()) {
1406
dtdAttribute.defaultValue.clear();
1408
if (dtdAttribute.isCDATA)
1409
dtdAttribute.defaultValue = addToStringStorage(lastAttributeValue);
1411
dtdAttribute.defaultValue = addToStringStorage(lastAttributeValue.toString().simplified());
1417
if (referenceToUnparsedEntityDetected && !standalone)
1419
int n = dtdAttributes.size();
1420
QStringRef tagName = addToStringStorage(symName(3));
1422
DtdAttribute &dtdAttribute = dtdAttributes[n];
1423
if (!dtdAttribute.tagName.isNull())
1425
dtdAttribute.tagName = tagName;
1426
for (int i = 0; i < n; ++i) {
1427
if ((dtdAttributes[i].tagName.isNull() || dtdAttributes[i].tagName == tagName)
1428
&& dtdAttributes[i].attributeQualifiedName == dtdAttribute.attributeQualifiedName) {
1429
dtdAttribute.attributeQualifiedName.clear(); // redefined, delete it
1437
if (!scanPublicOrSystem() && atEnd) {
1441
EntityDeclaration &entityDeclaration = entityDeclarations.push();
1442
entityDeclaration.clear();
1443
entityDeclaration.name = symString(3);
1447
if (!scanPublicOrSystem() && atEnd) {
1451
EntityDeclaration &entityDeclaration = entityDeclarations.push();
1452
entityDeclaration.clear();
1453
entityDeclaration.name = symString(5);
1454
entityDeclaration.parameter = true;
1458
if (!scanNData() && atEnd) {
1462
EntityDeclaration &entityDeclaration = entityDeclarations.top();
1463
entityDeclaration.systemId = symString(3);
1464
entityDeclaration.external = true;
1468
if (!scanNData() && atEnd) {
1472
EntityDeclaration &entityDeclaration = entityDeclarations.top();
1473
checkPublicLiteral((entityDeclaration.publicId = symString(3)));
1474
entityDeclaration.systemId = symString(5);
1475
entityDeclaration.external = true;
1479
EntityDeclaration &entityDeclaration = entityDeclarations.top();
1480
entityDeclaration.notationName = symString(3);
1481
if (entityDeclaration.parameter)
1482
raiseWellFormedError(QXmlStream::tr("NDATA in parameter entity declaration."));
1488
if (referenceToUnparsedEntityDetected && !standalone) {
1489
entityDeclarations.pop();
1492
EntityDeclaration &entityDeclaration = entityDeclarations.top();
1493
if (!entityDeclaration.external)
1494
entityDeclaration.value = symString(2);
1495
QString entityName = entityDeclaration.name.toString();
1496
QHash<QString, Entity> &hash = entityDeclaration.parameter ? parameterEntityHash : entityHash;
1497
if (!hash.contains(entityName)) {
1498
Entity entity(entityDeclaration.value.toString());
1499
entity.unparsed = (!entityDeclaration.notationName.isNull());
1500
entity.external = entityDeclaration.external;
1501
hash.insert(entityName, entity);
1506
setType(QXmlStreamReader::ProcessingInstruction);
1507
int pos = sym(4).pos + sym(4).len;
1508
processingInstructionTarget = symString(3);
1509
if (scanUntil("?>")) {
1510
processingInstructionData = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 2);
1511
const QString piTarget(processingInstructionTarget.toString());
1512
if (!piTarget.compare(QLatin1String("xml"), Qt::CaseInsensitive)) {
1513
raiseWellFormedError(QXmlStream::tr("XML declaration not at start of document."));
1515
else if(!QXmlUtils::isNCName(piTarget))
1516
raiseWellFormedError(QXmlStream::tr("%1 is an invalid processing instruction name.").arg(piTarget));
1517
} else if (type != QXmlStreamReader::Invalid){
1524
setType(QXmlStreamReader::ProcessingInstruction);
1525
processingInstructionTarget = symString(3);
1526
if (!processingInstructionTarget.toString().compare(QLatin1String("xml"), Qt::CaseInsensitive))
1527
raiseWellFormedError(QXmlStream::tr("Invalid processing instruction name."));
1531
if (!scanAfterLangleBang() && atEnd) {
1538
if (!scanUntil("--")) {
1545
setType(QXmlStreamReader::Comment);
1546
int pos = sym(1).pos + 4;
1547
text = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 3);
1551
setType(QXmlStreamReader::Characters);
1553
isWhitespace = false;
1554
int pos = sym(2).pos;
1555
if (scanUntil("]]>", -1)) {
1556
text = QStringRef(&textBuffer, pos, textBuffer.size() - pos - 3);
1564
if (!scanPublicOrSystem() && atEnd) {
1568
NotationDeclaration ¬ationDeclaration = notationDeclarations.push();
1569
notationDeclaration.name = symString(3);
1573
NotationDeclaration ¬ationDeclaration = notationDeclarations.top();
1574
notationDeclaration.systemId = symString(3);
1575
notationDeclaration.publicId.clear();
1579
NotationDeclaration ¬ationDeclaration = notationDeclarations.top();
1580
notationDeclaration.systemId.clear();
1581
checkPublicLiteral((notationDeclaration.publicId = symString(3)));
1585
NotationDeclaration ¬ationDeclaration = notationDeclarations.top();
1586
checkPublicLiteral((notationDeclaration.publicId = symString(3)));
1587
notationDeclaration.systemId = symString(5);
1591
isWhitespace = false;
1595
sym(1).len += fastScanContentCharList();
1596
if (atEnd && !inParseEntity) {
1603
if (!textBuffer.isEmpty()) {
1604
setType(QXmlStreamReader::Characters);
1623
sym(1).len += sym(2).len;
1627
if (normalizeLiterals)
1628
textBuffer.data()[textBuffer.size()-1] = QLatin1Char(' ');
1632
sym(1).len += fastScanLiteralContent();
1640
if (!QXmlUtils::isPublicID(symString(1).toString())) {
1641
raiseWellFormedError(QXmlStream::tr("%1 is an invalid PUBLIC identifier.").arg(symString(1).toString()));
1661
sym(1).len += sym(2).len;
1672
lastAttributeValue = symString(1);
1679
sym(1).len += sym(2).len;
1683
QStringRef prefix = symPrefix(1);
1684
if (prefix.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) {
1685
NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push();
1686
namespaceDeclaration.prefix.clear();
1688
const QStringRef ns(symString(5));
1689
if(ns == QLatin1String("http://www.w3.org/2000/xmlns/") ||
1690
ns == QLatin1String("http://www.w3.org/XML/1998/namespace"))
1691
raiseWellFormedError(QXmlStream::tr("Illegal namespace declaration."));
1693
namespaceDeclaration.namespaceUri = addToStringStorage(ns);
1695
Attribute &attribute = attributeStack.push();
1696
attribute.key = sym(1);
1697
attribute.value = sym(5);
1699
QStringRef attributeQualifiedName = symName(1);
1700
bool normalize = false;
1701
for (int a = 0; a < dtdAttributes.size(); ++a) {
1702
DtdAttribute &dtdAttribute = dtdAttributes[a];
1703
if (!dtdAttribute.isCDATA
1704
&& dtdAttribute.tagName == qualifiedName
1705
&& dtdAttribute.attributeQualifiedName == attributeQualifiedName
1712
// normalize attribute value (simplify and trim)
1713
int pos = textBuffer.size();
1715
bool wasSpace = true;
1716
for (int i = 0; i < attribute.value.len; ++i) {
1717
QChar c = textBuffer.at(attribute.value.pos + i);
1718
if (c.unicode() == ' ') {
1725
textBuffer += textBuffer.at(attribute.value.pos + i);
1729
while (n && textBuffer.at(pos + n - 1).unicode() == ' ')
1731
attribute.value.pos = pos;
1732
attribute.value.len = n;
1734
if (prefix == QLatin1String("xmlns") && namespaceProcessing) {
1735
NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push();
1736
QStringRef namespacePrefix = symString(attribute.key);
1737
QStringRef namespaceUri = symString(attribute.value);
1738
attributeStack.pop();
1739
if (((namespacePrefix == QLatin1String("xml"))
1740
^ (namespaceUri == QLatin1String("http://www.w3.org/XML/1998/namespace")))
1741
|| namespaceUri == QLatin1String("http://www.w3.org/2000/xmlns/")
1742
|| namespaceUri.isEmpty()
1743
|| namespacePrefix == QLatin1String("xmlns"))
1744
raiseWellFormedError(QXmlStream::tr("Illegal namespace declaration."));
1746
namespaceDeclaration.prefix = addToStringStorage(namespacePrefix);
1747
namespaceDeclaration.namespaceUri = addToStringStorage(namespaceUri);
1753
normalizeLiterals = true;
1754
Tag &tag = tagStack_push();
1755
prefix = tag.namespaceDeclaration.prefix = addToStringStorage(symPrefix(2));
1756
name = tag.name = addToStringStorage(symString(2));
1757
qualifiedName = tag.qualifiedName = addToStringStorage(symName(2));
1758
if ((!prefix.isEmpty() && !QXmlUtils::isNCName(prefix)) || !QXmlUtils::isNCName(name))
1759
raiseWellFormedError(QXmlStream::tr("Invalid XML name."));
1763
isEmptyElement = true;
1767
setType(QXmlStreamReader::StartElement);
1769
if (tagStack.size() == 1 && hasSeenTag && !inParseEntity)
1770
raiseWellFormedError(QXmlStream::tr("Extra content at end of document."));
1775
setType(QXmlStreamReader::EndElement);
1776
Tag &tag = tagStack_pop();
1778
namespaceUri = tag.namespaceDeclaration.namespaceUri;
1780
qualifiedName = tag.qualifiedName;
1781
if (qualifiedName != symName(3))
1782
raiseWellFormedError(QXmlStream::tr("Opening and ending tag mismatch."));
1786
if (entitiesMustBeDeclared()) {
1787
raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(unresolvedEntity));
1790
setType(QXmlStreamReader::EntityReference);
1791
name = &unresolvedEntity;
1795
sym(1).len += sym(2).len + 1;
1796
QString reference = symString(2).toString();
1797
if (entityHash.contains(reference)) {
1798
Entity &entity = entityHash[reference];
1799
if (entity.unparsed) {
1800
raiseWellFormedError(QXmlStream::tr("Reference to unparsed entity '%1'.").arg(reference));
1802
if (!entity.hasBeenParsed) {
1803
parseEntity(entity.value);
1804
entity.hasBeenParsed = true;
1807
putStringLiteral(entity.value);
1808
else if (referenceEntity(entity))
1809
putReplacement(entity.value);
1810
textBuffer.chop(2 + sym(2).len);
1816
if (entityResolver) {
1817
QString replacementText = resolveUndeclaredEntity(reference);
1818
if (!replacementText.isNull()) {
1819
putReplacement(replacementText);
1820
textBuffer.chop(2 + sym(2).len);
1826
injectToken(UNRESOLVED_ENTITY);
1827
unresolvedEntity = symString(2).toString();
1828
textBuffer.chop(2 + sym(2).len);
1834
sym(1).len += sym(2).len + 1;
1835
QString reference = symString(2).toString();
1836
if (parameterEntityHash.contains(reference)) {
1837
referenceToParameterEntityDetected = true;
1838
Entity &entity = parameterEntityHash[reference];
1839
if (entity.unparsed || entity.external) {
1840
referenceToUnparsedEntityDetected = true;
1842
if (referenceEntity(entity))
1843
putString(entity.value);
1844
textBuffer.chop(2 + sym(2).len);
1847
} else if (entitiesMustBeDeclared()) {
1848
raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(symString(2).toString()));
1853
sym(1).len += sym(2).len + 1;
1857
sym(1).len += sym(2).len + 1;
1858
QString reference = symString(2).toString();
1859
if (entityHash.contains(reference)) {
1860
Entity &entity = entityHash[reference];
1861
if (entity.unparsed || entity.value.isNull()) {
1862
raiseWellFormedError(QXmlStream::tr("Reference to external entity '%1' in attribute value.").arg(reference));
1865
if (!entity.hasBeenParsed) {
1866
parseEntity(entity.value);
1867
entity.hasBeenParsed = true;
1870
putStringLiteral(entity.value);
1871
else if (referenceEntity(entity))
1872
putReplacementInAttributeValue(entity.value);
1873
textBuffer.chop(2 + sym(2).len);
1878
if (entityResolver) {
1879
QString replacementText = resolveUndeclaredEntity(reference);
1880
if (!replacementText.isNull()) {
1881
putReplacement(replacementText);
1882
textBuffer.chop(2 + sym(2).len);
1887
if (entitiesMustBeDeclared()) {
1888
raiseWellFormedError(QXmlStream::tr("Entity '%1' not declared.").arg(reference));
1893
if (uint s = resolveCharRef(3)) {
1895
putStringLiteral(QString::fromUcs4(&s, 1));
1897
putChar((LETTER << 16) | s);
1899
textBuffer.chop(3 + sym(3).len);
1902
raiseWellFormedError(QXmlStream::tr("Invalid character reference."));
1908
sym(1).len += sym(2).len;
1912
sym(1).len += fastScanSpace();
1920
sym(1).len += fastScanName(&sym(1).prefix);
1928
sym(1).len += fastScanName();
1940
sym(1).len += fastScanNMTOKEN();
1951
act = state_stack[tos] = nt_action (act, lhs[r] - TERMINAL_COUNT);
1952
if (type != QXmlStreamReader::NoToken)
1961
#endif //QT_NO_XMLSTREAMREADER.xml
1964
#endif // QXMLSTREAM_P_H