Spaces:
Sleeping
Sleeping
/* | |
* Summary: internals routines and limits exported by the parser. | |
* Description: this module exports a number of internal parsing routines | |
* they are not really all intended for applications but | |
* can prove useful doing low level processing. | |
* | |
* Copy: See Copyright for the status of this software. | |
* | |
* Author: Daniel Veillard | |
*/ | |
extern "C" { | |
/** | |
* xmlParserMaxDepth: | |
* | |
* arbitrary depth limit for the XML documents that we allow to | |
* process. This is not a limitation of the parser but a safety | |
* boundary feature, use XML_PARSE_HUGE option to override it. | |
*/ | |
XMLPUBVAR unsigned int xmlParserMaxDepth; | |
/** | |
* XML_MAX_TEXT_LENGTH: | |
* | |
* 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 | |
*/ | |
/** | |
* XML_MAX_NAME_LENGTH: | |
* | |
* 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 | |
*/ | |
/** | |
* XML_MAX_DICTIONARY_LIMIT: | |
* | |
* 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 | |
*/ | |
/** | |
* XML_MAX_LOOKUP_LIMIT: | |
* | |
* 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 | |
*/ | |
/** | |
* XML_MAX_NAMELEN: | |
* | |
* Identifiers can be longer, but this will be more costly | |
* at runtime. | |
*/ | |
/** | |
* INPUT_CHUNK: | |
* | |
* The parser tries to always have that amount of input ready. | |
* One of the point is providing context when reporting errors. | |
*/ | |
/************************************************************************ | |
* * | |
* UNICODE version of the macros. * | |
* * | |
************************************************************************/ | |
/** | |
* IS_BYTE_CHAR: | |
* @c: an byte value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* [2] Char ::= #x9 | #xA | #xD | [#x20...] | |
* any byte character in the accepted range | |
*/ | |
/** | |
* IS_CHAR: | |
* @c: an UNICODE value (int) | |
* | |
* 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. | |
*/ | |
/** | |
* IS_CHAR_CH: | |
* @c: an xmlChar (usually an unsigned char) | |
* | |
* Behaves like IS_CHAR on single-byte value | |
*/ | |
/** | |
* IS_BLANK: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* [3] S ::= (#x20 | #x9 | #xD | #xA)+ | |
*/ | |
/** | |
* IS_BLANK_CH: | |
* @c: an xmlChar value (normally unsigned char) | |
* | |
* Behaviour same as IS_BLANK | |
*/ | |
/** | |
* IS_BASECHAR: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* [85] BaseChar ::= ... long list see REC ... | |
*/ | |
/** | |
* IS_DIGIT: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* [88] Digit ::= ... long list see REC ... | |
*/ | |
/** | |
* IS_DIGIT_CH: | |
* @c: an xmlChar value (usually an unsigned char) | |
* | |
* Behaves like IS_DIGIT but with a single byte argument | |
*/ | |
/** | |
* IS_COMBINING: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* [87] CombiningChar ::= ... long list see REC ... | |
*/ | |
/** | |
* IS_COMBINING_CH: | |
* @c: an xmlChar (usually an unsigned char) | |
* | |
* Always false (all combining chars > 0xff) | |
*/ | |
/** | |
* IS_EXTENDER: | |
* @c: an UNICODE value (int) | |
* | |
* 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] | |
*/ | |
/** | |
* IS_EXTENDER_CH: | |
* @c: an xmlChar value (usually an unsigned char) | |
* | |
* Behaves like IS_EXTENDER but with a single-byte argument | |
*/ | |
/** | |
* IS_IDEOGRAPHIC: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* | |
* [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] | |
*/ | |
/** | |
* IS_LETTER: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* | |
* [84] Letter ::= BaseChar | Ideographic | |
*/ | |
/** | |
* IS_LETTER_CH: | |
* @c: an xmlChar value (normally unsigned char) | |
* | |
* Macro behaves like IS_LETTER, but only check base chars | |
* | |
*/ | |
/** | |
* IS_ASCII_LETTER: | |
* @c: an xmlChar value | |
* | |
* Macro to check [a-zA-Z] | |
* | |
*/ | |
/** | |
* IS_ASCII_DIGIT: | |
* @c: an xmlChar value | |
* | |
* Macro to check [0-9] | |
* | |
*/ | |
/** | |
* IS_PUBIDCHAR: | |
* @c: an UNICODE value (int) | |
* | |
* Macro to check the following production in the XML spec: | |
* | |
* | |
* [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] | |
*/ | |
/** | |
* IS_PUBIDCHAR_CH: | |
* @c: an xmlChar value (normally unsigned char) | |
* | |
* Same as IS_PUBIDCHAR but for single-byte value | |
*/ | |
/** | |
* SKIP_EOL: | |
* @p: and UTF8 string pointer | |
* | |
* Skips the end of line chars. | |
*/ | |
/** | |
* MOVETO_ENDTAG: | |
* @p: and UTF8 string pointer | |
* | |
* Skips to the next '>' char. | |
*/ | |
/** | |
* MOVETO_STARTTAG: | |
* @p: and UTF8 string pointer | |
* | |
* Skips to the next '<' char. | |
*/ | |
/** | |
* Global variables used for predefined strings. | |
*/ | |
XMLPUBVAR const xmlChar xmlStringText[]; | |
XMLPUBVAR const xmlChar xmlStringTextNoenc[]; | |
XMLPUBVAR const xmlChar xmlStringComment[]; | |
/* | |
* Function to finish the work of the macros where needed. | |
*/ | |
XMLPUBFUN int XMLCALL xmlIsLetter (int c); | |
/** | |
* Parser context. | |
*/ | |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | |
xmlCreateFileParserCtxt (const char *filename); | |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | |
xmlCreateURLParserCtxt (const char *filename, | |
int options); | |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | |
xmlCreateMemoryParserCtxt(const char *buffer, | |
int size); | |
XMLPUBFUN xmlParserCtxtPtr XMLCALL | |
xmlCreateEntityParserCtxt(const xmlChar *URL, | |
const xmlChar *ID, | |
const xmlChar *base); | |
XMLPUBFUN int XMLCALL | |
xmlSwitchEncoding (xmlParserCtxtPtr ctxt, | |
xmlCharEncoding enc); | |
XMLPUBFUN int XMLCALL | |
xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, | |
xmlCharEncodingHandlerPtr handler); | |
XML_DEPRECATED | |
XMLPUBFUN int XMLCALL | |
xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, | |
xmlParserInputPtr input, | |
xmlCharEncodingHandlerPtr handler); | |
/* internal error reporting */ | |
XMLPUBFUN void XMLCALL | |
__xmlErrEncoding (xmlParserCtxtPtr ctxt, | |
xmlParserErrors xmlerr, | |
const char *msg, | |
const xmlChar * str1, | |
const xmlChar * str2) LIBXML_ATTR_FORMAT(3,0); | |
/** | |
* Input Streams. | |
*/ | |
XMLPUBFUN xmlParserInputPtr XMLCALL | |
xmlNewStringInputStream (xmlParserCtxtPtr ctxt, | |
const xmlChar *buffer); | |
XMLPUBFUN xmlParserInputPtr XMLCALL | |
xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, | |
xmlEntityPtr entity); | |
XMLPUBFUN int XMLCALL | |
xmlPushInput (xmlParserCtxtPtr ctxt, | |
xmlParserInputPtr input); | |
XMLPUBFUN xmlChar XMLCALL | |
xmlPopInput (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlFreeInputStream (xmlParserInputPtr input); | |
XMLPUBFUN xmlParserInputPtr XMLCALL | |
xmlNewInputFromFile (xmlParserCtxtPtr ctxt, | |
const char *filename); | |
XMLPUBFUN xmlParserInputPtr XMLCALL | |
xmlNewInputStream (xmlParserCtxtPtr ctxt); | |
/** | |
* Namespaces. | |
*/ | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlSplitQName (xmlParserCtxtPtr ctxt, | |
const xmlChar *name, | |
xmlChar **prefix); | |
/** | |
* Generic production rules. | |
*/ | |
XMLPUBFUN const xmlChar * XMLCALL | |
xmlParseName (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseNmtoken (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseEntityValue (xmlParserCtxtPtr ctxt, | |
xmlChar **orig); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseAttValue (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseCharData (xmlParserCtxtPtr ctxt, | |
int cdata); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseExternalID (xmlParserCtxtPtr ctxt, | |
xmlChar **publicID, | |
int strict); | |
XMLPUBFUN void XMLCALL | |
xmlParseComment (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN const xmlChar * XMLCALL | |
xmlParsePITarget (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParsePI (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseNotationDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseEntityDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL | |
xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, | |
xmlChar **value); | |
XMLPUBFUN xmlEnumerationPtr XMLCALL | |
xmlParseNotationType (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlEnumerationPtr XMLCALL | |
xmlParseEnumerationType (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL | |
xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, | |
xmlEnumerationPtr *tree); | |
XMLPUBFUN int XMLCALL | |
xmlParseAttributeType (xmlParserCtxtPtr ctxt, | |
xmlEnumerationPtr *tree); | |
XMLPUBFUN void XMLCALL | |
xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlElementContentPtr XMLCALL | |
xmlParseElementMixedContentDecl | |
(xmlParserCtxtPtr ctxt, | |
int inputchk); | |
XMLPUBFUN xmlElementContentPtr XMLCALL | |
xmlParseElementChildrenContentDecl | |
(xmlParserCtxtPtr ctxt, | |
int inputchk); | |
XMLPUBFUN int XMLCALL | |
xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, | |
const xmlChar *name, | |
xmlElementContentPtr *result); | |
XMLPUBFUN int XMLCALL | |
xmlParseElementDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL | |
xmlParseCharRef (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlEntityPtr XMLCALL | |
xmlParseEntityRef (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseReference (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParsePEReference (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN const xmlChar * XMLCALL | |
xmlParseAttribute (xmlParserCtxtPtr ctxt, | |
xmlChar **value); | |
XMLPUBFUN const xmlChar * XMLCALL | |
xmlParseStartTag (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseEndTag (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseCDSect (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseContent (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseElement (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseVersionNum (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseVersionInfo (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseEncName (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN const xmlChar * XMLCALL | |
xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL | |
xmlParseSDDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseXMLDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseTextDecl (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseMisc (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL | |
xmlParseExternalSubset (xmlParserCtxtPtr ctxt, | |
const xmlChar *ExternalID, | |
const xmlChar *SystemID); | |
/** | |
* XML_SUBSTITUTE_NONE: | |
* | |
* If no entities need to be substituted. | |
*/ | |
/** | |
* XML_SUBSTITUTE_REF: | |
* | |
* Whether general entities need to be substituted. | |
*/ | |
/** | |
* XML_SUBSTITUTE_PEREF: | |
* | |
* Whether parameter entities need to be substituted. | |
*/ | |
/** | |
* XML_SUBSTITUTE_BOTH: | |
* | |
* Both general and parameter entities need to be substituted. | |
*/ | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, | |
const xmlChar *str, | |
int what, | |
xmlChar end, | |
xmlChar end2, | |
xmlChar end3); | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, | |
const xmlChar *str, | |
int len, | |
int what, | |
xmlChar end, | |
xmlChar end2, | |
xmlChar end3); | |
/* | |
* Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. | |
*/ | |
XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, | |
xmlNodePtr value); | |
XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, | |
xmlParserInputPtr value); | |
XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, | |
const xmlChar *value); | |
/* | |
* other commodities shared between parser.c and parserInternals. | |
*/ | |
XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, | |
const xmlChar *cur, | |
int *len); | |
XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); | |
XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); | |
/* | |
* Really core function shared with HTML parser. | |
*/ | |
XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, | |
int *len); | |
XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, | |
int val); | |
XMLPUBFUN int XMLCALL xmlCopyChar (int len, | |
xmlChar *out, | |
int val); | |
XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); | |
XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); | |
/* | |
* Actually comes from the HTML parser but launched from the init stuff. | |
*/ | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL htmlInitAutoClose (void); | |
XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, | |
const char *encoding); | |
/* | |
* Specific function to keep track of entities references | |
* and used by the XSLT debugger. | |
*/ | |
/** | |
* xmlEntityReferenceFunc: | |
* @ent: the entity | |
* @firstNode: the fist node in the chunk | |
* @lastNode: the last nod in the chunk | |
* | |
* Callback function used when one needs to be able to track back the | |
* provenance of a chunk of nodes inherited from an entity replacement. | |
*/ | |
typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, | |
xmlNodePtr firstNode, | |
xmlNodePtr lastNode); | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlParseQuotedString (xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL | |
xmlParseNamespace (xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlScanName (xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, | |
xmlChar **prefix); | |
/** | |
* Entities | |
*/ | |
XML_DEPRECATED | |
XMLPUBFUN xmlChar * XMLCALL | |
xmlDecodeEntities (xmlParserCtxtPtr ctxt, | |
int len, | |
int what, | |
xmlChar end, | |
xmlChar end2, | |
xmlChar end3); | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL | |
xmlHandleEntity (xmlParserCtxtPtr ctxt, | |
xmlEntityPtr entity); | |
/* | |
* internal only | |
*/ | |
XMLPUBFUN void XMLCALL | |
xmlErrMemory (xmlParserCtxtPtr ctxt, | |
const char *extra); | |
} | |