* 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