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