ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ/** * @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 #include #include #include #include #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__ */