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