Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:41:49

0001 /*
0002  * Summary: internals routines and limits exported by the parser.
0003  * Description: this module exports a number of internal parsing routines
0004  *              they are not really all intended for applications but
0005  *              can prove useful doing low level processing.
0006  *
0007  * Copy: See Copyright for the status of this software.
0008  *
0009  * Author: Daniel Veillard
0010  */
0011 
0012 #ifndef __XML_PARSER_INTERNALS_H__
0013 #define __XML_PARSER_INTERNALS_H__
0014 
0015 #include <libxml/xmlversion.h>
0016 #include <libxml/parser.h>
0017 #include <libxml/HTMLparser.h>
0018 #include <libxml/chvalid.h>
0019 #include <libxml/SAX2.h>
0020 
0021 #ifdef __cplusplus
0022 extern "C" {
0023 #endif
0024 
0025 /**
0026  * xmlParserMaxDepth:
0027  *
0028  * DEPRECATED: has no effect
0029  *
0030  * arbitrary depth limit for the XML documents that we allow to
0031  * process. This is not a limitation of the parser but a safety
0032  * boundary feature, use XML_PARSE_HUGE option to override it.
0033  */
0034 XML_DEPRECATED
0035 XMLPUBVAR const unsigned int xmlParserMaxDepth;
0036 
0037 /**
0038  * XML_MAX_TEXT_LENGTH:
0039  *
0040  * Maximum size allowed for a single text node when building a tree.
0041  * This is not a limitation of the parser but a safety boundary feature,
0042  * use XML_PARSE_HUGE option to override it.
0043  * Introduced in 2.9.0
0044  */
0045 #define XML_MAX_TEXT_LENGTH 10000000
0046 
0047 /**
0048  * XML_MAX_HUGE_LENGTH:
0049  *
0050  * Maximum size allowed when XML_PARSE_HUGE is set.
0051  */
0052 #define XML_MAX_HUGE_LENGTH 1000000000
0053 
0054 /**
0055  * XML_MAX_NAME_LENGTH:
0056  *
0057  * Maximum size allowed for a markup identifier.
0058  * This is not a limitation of the parser but a safety boundary feature,
0059  * use XML_PARSE_HUGE option to override it.
0060  * Note that with the use of parsing dictionaries overriding the limit
0061  * may result in more runtime memory usage in face of "unfriendly' content
0062  * Introduced in 2.9.0
0063  */
0064 #define XML_MAX_NAME_LENGTH 50000
0065 
0066 /**
0067  * XML_MAX_DICTIONARY_LIMIT:
0068  *
0069  * Maximum size allowed by the parser for a dictionary by default
0070  * This is not a limitation of the parser but a safety boundary feature,
0071  * use XML_PARSE_HUGE option to override it.
0072  * Introduced in 2.9.0
0073  */
0074 #define XML_MAX_DICTIONARY_LIMIT 10000000
0075 
0076 /**
0077  * XML_MAX_LOOKUP_LIMIT:
0078  *
0079  * Maximum size allowed by the parser for ahead lookup
0080  * This is an upper boundary enforced by the parser to avoid bad
0081  * behaviour on "unfriendly' content
0082  * Introduced in 2.9.0
0083  */
0084 #define XML_MAX_LOOKUP_LIMIT 10000000
0085 
0086 /**
0087  * XML_MAX_NAMELEN:
0088  *
0089  * Identifiers can be longer, but this will be more costly
0090  * at runtime.
0091  */
0092 #define XML_MAX_NAMELEN 100
0093 
0094 /**
0095  * INPUT_CHUNK:
0096  *
0097  * The parser tries to always have that amount of input ready.
0098  * One of the point is providing context when reporting errors.
0099  */
0100 #define INPUT_CHUNK 250
0101 
0102 /************************************************************************
0103  *                                  *
0104  * UNICODE version of the macros.                   *
0105  *                                  *
0106  ************************************************************************/
0107 /**
0108  * IS_BYTE_CHAR:
0109  * @c:  an byte value (int)
0110  *
0111  * Macro to check the following production in the XML spec:
0112  *
0113  * [2] Char ::= #x9 | #xA | #xD | [#x20...]
0114  * any byte character in the accepted range
0115  */
0116 #define IS_BYTE_CHAR(c)  xmlIsChar_ch(c)
0117 
0118 /**
0119  * IS_CHAR:
0120  * @c:  an UNICODE value (int)
0121  *
0122  * Macro to check the following production in the XML spec:
0123  *
0124  * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
0125  *                  | [#x10000-#x10FFFF]
0126  * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
0127  */
0128 #define IS_CHAR(c)   xmlIsCharQ(c)
0129 
0130 /**
0131  * IS_CHAR_CH:
0132  * @c: an xmlChar (usually an unsigned char)
0133  *
0134  * Behaves like IS_CHAR on single-byte value
0135  */
0136 #define IS_CHAR_CH(c)  xmlIsChar_ch(c)
0137 
0138 /**
0139  * IS_BLANK:
0140  * @c:  an UNICODE value (int)
0141  *
0142  * Macro to check the following production in the XML spec:
0143  *
0144  * [3] S ::= (#x20 | #x9 | #xD | #xA)+
0145  */
0146 #define IS_BLANK(c)  xmlIsBlankQ(c)
0147 
0148 /**
0149  * IS_BLANK_CH:
0150  * @c:  an xmlChar value (normally unsigned char)
0151  *
0152  * Behaviour same as IS_BLANK
0153  */
0154 #define IS_BLANK_CH(c)  xmlIsBlank_ch(c)
0155 
0156 /**
0157  * IS_BASECHAR:
0158  * @c:  an UNICODE value (int)
0159  *
0160  * Macro to check the following production in the XML spec:
0161  *
0162  * [85] BaseChar ::= ... long list see REC ...
0163  */
0164 #define IS_BASECHAR(c) xmlIsBaseCharQ(c)
0165 
0166 /**
0167  * IS_DIGIT:
0168  * @c:  an UNICODE value (int)
0169  *
0170  * Macro to check the following production in the XML spec:
0171  *
0172  * [88] Digit ::= ... long list see REC ...
0173  */
0174 #define IS_DIGIT(c) xmlIsDigitQ(c)
0175 
0176 /**
0177  * IS_DIGIT_CH:
0178  * @c:  an xmlChar value (usually an unsigned char)
0179  *
0180  * Behaves like IS_DIGIT but with a single byte argument
0181  */
0182 #define IS_DIGIT_CH(c)  xmlIsDigit_ch(c)
0183 
0184 /**
0185  * IS_COMBINING:
0186  * @c:  an UNICODE value (int)
0187  *
0188  * Macro to check the following production in the XML spec:
0189  *
0190  * [87] CombiningChar ::= ... long list see REC ...
0191  */
0192 #define IS_COMBINING(c) xmlIsCombiningQ(c)
0193 
0194 /**
0195  * IS_COMBINING_CH:
0196  * @c:  an xmlChar (usually an unsigned char)
0197  *
0198  * Always false (all combining chars > 0xff)
0199  */
0200 #define IS_COMBINING_CH(c) 0
0201 
0202 /**
0203  * IS_EXTENDER:
0204  * @c:  an UNICODE value (int)
0205  *
0206  * Macro to check the following production in the XML spec:
0207  *
0208  *
0209  * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
0210  *                   #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
0211  *                   [#x309D-#x309E] | [#x30FC-#x30FE]
0212  */
0213 #define IS_EXTENDER(c) xmlIsExtenderQ(c)
0214 
0215 /**
0216  * IS_EXTENDER_CH:
0217  * @c:  an xmlChar value (usually an unsigned char)
0218  *
0219  * Behaves like IS_EXTENDER but with a single-byte argument
0220  */
0221 #define IS_EXTENDER_CH(c)  xmlIsExtender_ch(c)
0222 
0223 /**
0224  * IS_IDEOGRAPHIC:
0225  * @c:  an UNICODE value (int)
0226  *
0227  * Macro to check the following production in the XML spec:
0228  *
0229  *
0230  * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
0231  */
0232 #define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
0233 
0234 /**
0235  * IS_LETTER:
0236  * @c:  an UNICODE value (int)
0237  *
0238  * Macro to check the following production in the XML spec:
0239  *
0240  *
0241  * [84] Letter ::= BaseChar | Ideographic
0242  */
0243 #define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
0244 
0245 /**
0246  * IS_LETTER_CH:
0247  * @c:  an xmlChar value (normally unsigned char)
0248  *
0249  * Macro behaves like IS_LETTER, but only check base chars
0250  *
0251  */
0252 #define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
0253 
0254 /**
0255  * IS_ASCII_LETTER:
0256  * @c: an xmlChar value
0257  *
0258  * Macro to check [a-zA-Z]
0259  *
0260  */
0261 #define IS_ASCII_LETTER(c)  (((0x41 <= (c)) && ((c) <= 0x5a)) || \
0262                  ((0x61 <= (c)) && ((c) <= 0x7a)))
0263 
0264 /**
0265  * IS_ASCII_DIGIT:
0266  * @c: an xmlChar value
0267  *
0268  * Macro to check [0-9]
0269  *
0270  */
0271 #define IS_ASCII_DIGIT(c)   ((0x30 <= (c)) && ((c) <= 0x39))
0272 
0273 /**
0274  * IS_PUBIDCHAR:
0275  * @c:  an UNICODE value (int)
0276  *
0277  * Macro to check the following production in the XML spec:
0278  *
0279  *
0280  * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
0281  */
0282 #define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c)
0283 
0284 /**
0285  * IS_PUBIDCHAR_CH:
0286  * @c:  an xmlChar value (normally unsigned char)
0287  *
0288  * Same as IS_PUBIDCHAR but for single-byte value
0289  */
0290 #define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
0291 
0292 /**
0293  * Global variables used for predefined strings.
0294  */
0295 XMLPUBVAR const xmlChar xmlStringText[];
0296 XMLPUBVAR const xmlChar xmlStringTextNoenc[];
0297 XMLPUBVAR const xmlChar xmlStringComment[];
0298 
0299 /*
0300  * Function to finish the work of the macros where needed.
0301  */
0302 XMLPUBFUN int                   xmlIsLetter     (int c);
0303 
0304 /**
0305  * Parser context.
0306  */
0307 XMLPUBFUN xmlParserCtxtPtr
0308             xmlCreateFileParserCtxt (const char *filename);
0309 XMLPUBFUN xmlParserCtxtPtr
0310             xmlCreateURLParserCtxt  (const char *filename,
0311                          int options);
0312 XMLPUBFUN xmlParserCtxtPtr
0313             xmlCreateMemoryParserCtxt(const char *buffer,
0314                          int size);
0315 XMLPUBFUN xmlParserCtxtPtr
0316             xmlCreateEntityParserCtxt(const xmlChar *URL,
0317                          const xmlChar *ID,
0318                          const xmlChar *base);
0319 XMLPUBFUN void
0320             xmlCtxtErrMemory    (xmlParserCtxtPtr ctxt);
0321 XMLPUBFUN int
0322             xmlSwitchEncoding   (xmlParserCtxtPtr ctxt,
0323                          xmlCharEncoding enc);
0324 XMLPUBFUN int
0325             xmlSwitchEncodingName   (xmlParserCtxtPtr ctxt,
0326                          const char *encoding);
0327 XMLPUBFUN int
0328             xmlSwitchToEncoding (xmlParserCtxtPtr ctxt,
0329                      xmlCharEncodingHandlerPtr handler);
0330 XML_DEPRECATED
0331 XMLPUBFUN int
0332             xmlSwitchInputEncoding  (xmlParserCtxtPtr ctxt,
0333                          xmlParserInputPtr input,
0334                      xmlCharEncodingHandlerPtr handler);
0335 
0336 /**
0337  * Input Streams.
0338  */
0339 XMLPUBFUN xmlParserInputPtr
0340             xmlNewStringInputStream (xmlParserCtxtPtr ctxt,
0341                          const xmlChar *buffer);
0342 XML_DEPRECATED
0343 XMLPUBFUN xmlParserInputPtr
0344             xmlNewEntityInputStream (xmlParserCtxtPtr ctxt,
0345                          xmlEntityPtr entity);
0346 XMLPUBFUN int
0347             xmlPushInput        (xmlParserCtxtPtr ctxt,
0348                          xmlParserInputPtr input);
0349 XMLPUBFUN xmlChar
0350             xmlPopInput     (xmlParserCtxtPtr ctxt);
0351 XMLPUBFUN void
0352             xmlFreeInputStream  (xmlParserInputPtr input);
0353 XMLPUBFUN xmlParserInputPtr
0354             xmlNewInputFromFile (xmlParserCtxtPtr ctxt,
0355                          const char *filename);
0356 XMLPUBFUN xmlParserInputPtr
0357             xmlNewInputStream   (xmlParserCtxtPtr ctxt);
0358 
0359 /**
0360  * Namespaces.
0361  */
0362 XMLPUBFUN xmlChar *
0363             xmlSplitQName       (xmlParserCtxtPtr ctxt,
0364                          const xmlChar *name,
0365                          xmlChar **prefix);
0366 
0367 /**
0368  * Generic production rules.
0369  */
0370 XML_DEPRECATED
0371 XMLPUBFUN const xmlChar *
0372             xmlParseName        (xmlParserCtxtPtr ctxt);
0373 XML_DEPRECATED
0374 XMLPUBFUN xmlChar *
0375             xmlParseNmtoken     (xmlParserCtxtPtr ctxt);
0376 XML_DEPRECATED
0377 XMLPUBFUN xmlChar *
0378             xmlParseEntityValue (xmlParserCtxtPtr ctxt,
0379                          xmlChar **orig);
0380 XML_DEPRECATED
0381 XMLPUBFUN xmlChar *
0382             xmlParseAttValue    (xmlParserCtxtPtr ctxt);
0383 XML_DEPRECATED
0384 XMLPUBFUN xmlChar *
0385             xmlParseSystemLiteral   (xmlParserCtxtPtr ctxt);
0386 XML_DEPRECATED
0387 XMLPUBFUN xmlChar *
0388             xmlParsePubidLiteral    (xmlParserCtxtPtr ctxt);
0389 XML_DEPRECATED
0390 XMLPUBFUN void
0391             xmlParseCharData    (xmlParserCtxtPtr ctxt,
0392                          int cdata);
0393 XML_DEPRECATED
0394 XMLPUBFUN xmlChar *
0395             xmlParseExternalID  (xmlParserCtxtPtr ctxt,
0396                          xmlChar **publicID,
0397                          int strict);
0398 XML_DEPRECATED
0399 XMLPUBFUN void
0400             xmlParseComment     (xmlParserCtxtPtr ctxt);
0401 XML_DEPRECATED
0402 XMLPUBFUN const xmlChar *
0403             xmlParsePITarget    (xmlParserCtxtPtr ctxt);
0404 XML_DEPRECATED
0405 XMLPUBFUN void
0406             xmlParsePI      (xmlParserCtxtPtr ctxt);
0407 XML_DEPRECATED
0408 XMLPUBFUN void
0409             xmlParseNotationDecl    (xmlParserCtxtPtr ctxt);
0410 XML_DEPRECATED
0411 XMLPUBFUN void
0412             xmlParseEntityDecl  (xmlParserCtxtPtr ctxt);
0413 XML_DEPRECATED
0414 XMLPUBFUN int
0415             xmlParseDefaultDecl (xmlParserCtxtPtr ctxt,
0416                          xmlChar **value);
0417 XML_DEPRECATED
0418 XMLPUBFUN xmlEnumerationPtr
0419             xmlParseNotationType    (xmlParserCtxtPtr ctxt);
0420 XML_DEPRECATED
0421 XMLPUBFUN xmlEnumerationPtr
0422             xmlParseEnumerationType (xmlParserCtxtPtr ctxt);
0423 XML_DEPRECATED
0424 XMLPUBFUN int
0425             xmlParseEnumeratedType  (xmlParserCtxtPtr ctxt,
0426                          xmlEnumerationPtr *tree);
0427 XML_DEPRECATED
0428 XMLPUBFUN int
0429             xmlParseAttributeType   (xmlParserCtxtPtr ctxt,
0430                          xmlEnumerationPtr *tree);
0431 XML_DEPRECATED
0432 XMLPUBFUN void
0433             xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
0434 XML_DEPRECATED
0435 XMLPUBFUN xmlElementContentPtr
0436             xmlParseElementMixedContentDecl
0437                         (xmlParserCtxtPtr ctxt,
0438                          int inputchk);
0439 XML_DEPRECATED
0440 XMLPUBFUN xmlElementContentPtr
0441             xmlParseElementChildrenContentDecl
0442                         (xmlParserCtxtPtr ctxt,
0443                          int inputchk);
0444 XML_DEPRECATED
0445 XMLPUBFUN int
0446             xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
0447                          const xmlChar *name,
0448                          xmlElementContentPtr *result);
0449 XML_DEPRECATED
0450 XMLPUBFUN int
0451             xmlParseElementDecl (xmlParserCtxtPtr ctxt);
0452 XML_DEPRECATED
0453 XMLPUBFUN void
0454             xmlParseMarkupDecl  (xmlParserCtxtPtr ctxt);
0455 XML_DEPRECATED
0456 XMLPUBFUN int
0457             xmlParseCharRef     (xmlParserCtxtPtr ctxt);
0458 XML_DEPRECATED
0459 XMLPUBFUN xmlEntityPtr
0460             xmlParseEntityRef   (xmlParserCtxtPtr ctxt);
0461 XML_DEPRECATED
0462 XMLPUBFUN void
0463             xmlParseReference   (xmlParserCtxtPtr ctxt);
0464 XML_DEPRECATED
0465 XMLPUBFUN void
0466             xmlParsePEReference (xmlParserCtxtPtr ctxt);
0467 XML_DEPRECATED
0468 XMLPUBFUN void
0469             xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);
0470 #ifdef LIBXML_SAX1_ENABLED
0471 XML_DEPRECATED
0472 XMLPUBFUN const xmlChar *
0473             xmlParseAttribute   (xmlParserCtxtPtr ctxt,
0474                          xmlChar **value);
0475 XML_DEPRECATED
0476 XMLPUBFUN const xmlChar *
0477             xmlParseStartTag    (xmlParserCtxtPtr ctxt);
0478 XML_DEPRECATED
0479 XMLPUBFUN void
0480             xmlParseEndTag      (xmlParserCtxtPtr ctxt);
0481 #endif /* LIBXML_SAX1_ENABLED */
0482 XML_DEPRECATED
0483 XMLPUBFUN void
0484             xmlParseCDSect      (xmlParserCtxtPtr ctxt);
0485 XMLPUBFUN void
0486             xmlParseContent     (xmlParserCtxtPtr ctxt);
0487 XML_DEPRECATED
0488 XMLPUBFUN void
0489             xmlParseElement     (xmlParserCtxtPtr ctxt);
0490 XML_DEPRECATED
0491 XMLPUBFUN xmlChar *
0492             xmlParseVersionNum  (xmlParserCtxtPtr ctxt);
0493 XML_DEPRECATED
0494 XMLPUBFUN xmlChar *
0495             xmlParseVersionInfo (xmlParserCtxtPtr ctxt);
0496 XML_DEPRECATED
0497 XMLPUBFUN xmlChar *
0498             xmlParseEncName     (xmlParserCtxtPtr ctxt);
0499 XML_DEPRECATED
0500 XMLPUBFUN const xmlChar *
0501             xmlParseEncodingDecl    (xmlParserCtxtPtr ctxt);
0502 XML_DEPRECATED
0503 XMLPUBFUN int
0504             xmlParseSDDecl      (xmlParserCtxtPtr ctxt);
0505 XML_DEPRECATED
0506 XMLPUBFUN void
0507             xmlParseXMLDecl     (xmlParserCtxtPtr ctxt);
0508 XML_DEPRECATED
0509 XMLPUBFUN void
0510             xmlParseTextDecl    (xmlParserCtxtPtr ctxt);
0511 XML_DEPRECATED
0512 XMLPUBFUN void
0513             xmlParseMisc        (xmlParserCtxtPtr ctxt);
0514 XMLPUBFUN void
0515             xmlParseExternalSubset  (xmlParserCtxtPtr ctxt,
0516                          const xmlChar *ExternalID,
0517                          const xmlChar *SystemID);
0518 /**
0519  * XML_SUBSTITUTE_NONE:
0520  *
0521  * If no entities need to be substituted.
0522  */
0523 #define XML_SUBSTITUTE_NONE 0
0524 /**
0525  * XML_SUBSTITUTE_REF:
0526  *
0527  * Whether general entities need to be substituted.
0528  */
0529 #define XML_SUBSTITUTE_REF  1
0530 /**
0531  * XML_SUBSTITUTE_PEREF:
0532  *
0533  * Whether parameter entities need to be substituted.
0534  */
0535 #define XML_SUBSTITUTE_PEREF    2
0536 /**
0537  * XML_SUBSTITUTE_BOTH:
0538  *
0539  * Both general and parameter entities need to be substituted.
0540  */
0541 #define XML_SUBSTITUTE_BOTH 3
0542 
0543 XML_DEPRECATED
0544 XMLPUBFUN xmlChar *
0545         xmlStringDecodeEntities     (xmlParserCtxtPtr ctxt,
0546                          const xmlChar *str,
0547                          int what,
0548                          xmlChar end,
0549                          xmlChar  end2,
0550                          xmlChar end3);
0551 XML_DEPRECATED
0552 XMLPUBFUN xmlChar *
0553         xmlStringLenDecodeEntities  (xmlParserCtxtPtr ctxt,
0554                          const xmlChar *str,
0555                          int len,
0556                          int what,
0557                          xmlChar end,
0558                          xmlChar  end2,
0559                          xmlChar end3);
0560 
0561 /*
0562  * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
0563  */
0564 XML_DEPRECATED
0565 XMLPUBFUN int           nodePush        (xmlParserCtxtPtr ctxt,
0566                          xmlNodePtr value);
0567 XML_DEPRECATED
0568 XMLPUBFUN xmlNodePtr        nodePop         (xmlParserCtxtPtr ctxt);
0569 XMLPUBFUN int           inputPush       (xmlParserCtxtPtr ctxt,
0570                          xmlParserInputPtr value);
0571 XMLPUBFUN xmlParserInputPtr inputPop        (xmlParserCtxtPtr ctxt);
0572 XML_DEPRECATED
0573 XMLPUBFUN const xmlChar *   namePop         (xmlParserCtxtPtr ctxt);
0574 XML_DEPRECATED
0575 XMLPUBFUN int           namePush        (xmlParserCtxtPtr ctxt,
0576                          const xmlChar *value);
0577 
0578 /*
0579  * other commodities shared between parser.c and parserInternals.
0580  */
0581 XML_DEPRECATED
0582 XMLPUBFUN int           xmlSkipBlankChars   (xmlParserCtxtPtr ctxt);
0583 XML_DEPRECATED
0584 XMLPUBFUN int           xmlStringCurrentChar    (xmlParserCtxtPtr ctxt,
0585                          const xmlChar *cur,
0586                          int *len);
0587 XML_DEPRECATED
0588 XMLPUBFUN void          xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
0589 XML_DEPRECATED
0590 XMLPUBFUN int           xmlCheckLanguageID  (const xmlChar *lang);
0591 
0592 /*
0593  * Really core function shared with HTML parser.
0594  */
0595 XML_DEPRECATED
0596 XMLPUBFUN int           xmlCurrentChar      (xmlParserCtxtPtr ctxt,
0597                          int *len);
0598 XMLPUBFUN int       xmlCopyCharMultiByte    (xmlChar *out,
0599                          int val);
0600 XMLPUBFUN int           xmlCopyChar     (int len,
0601                          xmlChar *out,
0602                          int val);
0603 XML_DEPRECATED
0604 XMLPUBFUN void          xmlNextChar     (xmlParserCtxtPtr ctxt);
0605 XML_DEPRECATED
0606 XMLPUBFUN void          xmlParserInputShrink    (xmlParserInputPtr in);
0607 
0608 /*
0609  * Specific function to keep track of entities references
0610  * and used by the XSLT debugger.
0611  */
0612 #ifdef LIBXML_LEGACY_ENABLED
0613 /**
0614  * xmlEntityReferenceFunc:
0615  * @ent: the entity
0616  * @firstNode:  the fist node in the chunk
0617  * @lastNode:  the last nod in the chunk
0618  *
0619  * Callback function used when one needs to be able to track back the
0620  * provenance of a chunk of nodes inherited from an entity replacement.
0621  */
0622 typedef void    (*xmlEntityReferenceFunc)   (xmlEntityPtr ent,
0623                          xmlNodePtr firstNode,
0624                          xmlNodePtr lastNode);
0625 
0626 XML_DEPRECATED
0627 XMLPUBFUN void      xmlSetEntityReferenceFunc   (xmlEntityReferenceFunc func);
0628 
0629 XML_DEPRECATED
0630 XMLPUBFUN xmlChar *
0631             xmlParseQuotedString    (xmlParserCtxtPtr ctxt);
0632 XML_DEPRECATED
0633 XMLPUBFUN void
0634                         xmlParseNamespace       (xmlParserCtxtPtr ctxt);
0635 XML_DEPRECATED
0636 XMLPUBFUN xmlChar *
0637             xmlNamespaceParseNSDef  (xmlParserCtxtPtr ctxt);
0638 XML_DEPRECATED
0639 XMLPUBFUN xmlChar *
0640             xmlScanName     (xmlParserCtxtPtr ctxt);
0641 XML_DEPRECATED
0642 XMLPUBFUN xmlChar *
0643             xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);
0644 XML_DEPRECATED
0645 XMLPUBFUN void  xmlParserHandleReference(xmlParserCtxtPtr ctxt);
0646 XML_DEPRECATED
0647 XMLPUBFUN xmlChar *
0648             xmlNamespaceParseQName  (xmlParserCtxtPtr ctxt,
0649                          xmlChar **prefix);
0650 /**
0651  * Entities
0652  */
0653 XML_DEPRECATED
0654 XMLPUBFUN xmlChar *
0655         xmlDecodeEntities       (xmlParserCtxtPtr ctxt,
0656                          int len,
0657                          int what,
0658                          xmlChar end,
0659                          xmlChar  end2,
0660                          xmlChar end3);
0661 XML_DEPRECATED
0662 XMLPUBFUN void
0663             xmlHandleEntity     (xmlParserCtxtPtr ctxt,
0664                          xmlEntityPtr entity);
0665 
0666 #endif /* LIBXML_LEGACY_ENABLED */
0667 
0668 #ifdef __cplusplus
0669 }
0670 #endif
0671 #endif /* __XML_PARSER_INTERNALS_H__ */