From 35a201cc8ef0c3f5b2df88d2e528aabee1048348 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 18:47:09 +0200 Subject: Initial/Final commit --- .../os400/libxmlrpg/parserInternals.rpgle | 598 +++++++++++++++++++++ 1 file changed, 598 insertions(+) create mode 100644 libxml2-2.9.10/os400/libxmlrpg/parserInternals.rpgle (limited to 'libxml2-2.9.10/os400/libxmlrpg/parserInternals.rpgle') diff --git a/libxml2-2.9.10/os400/libxmlrpg/parserInternals.rpgle b/libxml2-2.9.10/os400/libxmlrpg/parserInternals.rpgle new file mode 100644 index 0000000..6c8f388 --- /dev/null +++ b/libxml2-2.9.10/os400/libxmlrpg/parserInternals.rpgle @@ -0,0 +1,598 @@ + * 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 , 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 -- cgit v1.2.3