You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
598 lines
27 KiB
598 lines
27 KiB
* 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: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. |
|
|
|
/if not defined(XML_PARSER_INTERNALS_H__) |
|
/define XML_PARSER_INTERNALS_H__ |
|
|
|
/include "libxmlrpg/xmlversion" |
|
/include "libxmlrpg/xmlTypesC" |
|
/include "libxmlrpg/parser" |
|
/include "libxmlrpg/HTMLparser" |
|
/include "libxmlrpg/chvalid" |
|
|
|
* 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. |
|
|
|
d xmlParserMaxDepth... |
|
d s import('xmlParserMaxDepth') |
|
d like(xmlCuint) |
|
|
|
* 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 |
|
|
|
d XML_MAX_TEXT_LENGTH... |
|
d c 10000000 |
|
|
|
* XML_MAX_NAME_LENGTH: |
|
* |
|
* Maximum size allowed for a markup identitier |
|
* 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 |
|
|
|
d XML_MAX_NAME_LENGTH... |
|
d c 50000 |
|
|
|
* 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 |
|
|
|
d XML_MAX_DICTIONARY_LIMIT... |
|
d c 10000000 |
|
|
|
* 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 |
|
|
|
d XML_MAX_LOOKUP_LIMIT... |
|
d c 10000000 |
|
|
|
* XML_MAX_NAMELEN: |
|
* |
|
* Identifiers can be longer, but this will be more costly |
|
* at runtime. |
|
|
|
d XML_MAX_NAMELEN... |
|
d c 100 |
|
|
|
* INPUT_CHUNK: |
|
* |
|
* The parser tries to always have that amount of input ready. |
|
* One of the point is providing context when reporting errors. |
|
|
|
d INPUT_CHUNK c 250 |
|
|
|
* Global variables used for predefined strings. |
|
|
|
d xmlStringText s 4 import('xmlStringText') \0 in 5th byte |
|
|
|
d xmlStringTextNoenc... |
|
d s 9 import('xmlStringTextNoenc') \0 in 10th byte |
|
|
|
d xmlStringComment... |
|
d s 7 import('xmlStringComment') \0 in 8th byte |
|
|
|
* Function to finish the work of the macros where needed. |
|
|
|
d xmlIsLetter pr extproc('xmlIsLetter') |
|
d like(xmlCint) |
|
d c value like(xmlCint) |
|
|
|
* Parser context. |
|
|
|
d xmlCreateFileParserCtxt... |
|
d pr extproc('xmlCreateFileParserCtxt') |
|
d like(xmlParserCtxtPtr) |
|
d filename * value options(*string) const char * |
|
|
|
d xmlCreateURLParserCtxt... |
|
d pr extproc('xmlCreateURLParserCtxt') |
|
d like(xmlParserCtxtPtr) |
|
d filename * value options(*string) const char * |
|
d options value like(xmlCint) |
|
|
|
d xmlCreateMemoryParserCtxt... |
|
d pr extproc('xmlCreateMemoryParserCtxt') |
|
d like(xmlParserCtxtPtr) |
|
d buffer * value options(*string) const char * |
|
d size value like(xmlCint) |
|
|
|
d xmlCreateEntityParserCtxt... |
|
d pr extproc('xmlCreateEntityParserCtxt') |
|
d like(xmlParserCtxtPtr) |
|
d URL * value options(*string) const xmlChar * |
|
d ID * value options(*string) const xmlChar * |
|
d base * value options(*string) const xmlChar * |
|
|
|
d xmlSwitchEncoding... |
|
d pr extproc('xmlSwitchEncoding') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d enc value like(xmlCharEncoding) |
|
|
|
d xmlSwitchToEncoding... |
|
d pr extproc('xmlSwitchToEncoding') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d handler value like(xmlCharEncodingHandlerPtr) |
|
|
|
d xmlSwitchInputEncoding... |
|
d pr extproc('xmlSwitchInputEncoding') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d input value like(xmlParserInputPtr) |
|
d handler value like(xmlCharEncodingHandlerPtr) |
|
|
|
* Input Streams. |
|
|
|
d xmlNewStringInputStream... |
|
d pr extproc('xmlNewStringInputStream') |
|
d like(xmlParserInputPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d buffer * value options(*string) const xmlChar * |
|
|
|
d xmlNewEntityInputStream... |
|
d pr extproc('xmlNewEntityInputStream') |
|
d like(xmlParserInputPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d entity value like(xmlEntityPtr) |
|
|
|
d xmlPushInput pr extproc('xmlPushInput') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d input value like(xmlParserInputPtr) |
|
|
|
d xmlPopInput pr extproc('xmlPopInput') |
|
d like(xmlChar) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlFreeInputStream... |
|
d pr extproc('xmlFreeInputStream') |
|
d input value like(xmlParserInputPtr) |
|
|
|
d xmlNewInputFromFile... |
|
d pr extproc('xmlNewInputFromFile') |
|
d like(xmlParserInputPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d filename * value options(*string) const char * |
|
|
|
d xmlNewInputStream... |
|
d pr extproc('xmlNewInputStream') |
|
d like(xmlParserInputPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
* Namespaces. |
|
|
|
d xmlSplitQName pr * extproc('xmlSplitQName') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d name * value options(*string) const xmlChar * |
|
d prefix * xmlChar *(*) |
|
|
|
* Generic production rules. |
|
|
|
d xmlParseName pr * extproc('xmlParseName') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseNmtoken... |
|
d pr * extproc('xmlParseNmtoken') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEntityValue... |
|
d pr * extproc('xmlParseEntityValue') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d orig * xmlChar *(*) |
|
|
|
d xmlParseAttValue... |
|
d pr * extproc('xmlParseAttValue') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseSystemLiteral... |
|
d pr * extproc('xmlParseSystemLiteral') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParsePubidLiteral... |
|
d pr * extproc('xmlParsePubidLiteral') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseCharData... |
|
d pr extproc('xmlParseCharData') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d cdata value like(xmlCint) |
|
|
|
d xmlParseExternalID... |
|
d pr * extproc('xmlParseExternalID') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d publicID * xmlChar *(*) |
|
d strict value like(xmlCint) |
|
|
|
d xmlParseComment... |
|
d pr extproc('xmlParseComment') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParsePITarget... |
|
d pr * extproc('xmlParsePITarget') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParsePI pr extproc('xmlParsePI') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseNotationDecl... |
|
d pr extproc('xmlParseNotationDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEntityDecl... |
|
d pr extproc('xmlParseEntityDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseDefaultDecl... |
|
d pr extproc('xmlParseDefaultDecl') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d value * xmlChar *(*) |
|
|
|
d xmlParseNotationType... |
|
d pr extproc('xmlParseNotationType') |
|
d like(xmlEnumerationPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEnumerationType... |
|
d pr extproc('xmlParseEnumerationType') |
|
d like(xmlEnumerationPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEnumeratedType... |
|
d pr extproc('xmlParseEnumeratedType') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d tree * value xmlEnumerationPtr * |
|
|
|
d xmlParseAttributeType... |
|
d pr extproc('xmlParseAttributeType') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d tree * value xmlEnumerationPtr * |
|
|
|
d xmlParseAttributeListDecl... |
|
d pr extproc('xmlParseAttributeListDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseElementMixedContentDecl... |
|
d pr extproc( |
|
d 'xmlParseElementMixedContentDecl') |
|
d like(xmlElementContentPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d inputchk value like(xmlCint) |
|
|
|
d xmlParseElementChildrenContentDecl... |
|
d pr extproc( |
|
d 'xmlParseElementChildrenContentDecl') |
|
d like(xmlElementContentPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d inputchk value like(xmlCint) |
|
|
|
d xmlParseElementContentDecl... |
|
d pr extproc('xmlParseElementContentDecl') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d name * value options(*string) const xmlChar * |
|
d result * value xmlElementContentPtr |
|
d * |
|
|
|
d xmlParseElementDecl... |
|
d pr extproc('xmlParseElementDecl') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseMarkupDecl... |
|
d pr extproc('xmlParseMarkupDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseCharRef... |
|
d pr extproc('xmlParseCharRef') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEntityRef... |
|
d pr extproc('xmlParseEntityRef') |
|
d like(xmlEntityPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseReference... |
|
d pr extproc('xmlParseReference') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParsePEReference... |
|
d pr extproc('xmlParsePEReference') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseDocTypeDecl... |
|
d pr extproc('xmlParseDocTypeDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
/if defined(LIBXML_SAX1_ENABLED) |
|
d xmlParseAttribute... |
|
d pr * extproc('xmlParseAttribute') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d value * xmlChar *(*) |
|
|
|
d xmlParseStartTag... |
|
d pr * extproc('xmlParseStartTag') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEndTag pr extproc('xmlParseEndTag') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
/endif LIBXML_SAX1_ENABLED |
|
|
|
d xmlParseCDSect pr extproc('xmlParseCDSect') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseContent... |
|
d pr extproc('xmlParseContent') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseElement... |
|
d pr extproc('xmlParseElement') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseVersionNum... |
|
d pr * extproc('xmlParseVersionNum') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseVersionInfo... |
|
d pr * extproc('xmlParseVersionInfo') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEncName... |
|
d pr * extproc('xmlParseEncName') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseEncodingDecl... |
|
d pr * extproc('xmlParseEncodingDecl') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseSDDecl pr extproc('xmlParseSDDecl') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseXMLDecl... |
|
d pr extproc('xmlParseXMLDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseTextDecl... |
|
d pr extproc('xmlParseTextDecl') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseMisc pr extproc('xmlParseMisc') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseExternalSubset... |
|
d pr extproc('xmlParseExternalSubset') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d ExternalID * value options(*string) const xmlChar * |
|
d SystemID * value options(*string) const xmlChar * |
|
|
|
* XML_SUBSTITUTE_NONE: |
|
* |
|
* If no entities need to be substituted. |
|
|
|
d XML_SUBSTITUTE_NONE... |
|
d c 0 |
|
|
|
* XML_SUBSTITUTE_REF: |
|
* |
|
* Whether general entities need to be substituted. |
|
|
|
d XML_SUBSTITUTE_REF... |
|
d c 1 |
|
|
|
* XML_SUBSTITUTE_PEREF: |
|
* |
|
* Whether parameter entities need to be substituted. |
|
|
|
d XML_SUBSTITUTE_PEREF... |
|
d c 2 |
|
|
|
* XML_SUBSTITUTE_BOTH: |
|
* |
|
* Both general and parameter entities need to be substituted. |
|
|
|
d XML_SUBSTITUTE_BOTH... |
|
d c 3 |
|
|
|
d xmlStringDecodeEntities... |
|
d pr * extproc('xmlStringDecodeEntities') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d str * value options(*string) const xmlChar * |
|
d what value like(xmlCint) |
|
d end value like(xmlChar) |
|
d end2 value like(xmlChar) |
|
d end3 value like(xmlChar) |
|
|
|
d xmlStringLenDecodeEntities... |
|
d pr * extproc('xmlStringLenDecodeEntities')xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d str * value options(*string) const xmlChar * |
|
d len value like(xmlCint) |
|
d what value like(xmlCint) |
|
d end value like(xmlChar) |
|
d end2 value like(xmlChar) |
|
d end3 value like(xmlChar) |
|
|
|
* Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. |
|
|
|
d nodePush pr extproc('nodePush') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d value value like(xmlNodePtr) |
|
|
|
d nodePop pr extproc('nodePop') |
|
d like(xmlNodePtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d inputPush pr extproc('inputPush') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d value value like(xmlParserInputPtr) |
|
|
|
d inputPop pr extproc('inputPop') |
|
d like(xmlParserInputPtr) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d namePop pr * extproc('namePop') const xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d namePush pr extproc('namePush') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d value * value options(*string) const xmlChar * |
|
|
|
* other commodities shared between parser.c and parserInternals. |
|
|
|
d xmlSkipBlankChars... |
|
d pr extproc('xmlSkipBlankChars') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlStringCurrentChar... |
|
d pr extproc('xmlStringCurrentChar') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d cur * value options(*string) const xmlChar * |
|
d len * value int * |
|
|
|
d xmlParserHandlePEReference... |
|
d pr extproc('xmlParserHandlePEReference') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlCheckLanguageID... |
|
d pr extproc('xmlCheckLanguageID') |
|
d like(xmlCint) |
|
d lang * value options(*string) const xmlChar * |
|
|
|
* Really core function shared with HTML parser. |
|
|
|
d xmlCurrentChar pr extproc('xmlCurrentChar') |
|
d like(xmlCint) |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d len * value int * |
|
|
|
d xmlCopyCharMultiByte... |
|
d pr extproc('xmlCopyCharMultiByte') |
|
d like(xmlCint) |
|
d out * value options(*string) xmlChar * |
|
d val value like(xmlCint) |
|
|
|
d xmlCopyChar pr extproc('xmlCopyChar') |
|
d like(xmlCint) |
|
d len value like(xmlCint) |
|
d out * value options(*string) xmlChar * |
|
d val value like(xmlCint) |
|
|
|
d xmlNextChar pr extproc('xmlNextChar') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParserInputShrink... |
|
d pr extproc('xmlParserInputShrink') |
|
d in value like(xmlParserInputPtr) |
|
|
|
/if defined(LIBXML_HTML_ENABLED) |
|
|
|
* Actually comes from the HTML parser but launched from the init stuff. |
|
|
|
d htmlInitAutoClose... |
|
d pr extproc('htmlInitAutoClose') |
|
|
|
d htmlCreateFileParserCtxt... |
|
d pr extproc('htmlCreateFileParserCtxt') |
|
d like(htmlParserCtxtPtr) |
|
d filename * value options(*string) const char * |
|
d encoding * value options(*string) const char * |
|
/endif |
|
|
|
* Specific function to keep track of entities references |
|
* and used by the XSLT debugger. |
|
|
|
/if defined(LIBXML_LEGACY_ENABLED) |
|
* 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. |
|
|
|
d xmlEntityReferenceFunc... |
|
d s * based(######typedef######) |
|
d procptr |
|
|
|
d xmlSetEntityReferenceFunc... |
|
d pr extproc('xmlSetEntityReferenceFunc') |
|
d func value like(xmlEntityReferenceFunc) |
|
|
|
d xmlParseQuotedString... |
|
d pr * extproc('xmlParseQuotedString') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParseNamespace... |
|
d pr extproc('xmlParseNamespace') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlNamespaceParseNSDef... |
|
d pr * extproc('xmlNamespaceParseNSDef') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlScanName pr * extproc('xmlScanName') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlNamespaceParseNCName... |
|
d pr * extproc('xmlNamespaceParseNCName') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlParserHandleReference... |
|
d pr extproc('xmlParserHandleReference') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
|
|
d xmlNamespaceParseQName... |
|
d pr * extproc('xmlNamespaceParseQName') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d prefix * xmlChar *(*) |
|
|
|
* Entities |
|
|
|
d xmlDecodeEntities... |
|
d pr * extproc('xmlDecodeEntities') xmlChar * |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d len value like(xmlCint) |
|
d what value like(xmlCint) |
|
d end value like(xmlChar) |
|
d end2 value like(xmlChar) |
|
d end3 value like(xmlChar) |
|
|
|
d xmlHandleEntity... |
|
d pr extproc('xmlHandleEntity') |
|
d ctxt value like(xmlParserCtxtPtr) |
|
d entity value like(xmlEntityPtr) |
|
/endif LIBXML_LEGACY_ENABLD |
|
|
|
/endif
|
|
|