194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
}
- (void)parseBuffer: (const char*)buf
withSize: (size_t)size
{
size_t i, last = 0;
if (finishedParsing) {
for (i = 0; i < size; i++)
if (buf[i] != ' ' && buf[i] != '\t' &&
buf[i] != '\n' && buf[i] != '\r')
@throw [OFMalformedXMLException
newWithClass: isa];
return;
}
for (i = 0; i < size; i++) {
size_t j = i;
lookup_table[state](self, selectors[state], buf, &i, &last);
/* Ensure we don't count this character twice */
if (i != j)
|
<
<
<
<
<
<
<
<
<
<
|
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
}
- (void)parseBuffer: (const char*)buf
withSize: (size_t)size
{
size_t i, last = 0;
for (i = 0; i < size; i++) {
size_t j = i;
lookup_table[state](self, selectors[state], buf, &i, &last);
/* Ensure we don't count this character twice */
if (i != j)
|
273
274
275
276
277
278
279
280
281
282
283
284
285
286
|
/* Not in a tag */
- (void)_parseOutsideTagWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
size_t len;
if (buf[*i] != '<')
return;
if ((len = *i - *last) > 0)
[cache appendCStringWithoutUTF8Checking: buf + *last
length: len];
|
>
>
>
>
|
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
|
/* Not in a tag */
- (void)_parseOutsideTagWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
size_t len;
if (finishedParsing && buf[*i] != ' ' && buf[*i] != '\t' &&
buf[*i] != '\n' && buf[*i] != '\r' && buf[*i] != '<')
@throw [OFMalformedXMLException newWithClass: isa];
if (buf[*i] != '<')
return;
if ((len = *i - *last) > 0)
[cache appendCStringWithoutUTF8Checking: buf + *last
length: len];
|
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
}
/* Tag was just opened */
- (void)_parseTagOpenedWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
switch (buf[*i]) {
case '?':
*last = *i + 1;
state = OF_XMLPARSER_IN_PROCESSING_INSTRUCTIONS;
level = 0;
break;
case '/':
|
>
>
>
|
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
}
/* Tag was just opened */
- (void)_parseTagOpenedWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
if (finishedParsing && buf[*i] != '!')
@throw [OFMalformedXMLException newWithClass: isa];
switch (buf[*i]) {
case '?':
*last = *i + 1;
state = OF_XMLPARSER_IN_PROCESSING_INSTRUCTIONS;
level = 0;
break;
case '/':
|
734
735
736
737
738
739
740
741
742
743
744
745
746
747
|
}
/* In <! */
- (void)_parseInExclamationMarkWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
if (buf[*i] == '-')
state = OF_XMLPARSER_IN_COMMENT_OPENING;
else if (buf[*i] == '[') {
state = OF_XMLPARSER_IN_CDATA_OPENING;
level = 0;
} else if (buf[*i] == 'D') {
state = OF_XMLPARSER_IN_DOCTYPE;
|
>
>
>
|
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
|
}
/* In <! */
- (void)_parseInExclamationMarkWithBuffer: (const char*)buf
i: (size_t*)i
last: (size_t*)last
{
if (finishedParsing && buf[*i] != '-')
@throw [OFMalformedXMLException newWithClass: isa];
if (buf[*i] == '-')
state = OF_XMLPARSER_IN_COMMENT_OPENING;
else if (buf[*i] == '[') {
state = OF_XMLPARSER_IN_CDATA_OPENING;
level = 0;
} else if (buf[*i] == 'D') {
state = OF_XMLPARSER_IN_DOCTYPE;
|