blob: 6c8f3884f174c64d5aa5c81431b1e039631e69ec [file] [log] [blame]
* 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