|
1 /* |
|
2 * Summary: internals routines exported by the parser. |
|
3 * Description: this module exports a number of internal parsing routines |
|
4 * they are not really all intended for applications but |
|
5 * can prove useful doing low level processing. |
|
6 * |
|
7 * Copy: See Copyright for the status of this software. |
|
8 * |
|
9 * Author: Daniel Veillard |
|
10 */ |
|
11 |
|
12 #ifndef __XML_PARSER_INTERNALS_H__ |
|
13 #define __XML_PARSER_INTERNALS_H__ |
|
14 |
|
15 #include <libxml/xmlversion.h> |
|
16 #include <libxml/parser.h> |
|
17 #include <libxml/HTMLparser.h> |
|
18 #include <libxml/chvalid.h> |
|
19 |
|
20 #ifdef __cplusplus |
|
21 extern "C" { |
|
22 #endif |
|
23 |
|
24 /** |
|
25 * xmlParserMaxDepth: |
|
26 * |
|
27 * arbitrary depth limit for the XML documents that we allow to |
|
28 * process. This is not a limitation of the parser but a safety |
|
29 * boundary feature. |
|
30 */ |
|
31 XMLPUBVAR unsigned int xmlParserMaxDepth; |
|
32 |
|
33 /** |
|
34 * XML_MAX_NAMELEN: |
|
35 * |
|
36 * Identifiers can be longer, but this will be more costly |
|
37 * at runtime. |
|
38 */ |
|
39 #define XML_MAX_NAMELEN 100 |
|
40 |
|
41 /** |
|
42 * INPUT_CHUNK: |
|
43 * |
|
44 * The parser tries to always have that amount of input ready. |
|
45 * One of the point is providing context when reporting errors. |
|
46 */ |
|
47 #define INPUT_CHUNK 250 |
|
48 |
|
49 /************************************************************************ |
|
50 * * |
|
51 * UNICODE version of the macros. * |
|
52 * * |
|
53 ************************************************************************/ |
|
54 /** |
|
55 * IS_BYTE_CHAR: |
|
56 * @c: an byte value (int) |
|
57 * |
|
58 * Macro to check the following production in the XML spec: |
|
59 * |
|
60 * [2] Char ::= #x9 | #xA | #xD | [#x20...] |
|
61 * any byte character in the accepted range |
|
62 */ |
|
63 #define IS_BYTE_CHAR(c) xmlIsChar_ch(c) |
|
64 |
|
65 /** |
|
66 * IS_CHAR: |
|
67 * @c: an UNICODE value (int) |
|
68 * |
|
69 * Macro to check the following production in the XML spec: |
|
70 * |
|
71 * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
|
72 * | [#x10000-#x10FFFF] |
|
73 * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. |
|
74 */ |
|
75 #define IS_CHAR(c) xmlIsCharQ(c) |
|
76 |
|
77 /** |
|
78 * IS_CHAR_CH: |
|
79 * @c: an xmlChar (usually an unsigned char) |
|
80 * |
|
81 * Behaves like IS_CHAR on single-byte value |
|
82 */ |
|
83 #define IS_CHAR_CH(c) xmlIsChar_ch(c) |
|
84 |
|
85 /** |
|
86 * IS_BLANK: |
|
87 * @c: an UNICODE value (int) |
|
88 * |
|
89 * Macro to check the following production in the XML spec: |
|
90 * |
|
91 * [3] S ::= (#x20 | #x9 | #xD | #xA)+ |
|
92 */ |
|
93 #define IS_BLANK(c) xmlIsBlankQ(c) |
|
94 |
|
95 /** |
|
96 * IS_BLANK_CH: |
|
97 * @c: an xmlChar value (normally unsigned char) |
|
98 * |
|
99 * Behaviour same as IS_BLANK |
|
100 */ |
|
101 #define IS_BLANK_CH(c) xmlIsBlank_ch(c) |
|
102 |
|
103 /** |
|
104 * IS_BASECHAR: |
|
105 * @c: an UNICODE value (int) |
|
106 * |
|
107 * Macro to check the following production in the XML spec: |
|
108 * |
|
109 * [85] BaseChar ::= ... long list see REC ... |
|
110 */ |
|
111 #define IS_BASECHAR(c) xmlIsBaseCharQ(c) |
|
112 |
|
113 /** |
|
114 * IS_DIGIT: |
|
115 * @c: an UNICODE value (int) |
|
116 * |
|
117 * Macro to check the following production in the XML spec: |
|
118 * |
|
119 * [88] Digit ::= ... long list see REC ... |
|
120 */ |
|
121 #define IS_DIGIT(c) xmlIsDigitQ(c) |
|
122 |
|
123 /** |
|
124 * IS_DIGIT_CH: |
|
125 * @c: an xmlChar value (usually an unsigned char) |
|
126 * |
|
127 * Behaves like IS_DIGIT but with a single byte argument |
|
128 */ |
|
129 #define IS_DIGIT_CH(c) xmlIsDigit_ch(c) |
|
130 |
|
131 /** |
|
132 * IS_COMBINING: |
|
133 * @c: an UNICODE value (int) |
|
134 * |
|
135 * Macro to check the following production in the XML spec: |
|
136 * |
|
137 * [87] CombiningChar ::= ... long list see REC ... |
|
138 */ |
|
139 #define IS_COMBINING(c) xmlIsCombiningQ(c) |
|
140 |
|
141 /** |
|
142 * IS_COMBINING_CH: |
|
143 * @c: an xmlChar (usually an unsigned char) |
|
144 * |
|
145 * Always false (all combining chars > 0xff) |
|
146 */ |
|
147 #define IS_COMBINING_CH(c) 0 |
|
148 |
|
149 /** |
|
150 * IS_EXTENDER: |
|
151 * @c: an UNICODE value (int) |
|
152 * |
|
153 * Macro to check the following production in the XML spec: |
|
154 * |
|
155 * |
|
156 * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | |
|
157 * #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | |
|
158 * [#x309D-#x309E] | [#x30FC-#x30FE] |
|
159 */ |
|
160 #define IS_EXTENDER(c) xmlIsExtenderQ(c) |
|
161 |
|
162 /** |
|
163 * IS_EXTENDER_CH: |
|
164 * @c: an xmlChar value (usually an unsigned char) |
|
165 * |
|
166 * Behaves like IS_EXTENDER but with a single-byte argument |
|
167 */ |
|
168 #define IS_EXTENDER_CH(c) xmlIsExtender_ch(c) |
|
169 |
|
170 /** |
|
171 * IS_IDEOGRAPHIC: |
|
172 * @c: an UNICODE value (int) |
|
173 * |
|
174 * Macro to check the following production in the XML spec: |
|
175 * |
|
176 * |
|
177 * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] |
|
178 */ |
|
179 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c) |
|
180 |
|
181 /** |
|
182 * IS_LETTER: |
|
183 * @c: an UNICODE value (int) |
|
184 * |
|
185 * Macro to check the following production in the XML spec: |
|
186 * |
|
187 * |
|
188 * [84] Letter ::= BaseChar | Ideographic |
|
189 */ |
|
190 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c)) |
|
191 |
|
192 /** |
|
193 * IS_LETTER_CH: |
|
194 * @c: an xmlChar value (normally unsigned char) |
|
195 * |
|
196 * Macro behaves like IS_LETTER, but only check base chars |
|
197 * |
|
198 */ |
|
199 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c) |
|
200 |
|
201 /** |
|
202 * IS_ASCII_LETTER: |
|
203 * @c: an xmlChar value |
|
204 * |
|
205 * Macro to check [a-zA-Z] |
|
206 * |
|
207 */ |
|
208 #define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ |
|
209 ((0x61 <= (c)) && ((c) <= 0x7a))) |
|
210 |
|
211 /** |
|
212 * IS_ASCII_DIGIT: |
|
213 * @c: an xmlChar value |
|
214 * |
|
215 * Macro to check [0-9] |
|
216 * |
|
217 */ |
|
218 #define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39)) |
|
219 |
|
220 /** |
|
221 * IS_PUBIDCHAR: |
|
222 * @c: an UNICODE value (int) |
|
223 * |
|
224 * Macro to check the following production in the XML spec: |
|
225 * |
|
226 * |
|
227 * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] |
|
228 */ |
|
229 #define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c) |
|
230 |
|
231 /** |
|
232 * IS_PUBIDCHAR_CH: |
|
233 * @c: an xmlChar value (normally unsigned char) |
|
234 * |
|
235 * Same as IS_PUBIDCHAR but for single-byte value |
|
236 */ |
|
237 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c) |
|
238 |
|
239 /** |
|
240 * SKIP_EOL: |
|
241 * @p: and UTF8 string pointer |
|
242 * |
|
243 * Skips the end of line chars. |
|
244 */ |
|
245 #define SKIP_EOL(p) \ |
|
246 if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ |
|
247 if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; } |
|
248 |
|
249 /** |
|
250 * MOVETO_ENDTAG: |
|
251 * @p: and UTF8 string pointer |
|
252 * |
|
253 * Skips to the next '>' char. |
|
254 */ |
|
255 #define MOVETO_ENDTAG(p) \ |
|
256 while ((*p) && (*(p) != '>')) (p)++ |
|
257 |
|
258 /** |
|
259 * MOVETO_STARTTAG: |
|
260 * @p: and UTF8 string pointer |
|
261 * |
|
262 * Skips to the next '<' char. |
|
263 */ |
|
264 #define MOVETO_STARTTAG(p) \ |
|
265 while ((*p) && (*(p) != '<')) (p)++ |
|
266 |
|
267 /** |
|
268 * Global variables used for predefined strings. |
|
269 */ |
|
270 XMLPUBVAR const xmlChar xmlStringText[]; |
|
271 XMLPUBVAR const xmlChar xmlStringTextNoenc[]; |
|
272 XMLPUBVAR const xmlChar xmlStringComment[]; |
|
273 |
|
274 /* |
|
275 * Function to finish the work of the macros where needed. |
|
276 */ |
|
277 XMLPUBFUN int XMLCALL xmlIsLetter (int c); |
|
278 |
|
279 /** |
|
280 * Parser context. |
|
281 */ |
|
282 XMLPUBFUN xmlParserCtxtPtr XMLCALL |
|
283 xmlCreateFileParserCtxt (const char *filename); |
|
284 XMLPUBFUN xmlParserCtxtPtr XMLCALL |
|
285 xmlCreateURLParserCtxt (const char *filename, |
|
286 int options); |
|
287 XMLPUBFUN xmlParserCtxtPtr XMLCALL |
|
288 xmlCreateMemoryParserCtxt(const char *buffer, |
|
289 int size); |
|
290 XMLPUBFUN xmlParserCtxtPtr XMLCALL |
|
291 xmlCreateEntityParserCtxt(const xmlChar *URL, |
|
292 const xmlChar *ID, |
|
293 const xmlChar *base); |
|
294 XMLPUBFUN int XMLCALL |
|
295 xmlSwitchEncoding (xmlParserCtxtPtr ctxt, |
|
296 xmlCharEncoding enc); |
|
297 XMLPUBFUN int XMLCALL |
|
298 xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, |
|
299 xmlCharEncodingHandlerPtr handler); |
|
300 XMLPUBFUN int XMLCALL |
|
301 xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, |
|
302 xmlParserInputPtr input, |
|
303 xmlCharEncodingHandlerPtr handler); |
|
304 |
|
305 #ifdef IN_LIBXML |
|
306 /* internal error reporting */ |
|
307 XMLPUBFUN void XMLCALL |
|
308 __xmlErrEncoding (xmlParserCtxtPtr ctxt, |
|
309 xmlParserErrors xmlerr, |
|
310 const char *msg, |
|
311 const xmlChar * str1, |
|
312 const xmlChar * str2); |
|
313 #endif |
|
314 |
|
315 /** |
|
316 * Input Streams. |
|
317 */ |
|
318 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
319 xmlNewStringInputStream (xmlParserCtxtPtr ctxt, |
|
320 const xmlChar *buffer); |
|
321 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
322 xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, |
|
323 xmlEntityPtr entity); |
|
324 XMLPUBFUN void XMLCALL |
|
325 xmlPushInput (xmlParserCtxtPtr ctxt, |
|
326 xmlParserInputPtr input); |
|
327 XMLPUBFUN xmlChar XMLCALL |
|
328 xmlPopInput (xmlParserCtxtPtr ctxt); |
|
329 XMLPUBFUN void XMLCALL |
|
330 xmlFreeInputStream (xmlParserInputPtr input); |
|
331 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
332 xmlNewInputFromFile (xmlParserCtxtPtr ctxt, |
|
333 const char *filename); |
|
334 XMLPUBFUN xmlParserInputPtr XMLCALL |
|
335 xmlNewInputStream (xmlParserCtxtPtr ctxt); |
|
336 |
|
337 /** |
|
338 * Namespaces. |
|
339 */ |
|
340 XMLPUBFUN xmlChar * XMLCALL |
|
341 xmlSplitQName (xmlParserCtxtPtr ctxt, |
|
342 const xmlChar *name, |
|
343 xmlChar **prefix); |
|
344 |
|
345 /** |
|
346 * Generic production rules. |
|
347 */ |
|
348 XMLPUBFUN const xmlChar * XMLCALL |
|
349 xmlParseName (xmlParserCtxtPtr ctxt); |
|
350 XMLPUBFUN xmlChar * XMLCALL |
|
351 xmlParseNmtoken (xmlParserCtxtPtr ctxt); |
|
352 XMLPUBFUN xmlChar * XMLCALL |
|
353 xmlParseEntityValue (xmlParserCtxtPtr ctxt, |
|
354 xmlChar **orig); |
|
355 XMLPUBFUN xmlChar * XMLCALL |
|
356 xmlParseAttValue (xmlParserCtxtPtr ctxt); |
|
357 XMLPUBFUN xmlChar * XMLCALL |
|
358 xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); |
|
359 XMLPUBFUN xmlChar * XMLCALL |
|
360 xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); |
|
361 XMLPUBFUN void XMLCALL |
|
362 xmlParseCharData (xmlParserCtxtPtr ctxt, |
|
363 int cdata); |
|
364 XMLPUBFUN xmlChar * XMLCALL |
|
365 xmlParseExternalID (xmlParserCtxtPtr ctxt, |
|
366 xmlChar **publicID, |
|
367 int strict); |
|
368 XMLPUBFUN void XMLCALL |
|
369 xmlParseComment (xmlParserCtxtPtr ctxt); |
|
370 XMLPUBFUN const xmlChar * XMLCALL |
|
371 xmlParsePITarget (xmlParserCtxtPtr ctxt); |
|
372 XMLPUBFUN void XMLCALL |
|
373 xmlParsePI (xmlParserCtxtPtr ctxt); |
|
374 XMLPUBFUN void XMLCALL |
|
375 xmlParseNotationDecl (xmlParserCtxtPtr ctxt); |
|
376 XMLPUBFUN void XMLCALL |
|
377 xmlParseEntityDecl (xmlParserCtxtPtr ctxt); |
|
378 XMLPUBFUN int XMLCALL |
|
379 xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, |
|
380 xmlChar **value); |
|
381 XMLPUBFUN xmlEnumerationPtr XMLCALL |
|
382 xmlParseNotationType (xmlParserCtxtPtr ctxt); |
|
383 XMLPUBFUN xmlEnumerationPtr XMLCALL |
|
384 xmlParseEnumerationType (xmlParserCtxtPtr ctxt); |
|
385 XMLPUBFUN int XMLCALL |
|
386 xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, |
|
387 xmlEnumerationPtr *tree); |
|
388 XMLPUBFUN int XMLCALL |
|
389 xmlParseAttributeType (xmlParserCtxtPtr ctxt, |
|
390 xmlEnumerationPtr *tree); |
|
391 XMLPUBFUN void XMLCALL |
|
392 xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); |
|
393 XMLPUBFUN xmlElementContentPtr XMLCALL |
|
394 xmlParseElementMixedContentDecl |
|
395 (xmlParserCtxtPtr ctxt, |
|
396 int inputchk); |
|
397 XMLPUBFUN xmlElementContentPtr XMLCALL |
|
398 xmlParseElementChildrenContentDecl |
|
399 (xmlParserCtxtPtr ctxt, |
|
400 int inputchk); |
|
401 XMLPUBFUN int XMLCALL |
|
402 xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, |
|
403 const xmlChar *name, |
|
404 xmlElementContentPtr *result); |
|
405 XMLPUBFUN int XMLCALL |
|
406 xmlParseElementDecl (xmlParserCtxtPtr ctxt); |
|
407 XMLPUBFUN void XMLCALL |
|
408 xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); |
|
409 XMLPUBFUN int XMLCALL |
|
410 xmlParseCharRef (xmlParserCtxtPtr ctxt); |
|
411 XMLPUBFUN xmlEntityPtr XMLCALL |
|
412 xmlParseEntityRef (xmlParserCtxtPtr ctxt); |
|
413 XMLPUBFUN void XMLCALL |
|
414 xmlParseReference (xmlParserCtxtPtr ctxt); |
|
415 XMLPUBFUN void XMLCALL |
|
416 xmlParsePEReference (xmlParserCtxtPtr ctxt); |
|
417 XMLPUBFUN void XMLCALL |
|
418 xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); |
|
419 #ifdef LIBXML_SAX1_ENABLED |
|
420 XMLPUBFUN const xmlChar * XMLCALL |
|
421 xmlParseAttribute (xmlParserCtxtPtr ctxt, |
|
422 xmlChar **value); |
|
423 XMLPUBFUN const xmlChar * XMLCALL |
|
424 xmlParseStartTag (xmlParserCtxtPtr ctxt); |
|
425 XMLPUBFUN void XMLCALL |
|
426 xmlParseEndTag (xmlParserCtxtPtr ctxt); |
|
427 #endif /* LIBXML_SAX1_ENABLED */ |
|
428 XMLPUBFUN void XMLCALL |
|
429 xmlParseCDSect (xmlParserCtxtPtr ctxt); |
|
430 XMLPUBFUN void XMLCALL |
|
431 xmlParseContent (xmlParserCtxtPtr ctxt); |
|
432 XMLPUBFUN void XMLCALL |
|
433 xmlParseElement (xmlParserCtxtPtr ctxt); |
|
434 XMLPUBFUN xmlChar * XMLCALL |
|
435 xmlParseVersionNum (xmlParserCtxtPtr ctxt); |
|
436 XMLPUBFUN xmlChar * XMLCALL |
|
437 xmlParseVersionInfo (xmlParserCtxtPtr ctxt); |
|
438 XMLPUBFUN xmlChar * XMLCALL |
|
439 xmlParseEncName (xmlParserCtxtPtr ctxt); |
|
440 XMLPUBFUN const xmlChar * XMLCALL |
|
441 xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); |
|
442 XMLPUBFUN int XMLCALL |
|
443 xmlParseSDDecl (xmlParserCtxtPtr ctxt); |
|
444 XMLPUBFUN void XMLCALL |
|
445 xmlParseXMLDecl (xmlParserCtxtPtr ctxt); |
|
446 XMLPUBFUN void XMLCALL |
|
447 xmlParseTextDecl (xmlParserCtxtPtr ctxt); |
|
448 XMLPUBFUN void XMLCALL |
|
449 xmlParseMisc (xmlParserCtxtPtr ctxt); |
|
450 XMLPUBFUN void XMLCALL |
|
451 xmlParseExternalSubset (xmlParserCtxtPtr ctxt, |
|
452 const xmlChar *ExternalID, |
|
453 const xmlChar *SystemID); |
|
454 /** |
|
455 * XML_SUBSTITUTE_NONE: |
|
456 * |
|
457 * If no entities need to be substituted. |
|
458 */ |
|
459 #define XML_SUBSTITUTE_NONE 0 |
|
460 /** |
|
461 * XML_SUBSTITUTE_REF: |
|
462 * |
|
463 * Whether general entities need to be substituted. |
|
464 */ |
|
465 #define XML_SUBSTITUTE_REF 1 |
|
466 /** |
|
467 * XML_SUBSTITUTE_PEREF: |
|
468 * |
|
469 * Whether parameter entities need to be substituted. |
|
470 */ |
|
471 #define XML_SUBSTITUTE_PEREF 2 |
|
472 /** |
|
473 * XML_SUBSTITUTE_BOTH: |
|
474 * |
|
475 * Both general and parameter entities need to be substituted. |
|
476 */ |
|
477 #define XML_SUBSTITUTE_BOTH 3 |
|
478 |
|
479 XMLPUBFUN xmlChar * XMLCALL |
|
480 xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, |
|
481 const xmlChar *str, |
|
482 int what, |
|
483 xmlChar end, |
|
484 xmlChar end2, |
|
485 xmlChar end3); |
|
486 XMLPUBFUN xmlChar * XMLCALL |
|
487 xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, |
|
488 const xmlChar *str, |
|
489 int len, |
|
490 int what, |
|
491 xmlChar end, |
|
492 xmlChar end2, |
|
493 xmlChar end3); |
|
494 |
|
495 /* |
|
496 * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. |
|
497 */ |
|
498 XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, |
|
499 xmlNodePtr value); |
|
500 XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); |
|
501 XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, |
|
502 xmlParserInputPtr value); |
|
503 XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); |
|
504 XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); |
|
505 XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, |
|
506 const xmlChar *value); |
|
507 |
|
508 /* |
|
509 * other commodities shared between parser.c and parserInternals. |
|
510 */ |
|
511 XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); |
|
512 XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, |
|
513 const xmlChar *cur, |
|
514 int *len); |
|
515 XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); |
|
516 XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); |
|
517 |
|
518 /* |
|
519 * Really core function shared with HTML parser. |
|
520 */ |
|
521 XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, |
|
522 int *len); |
|
523 XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, |
|
524 int val); |
|
525 XMLPUBFUN int XMLCALL xmlCopyChar (int len, |
|
526 xmlChar *out, |
|
527 int val); |
|
528 XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); |
|
529 XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); |
|
530 |
|
531 #ifdef LIBXML_HTML_ENABLED |
|
532 /* |
|
533 * Actually comes from the HTML parser but launched from the init stuff. |
|
534 */ |
|
535 XMLPUBFUN void XMLCALL htmlInitAutoClose (void); |
|
536 XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, |
|
537 const char *encoding); |
|
538 #endif |
|
539 |
|
540 /* |
|
541 * Specific function to keep track of entities references |
|
542 * and used by the XSLT debugger. |
|
543 */ |
|
544 #ifdef LIBXML_LEGACY_ENABLED |
|
545 /** |
|
546 * xmlEntityReferenceFunc: |
|
547 * @ent: the entity |
|
548 * @firstNode: the fist node in the chunk |
|
549 * @lastNode: the last nod in the chunk |
|
550 * |
|
551 * Callback function used when one needs to be able to track back the |
|
552 * provenance of a chunk of nodes inherited from an entity replacement. |
|
553 */ |
|
554 typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, |
|
555 xmlNodePtr firstNode, |
|
556 xmlNodePtr lastNode); |
|
557 |
|
558 XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); |
|
559 |
|
560 XMLPUBFUN xmlChar * XMLCALL |
|
561 xmlParseQuotedString (xmlParserCtxtPtr ctxt); |
|
562 XMLPUBFUN void XMLCALL |
|
563 xmlParseNamespace (xmlParserCtxtPtr ctxt); |
|
564 XMLPUBFUN xmlChar * XMLCALL |
|
565 xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); |
|
566 XMLPUBFUN xmlChar * XMLCALL |
|
567 xmlScanName (xmlParserCtxtPtr ctxt); |
|
568 XMLPUBFUN xmlChar * XMLCALL |
|
569 xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); |
|
570 XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); |
|
571 XMLPUBFUN xmlChar * XMLCALL |
|
572 xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, |
|
573 xmlChar **prefix); |
|
574 /** |
|
575 * Entities |
|
576 */ |
|
577 XMLPUBFUN xmlChar * XMLCALL |
|
578 xmlDecodeEntities (xmlParserCtxtPtr ctxt, |
|
579 int len, |
|
580 int what, |
|
581 xmlChar end, |
|
582 xmlChar end2, |
|
583 xmlChar end3); |
|
584 XMLPUBFUN void XMLCALL |
|
585 xmlHandleEntity (xmlParserCtxtPtr ctxt, |
|
586 xmlEntityPtr entity); |
|
587 |
|
588 #endif /* LIBXML_LEGACY_ENABLED */ |
|
589 |
|
590 #ifdef IN_LIBXML |
|
591 /* |
|
592 * internal only |
|
593 */ |
|
594 XMLPUBFUN void XMLCALL |
|
595 xmlErrMemory (xmlParserCtxtPtr ctxt, |
|
596 const char *extra); |
|
597 #endif |
|
598 |
|
599 #ifdef __cplusplus |
|
600 } |
|
601 #endif |
|
602 #endif /* __XML_PARSER_INTERNALS_H__ */ |