mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-21 14:53:44 +03:00
545 lines
14 KiB
C
545 lines
14 KiB
C
/**
|
|
* @file
|
|
*
|
|
* @brief Internals routines and limits exported by the parser.
|
|
*
|
|
* Except for some I/O-related functions, most of these macros and
|
|
* functions are deprecated.
|
|
*
|
|
* @copyright See Copyright for the status of this software.
|
|
*
|
|
* @author Daniel Veillard
|
|
*/
|
|
|
|
#ifndef __XML_PARSER_INTERNALS_H__
|
|
#define __XML_PARSER_INTERNALS_H__
|
|
|
|
#include <libxml/xmlversion.h>
|
|
#include <libxml/parser.h>
|
|
#include <libxml/HTMLparser.h>
|
|
#include <libxml/chvalid.h>
|
|
#include <libxml/SAX2.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Push an input on the stack.
|
|
*
|
|
* @deprecated Use xmlCtxtPushInput()
|
|
*/
|
|
#define inputPush xmlCtxtPushInput
|
|
/**
|
|
* Pop an input from the stack.
|
|
*
|
|
* @deprecated Use xmlCtxtPushInput()
|
|
*/
|
|
#define inputPop xmlCtxtPopInput
|
|
/**
|
|
* Maximum element nesting depth (without XML_PARSE_HUGE).
|
|
*/
|
|
#define xmlParserMaxDepth 256
|
|
|
|
/**
|
|
* Maximum size allowed for a single text node when building a tree.
|
|
* This is not a limitation of the parser but a safety boundary feature,
|
|
* use XML_PARSE_HUGE option to override it.
|
|
* Introduced in 2.9.0
|
|
*/
|
|
#define XML_MAX_TEXT_LENGTH 10000000
|
|
|
|
/**
|
|
* Maximum size allowed when XML_PARSE_HUGE is set.
|
|
*/
|
|
#define XML_MAX_HUGE_LENGTH 1000000000
|
|
|
|
/**
|
|
* Maximum size allowed for a markup identifier.
|
|
* This is not a limitation of the parser but a safety boundary feature,
|
|
* use XML_PARSE_HUGE option to override it.
|
|
* Note that with the use of parsing dictionaries overriding the limit
|
|
* may result in more runtime memory usage in face of "unfriendly' content
|
|
* Introduced in 2.9.0
|
|
*/
|
|
#define XML_MAX_NAME_LENGTH 50000
|
|
|
|
/**
|
|
* Maximum size allowed by the parser for a dictionary by default
|
|
* This is not a limitation of the parser but a safety boundary feature,
|
|
* use XML_PARSE_HUGE option to override it.
|
|
* Introduced in 2.9.0
|
|
*/
|
|
#define XML_MAX_DICTIONARY_LIMIT 100000000
|
|
|
|
/**
|
|
* Maximum size allowed by the parser for ahead lookup
|
|
* This is an upper boundary enforced by the parser to avoid bad
|
|
* behaviour on "unfriendly' content
|
|
* Introduced in 2.9.0
|
|
*/
|
|
#define XML_MAX_LOOKUP_LIMIT 10000000
|
|
|
|
/**
|
|
* Identifiers can be longer, but this will be more costly
|
|
* at runtime.
|
|
*/
|
|
#define XML_MAX_NAMELEN 100
|
|
|
|
/************************************************************************
|
|
* *
|
|
* UNICODE version of the macros. *
|
|
* *
|
|
************************************************************************/
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [2] Char ::= #x9 | #xA | #xD | [#x20...]
|
|
*
|
|
* any byte character in the accepted range
|
|
*
|
|
* @param c an byte value (int)
|
|
*/
|
|
#define IS_BYTE_CHAR(c) xmlIsChar_ch(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
|
|
* | [#x10000-#x10FFFF]
|
|
*
|
|
* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
|
|
*
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_CHAR(c) xmlIsCharQ(c)
|
|
|
|
/**
|
|
* Behaves like IS_CHAR on single-byte value
|
|
*
|
|
* @param c an xmlChar (usually an unsigned char)
|
|
*/
|
|
#define IS_CHAR_CH(c) xmlIsChar_ch(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [3] S ::= (#x20 | #x9 | #xD | #xA)+
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_BLANK(c) xmlIsBlankQ(c)
|
|
|
|
/**
|
|
* Behaviour same as IS_BLANK
|
|
*
|
|
* @param c an xmlChar value (normally unsigned char)
|
|
*/
|
|
#define IS_BLANK_CH(c) xmlIsBlank_ch(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [85] BaseChar ::= ... long list see REC ...
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_BASECHAR(c) xmlIsBaseCharQ(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [88] Digit ::= ... long list see REC ...
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_DIGIT(c) xmlIsDigitQ(c)
|
|
|
|
/**
|
|
* Behaves like IS_DIGIT but with a single byte argument
|
|
*
|
|
* @param c an xmlChar value (usually an unsigned char)
|
|
*/
|
|
#define IS_DIGIT_CH(c) xmlIsDigit_ch(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [87] CombiningChar ::= ... long list see REC ...
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_COMBINING(c) xmlIsCombiningQ(c)
|
|
|
|
/**
|
|
* Always false (all combining chars > 0xff)
|
|
*
|
|
* @param c an xmlChar (usually an unsigned char)
|
|
*/
|
|
#define IS_COMBINING_CH(c) 0
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
|
|
* #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
|
|
* [#x309D-#x309E] | [#x30FC-#x30FE]
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_EXTENDER(c) xmlIsExtenderQ(c)
|
|
|
|
/**
|
|
* Behaves like IS_EXTENDER but with a single-byte argument
|
|
*
|
|
* @param c an xmlChar value (usually an unsigned char)
|
|
*/
|
|
#define IS_EXTENDER_CH(c) xmlIsExtender_ch(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [84] Letter ::= BaseChar | Ideographic
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
|
|
|
|
/**
|
|
* Macro behaves like IS_LETTER, but only check base chars
|
|
*
|
|
* @param c an xmlChar value (normally unsigned char)
|
|
*/
|
|
#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
|
|
|
|
/**
|
|
* Macro to check [a-zA-Z]
|
|
*
|
|
* @param c an xmlChar value
|
|
*/
|
|
#define IS_ASCII_LETTER(c) ((0x61 <= ((c) | 0x20)) && \
|
|
(((c) | 0x20) <= 0x7a))
|
|
|
|
/**
|
|
* Macro to check [0-9]
|
|
*
|
|
* @param c an xmlChar value
|
|
*/
|
|
#define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39))
|
|
|
|
/**
|
|
* Macro to check the following production in the XML spec:
|
|
*
|
|
* [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] |
|
|
* [-'()+,./:=?;!*#@$_%]
|
|
* @param c an UNICODE value (int)
|
|
*/
|
|
#define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c)
|
|
|
|
/**
|
|
* Same as IS_PUBIDCHAR but for single-byte value
|
|
*
|
|
* @param c an xmlChar value (normally unsigned char)
|
|
*/
|
|
#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
|
|
|
|
/*
|
|
* Global variables used for predefined strings.
|
|
*/
|
|
/** @cond ignore */
|
|
XMLPUBVAR const xmlChar xmlStringText[];
|
|
XMLPUBVAR const xmlChar xmlStringTextNoenc[];
|
|
XML_DEPRECATED
|
|
XMLPUBVAR const xmlChar xmlStringComment[];
|
|
/** @endcond */
|
|
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlIsLetter (int c);
|
|
|
|
/*
|
|
* Parser context.
|
|
*/
|
|
XMLPUBFUN xmlParserCtxt *
|
|
xmlCreateFileParserCtxt (const char *filename);
|
|
XMLPUBFUN xmlParserCtxt *
|
|
xmlCreateURLParserCtxt (const char *filename,
|
|
int options);
|
|
XMLPUBFUN xmlParserCtxt *
|
|
xmlCreateMemoryParserCtxt(const char *buffer,
|
|
int size);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlParserCtxt *
|
|
xmlCreateEntityParserCtxt(const xmlChar *URL,
|
|
const xmlChar *ID,
|
|
const xmlChar *base);
|
|
XMLPUBFUN void
|
|
xmlCtxtErrMemory (xmlParserCtxt *ctxt);
|
|
XMLPUBFUN int
|
|
xmlSwitchEncoding (xmlParserCtxt *ctxt,
|
|
xmlCharEncoding enc);
|
|
XMLPUBFUN int
|
|
xmlSwitchEncodingName (xmlParserCtxt *ctxt,
|
|
const char *encoding);
|
|
XMLPUBFUN int
|
|
xmlSwitchToEncoding (xmlParserCtxt *ctxt,
|
|
xmlCharEncodingHandler *handler);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlSwitchInputEncoding (xmlParserCtxt *ctxt,
|
|
xmlParserInput *input,
|
|
xmlCharEncodingHandler *handler);
|
|
|
|
/*
|
|
* Input Streams.
|
|
*/
|
|
XMLPUBFUN xmlParserInput *
|
|
xmlNewStringInputStream (xmlParserCtxt *ctxt,
|
|
const xmlChar *buffer);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlParserInput *
|
|
xmlNewEntityInputStream (xmlParserCtxt *ctxt,
|
|
xmlEntity *entity);
|
|
XMLPUBFUN int
|
|
xmlCtxtPushInput (xmlParserCtxt *ctxt,
|
|
xmlParserInput *input);
|
|
XMLPUBFUN xmlParserInput *
|
|
xmlCtxtPopInput (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlPushInput (xmlParserCtxt *ctxt,
|
|
xmlParserInput *input);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar
|
|
xmlPopInput (xmlParserCtxt *ctxt);
|
|
XMLPUBFUN void
|
|
xmlFreeInputStream (xmlParserInput *input);
|
|
XMLPUBFUN xmlParserInput *
|
|
xmlNewInputFromFile (xmlParserCtxt *ctxt,
|
|
const char *filename);
|
|
XMLPUBFUN xmlParserInput *
|
|
xmlNewInputStream (xmlParserCtxt *ctxt);
|
|
|
|
/*
|
|
* Namespaces.
|
|
*/
|
|
XMLPUBFUN xmlChar *
|
|
xmlSplitQName (xmlParserCtxt *ctxt,
|
|
const xmlChar *name,
|
|
xmlChar **prefix);
|
|
|
|
/*
|
|
* Generic production rules.
|
|
*/
|
|
XML_DEPRECATED
|
|
XMLPUBFUN const xmlChar *
|
|
xmlParseName (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseNmtoken (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseEntityValue (xmlParserCtxt *ctxt,
|
|
xmlChar **orig);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseAttValue (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseSystemLiteral (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParsePubidLiteral (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseCharData (xmlParserCtxt *ctxt,
|
|
int cdata);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseExternalID (xmlParserCtxt *ctxt,
|
|
xmlChar **publicId,
|
|
int strict);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseComment (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN const xmlChar *
|
|
xmlParsePITarget (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParsePI (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseNotationDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseEntityDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseDefaultDecl (xmlParserCtxt *ctxt,
|
|
xmlChar **value);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlEnumeration *
|
|
xmlParseNotationType (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlEnumeration *
|
|
xmlParseEnumerationType (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseEnumeratedType (xmlParserCtxt *ctxt,
|
|
xmlEnumeration **tree);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseAttributeType (xmlParserCtxt *ctxt,
|
|
xmlEnumeration **tree);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseAttributeListDecl(xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlElementContent *
|
|
xmlParseElementMixedContentDecl
|
|
(xmlParserCtxt *ctxt,
|
|
int inputchk);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlElementContent *
|
|
xmlParseElementChildrenContentDecl
|
|
(xmlParserCtxt *ctxt,
|
|
int inputchk);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseElementContentDecl(xmlParserCtxt *ctxt,
|
|
const xmlChar *name,
|
|
xmlElementContent **result);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseElementDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseMarkupDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseCharRef (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlEntity *
|
|
xmlParseEntityRef (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseReference (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParsePEReference (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseDocTypeDecl (xmlParserCtxt *ctxt);
|
|
#ifdef LIBXML_SAX1_ENABLED
|
|
XML_DEPRECATED
|
|
XMLPUBFUN const xmlChar *
|
|
xmlParseAttribute (xmlParserCtxt *ctxt,
|
|
xmlChar **value);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN const xmlChar *
|
|
xmlParseStartTag (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseEndTag (xmlParserCtxt *ctxt);
|
|
#endif /* LIBXML_SAX1_ENABLED */
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseCDSect (xmlParserCtxt *ctxt);
|
|
XMLPUBFUN void
|
|
xmlParseContent (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseElement (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseVersionNum (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseVersionInfo (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlParseEncName (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN const xmlChar *
|
|
xmlParseEncodingDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int
|
|
xmlParseSDDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseXMLDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseTextDecl (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseMisc (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void
|
|
xmlParseExternalSubset (xmlParserCtxt *ctxt,
|
|
const xmlChar *publicId,
|
|
const xmlChar *systemId);
|
|
|
|
/** @cond ignore */
|
|
#define XML_SUBSTITUTE_NONE 0
|
|
#define XML_SUBSTITUTE_REF 1
|
|
#define XML_SUBSTITUTE_PEREF 2
|
|
#define XML_SUBSTITUTE_BOTH 3
|
|
/** @endcond */
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlStringDecodeEntities (xmlParserCtxt *ctxt,
|
|
const xmlChar *str,
|
|
int what,
|
|
xmlChar end,
|
|
xmlChar end2,
|
|
xmlChar end3);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN xmlChar *
|
|
xmlStringLenDecodeEntities (xmlParserCtxt *ctxt,
|
|
const xmlChar *str,
|
|
int len,
|
|
int what,
|
|
xmlChar end,
|
|
xmlChar end2,
|
|
xmlChar end3);
|
|
|
|
/*
|
|
* other commodities shared between parser.c and parserInternals.
|
|
*/
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlSkipBlankChars (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlStringCurrentChar (xmlParserCtxt *ctxt,
|
|
const xmlChar *cur,
|
|
int *len);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void xmlParserHandlePEReference(xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlCheckLanguageID (const xmlChar *lang);
|
|
|
|
/*
|
|
* Really core function shared with HTML parser.
|
|
*/
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlCurrentChar (xmlParserCtxt *ctxt,
|
|
int *len);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlCopyCharMultiByte (xmlChar *out,
|
|
int val);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN int xmlCopyChar (int len,
|
|
xmlChar *out,
|
|
int val);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void xmlNextChar (xmlParserCtxt *ctxt);
|
|
XML_DEPRECATED
|
|
XMLPUBFUN void xmlParserInputShrink (xmlParserInput *in);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __XML_PARSER_INTERNALS_H__ */
|