📄 parserinternals.h
字号:
/* * parserInternals.h : internals routines exported by the parser. * * See Copyright for the status of this software. * * daniel@veillard.com * * 14 Nov 2000 ht - truncated declaration of xmlParseElementChildrenContentDecl * for VMS * */#ifndef __XML_PARSER_INTERNALS_H__#define __XML_PARSER_INTERNALS_H__#include <libxml/parser.h>#include <libxml/HTMLparser.h>#ifdef __cplusplusextern "C" {#endif /** * XML_MAX_NAMELEN: * * Identifiers can be longer, but this will be more costly * at runtime. */#define XML_MAX_NAMELEN 100/** * INPUT_CHUNK: * * The parser tries to always have that amount of input ready. * One of the point is providing context when reporting errors. */#define INPUT_CHUNK 250/************************************************************************ * * * UNICODE version of the macros. * * * ************************************************************************//** * 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. */#define IS_CHAR(c) \ ((((c) >= 0x20) && ((c) <= 0xD7FF)) || \ ((c) == 0x09) || ((c) == 0x0A) || ((c) == 0x0D) || \ (((c) >= 0xE000) && ((c) <= 0xFFFD)) || \ (((c) >= 0x10000) && ((c) <= 0x10FFFF)))/** * IS_BLANK: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * [3] S ::= (#x20 | #x9 | #xD | #xA)+ */#define IS_BLANK(c) (((c) == 0x20) || ((c) == 0x09) || ((c) == 0xA) || \ ((c) == 0x0D))/** * IS_BASECHAR: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * [85] BaseChar ::= ... long list see REC ... */#define IS_BASECHAR(c) xmlIsBaseChar(c)/** * IS_DIGIT: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * [88] Digit ::= ... long list see REC ... */#define IS_DIGIT(c) xmlIsDigit(c)/** * IS_COMBINING: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * [87] CombiningChar ::= ... long list see REC ... */#define IS_COMBINING(c) xmlIsCombining(c)/** * 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] */#define IS_EXTENDER(c) xmlIsExtender(c)/** * IS_IDEOGRAPHIC: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] */#define IS_IDEOGRAPHIC(c) xmlIsIdeographic(c)/** * IS_LETTER: * @c: an UNICODE value (int) * * Macro to check the following production in the XML spec: * * * [84] Letter ::= BaseChar | Ideographic */#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))/** * 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] | [-'()+,./:=?;!*#@$_%] */#define IS_PUBIDCHAR(c) xmlIsPubidChar(c)/** * SKIP_EOL: * @p: and UTF8 string pointer * * Skips the end of line chars. */#define SKIP_EOL(p) \ if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }/** * MOVETO_ENDTAG: * @p: and UTF8 string pointer * * Skips to the next '>' char. */#define MOVETO_ENDTAG(p) \ while ((*p) && (*(p) != '>')) (p)++/** * MOVETO_STARTTAG: * @p: and UTF8 string pointer * * Skips to the next '<' char. */#define MOVETO_STARTTAG(p) \ while ((*p) && (*(p) != '<')) (p)++/** * Global variables used for predefined strings. */LIBXML_DLL_IMPORT extern const xmlChar xmlStringText[];LIBXML_DLL_IMPORT extern const xmlChar xmlStringTextNoenc[];LIBXML_DLL_IMPORT extern const xmlChar xmlStringComment[];/* * Function to finish the work of the macros where needed. */int xmlIsBaseChar (int c);int xmlIsBlank (int c);int xmlIsPubidChar (int c);int xmlIsLetter (int c);int xmlIsDigit (int c);int xmlIsIdeographic(int c);int xmlIsExtender (int c);int xmlIsCombining (int c);int xmlIsChar (int c);/** * Parser context. */xmlParserCtxtPtr xmlCreateFileParserCtxt (const char *filename);xmlParserCtxtPtr xmlCreateMemoryParserCtxt(const char *buffer, int size);xmlParserCtxtPtr xmlNewParserCtxt (void);xmlParserCtxtPtr xmlCreateEntityParserCtxt(const xmlChar *URL, const xmlChar *ID, const xmlChar *base);int xmlSwitchEncoding (xmlParserCtxtPtr ctxt, xmlCharEncoding enc);int xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, xmlCharEncodingHandlerPtr handler);/** * Entities */void xmlHandleEntity (xmlParserCtxtPtr ctxt, xmlEntityPtr entity);/** * Input Streams. */xmlParserInputPtr xmlNewStringInputStream (xmlParserCtxtPtr ctxt, const xmlChar *buffer);xmlParserInputPtr xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, xmlEntityPtr entity);void xmlPushInput (xmlParserCtxtPtr ctxt, xmlParserInputPtr input);xmlChar xmlPopInput (xmlParserCtxtPtr ctxt);void xmlFreeInputStream (xmlParserInputPtr input);xmlParserInputPtr xmlNewInputFromFile (xmlParserCtxtPtr ctxt, const char *filename);xmlParserInputPtr xmlNewInputStream (xmlParserCtxtPtr ctxt);/** * Namespaces. */xmlChar * xmlSplitQName (xmlParserCtxtPtr ctxt, const xmlChar *name, xmlChar **prefix);xmlChar * xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt);xmlChar * xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, xmlChar **prefix);xmlChar * xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt);xmlChar * xmlParseQuotedString (xmlParserCtxtPtr ctxt);void xmlParseNamespace (xmlParserCtxtPtr ctxt);/** * Generic production rules. */xmlChar * xmlScanName (xmlParserCtxtPtr ctxt);xmlChar * xmlParseName (xmlParserCtxtPtr ctxt);xmlChar * xmlParseNmtoken (xmlParserCtxtPtr ctxt);xmlChar * xmlParseEntityValue (xmlParserCtxtPtr ctxt, xmlChar **orig);xmlChar * xmlParseAttValue (xmlParserCtxtPtr ctxt);xmlChar * xmlParseSystemLiteral (xmlParserCtxtPtr ctxt);xmlChar * xmlParsePubidLiteral (xmlParserCtxtPtr ctxt);void xmlParseCharData (xmlParserCtxtPtr ctxt, int cdata);xmlChar * xmlParseExternalID (xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict);void xmlParseComment (xmlParserCtxtPtr ctxt);xmlChar * xmlParsePITarget (xmlParserCtxtPtr ctxt);void xmlParsePI (xmlParserCtxtPtr ctxt);void xmlParseNotationDecl (xmlParserCtxtPtr ctxt);void xmlParseEntityDecl (xmlParserCtxtPtr ctxt);int xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, xmlChar **value);xmlEnumerationPtr xmlParseNotationType (xmlParserCtxtPtr ctxt);xmlEnumerationPtr xmlParseEnumerationType (xmlParserCtxtPtr ctxt);int xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);int xmlParseAttributeType (xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);void xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);xmlElementContentPtr xmlParseElementMixedContentDecl (xmlParserCtxtPtr ctxt, xmlParserInputPtr inputchk);#ifdef VMSxmlElementContentPtr xmlParseElementChildrenContentD (xmlParserCtxtPtr ctxt);#define xmlParseElementChildrenContentDecl xmlParseElementChildrenContentD#elsexmlElementContentPtr xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, xmlParserInputPtr inputchk);#endifint xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, xmlChar *name, xmlElementContentPtr *result);int xmlParseElementDecl (xmlParserCtxtPtr ctxt);void xmlParseMarkupDecl (xmlParserCtxtPtr ctxt);int xmlParseCharRef (xmlParserCtxtPtr ctxt);xmlEntityPtr xmlParseEntityRef (xmlParserCtxtPtr ctxt);void xmlParseReference (xmlParserCtxtPtr ctxt);void xmlParsePEReference (xmlParserCtxtPtr ctxt);void xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt);xmlChar * xmlParseAttribute (xmlParserCtxtPtr ctxt, xmlChar **value);xmlChar * xmlParseStartTag (xmlParserCtxtPtr ctxt);void xmlParseEndTag (xmlParserCtxtPtr ctxt);void xmlParseCDSect (xmlParserCtxtPtr ctxt);void xmlParseContent (xmlParserCtxtPtr ctxt);void xmlParseElement (xmlParserCtxtPtr ctxt);xmlChar * xmlParseVersionNum (xmlParserCtxtPtr ctxt);xmlChar * xmlParseVersionInfo (xmlParserCtxtPtr ctxt);xmlChar * xmlParseEncName (xmlParserCtxtPtr ctxt);xmlChar * xmlParseEncodingDecl (xmlParserCtxtPtr ctxt);int xmlParseSDDecl (xmlParserCtxtPtr ctxt);void xmlParseXMLDecl (xmlParserCtxtPtr ctxt);void xmlParseTextDecl (xmlParserCtxtPtr ctxt);void xmlParseMisc (xmlParserCtxtPtr ctxt);void xmlParseExternalSubset (xmlParserCtxtPtr ctxt, const xmlChar *ExternalID, const xmlChar *SystemID); /** * XML_SUBSTITUTE_NONE: * * If no entities need to be substituted. */#define XML_SUBSTITUTE_NONE 0/** * XML_SUBSTITUTE_REF: * * Whether general entities need to be substituted. */#define XML_SUBSTITUTE_REF 1/** * XML_SUBSTITUTE_PEREF: * * Whether parameter entities need to be substituted. */#define XML_SUBSTITUTE_PEREF 2/** * XML_SUBSTITUTE_BOTH: * * Both general and parameter entities need to be substituted. */#define XML_SUBSTITUTE_BOTH 3xmlChar * xmlDecodeEntities (xmlParserCtxtPtr ctxt, int len, int what, xmlChar end, xmlChar end2, xmlChar end3);xmlChar * xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, const xmlChar *str, int what, xmlChar end, xmlChar end2, xmlChar end3);/* * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. */int nodePush (xmlParserCtxtPtr ctxt, xmlNodePtr value);xmlNodePtr nodePop (xmlParserCtxtPtr ctxt);int inputPush (xmlParserCtxtPtr ctxt, xmlParserInputPtr value);xmlParserInputPtr inputPop (xmlParserCtxtPtr ctxt);xmlChar *namePop (xmlParserCtxtPtr ctxt);int namePush (xmlParserCtxtPtr ctxt, xmlChar *value);/* * other commodities shared between parser.c and parserInternals. */int xmlSkipBlankChars (xmlParserCtxtPtr ctxt);int xmlStringCurrentChar (xmlParserCtxtPtr ctxt, const xmlChar *cur, int *len);void xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);void xmlParserHandleReference(xmlParserCtxtPtr ctxt);int xmlCheckLanguageID (const xmlChar *lang);/* * Really core function shared with HTML parser. */int xmlCurrentChar (xmlParserCtxtPtr ctxt, int *len);int xmlCopyCharMultiByte (xmlChar *out, int val);int xmlCopyChar (int len, xmlChar *out, int val);void xmlNextChar (xmlParserCtxtPtr ctxt);void xmlParserInputShrink (xmlParserInputPtr in);#ifdef LIBXML_HTML_ENABLED/* * Actually comes from the HTML parser but launched from the init stuff. */void htmlInitAutoClose (void);htmlParserCtxtPtr htmlCreateFileParserCtxt(const char *filename, const char *encoding);#endif/* * 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); void xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func);#ifdef __cplusplus}#endif#endif /* __XML_PARSER_INTERNALS_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -