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 --- libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle | 675 +++++++++++++++++++++++++++++ 1 file changed, 675 insertions(+) create mode 100644 libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle (limited to 'libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle') diff --git a/libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle b/libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle new file mode 100644 index 0000000..6e591ee --- /dev/null +++ b/libxml2-2.9.10/os400/libxmlrpg/xpath.rpgle @@ -0,0 +1,675 @@ + * Summary: XML Path Language implementation + * Description: API for the XML Path Language implementation + * + * XML Path Language implementation + * XPath is a language for addressing parts of an XML document, + * designed to be used by both XSLT and XPointer + * http://www.w3.org/TR/xpath + * + * Implements + * W3C Recommendation 16 November 1999 + * http://www.w3.org/TR/1999/REC-xpath-19991116 + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat , DATASPHERE S.A. + + /if not defined(XML_XPATH_H__) + /define XML_XPATH_H__ + + /include "libxmlrpg/xmlversion" + + /if defined(LIBXML_XPATH_ENABLED) + + /include "libxmlrpg/xmlTypesC" + /include "libxmlrpg/xmlerror" + /include "libxmlrpg/tree" + /include "libxmlrpg/hash" + /endif LIBXML_XPATH_ENABLED + + /if defined(LIBXML_XPATH_ENABLED) + + d xmlXPathContextPtr... + d s * based(######typedef######) + + d xmlXPathParserContextPtr... + d s * based(######typedef######) + + * The set of XPath error codes. + + d xmlXPathError s based(######typedef######) + d like(xmlCenum) + d XPATH_EXPRESSION_OK... + d c 0 + d XPATH_NUMBER_ERROR... + d c 1 + d XPATH_UNFINISHED_LITERAL_ERROR... + d c 2 + d XPATH_START_LITERAL_ERROR... + d c 3 + d XPATH_VARIABLE_REF_ERROR... + d c 4 + d XPATH_UNDEF_VARIABLE_ERROR... + d c 5 + d XPATH_INVALID_PREDICATE_ERROR... + d c 6 + d XPATH_EXPR_ERROR... + d c 7 + d XPATH_UNCLOSED_ERROR... + d c 8 + d XPATH_UNKNOWN_FUNC_ERROR... + d c 9 + d XPATH_INVALID_OPERAND... + d c 10 + d XPATH_INVALID_TYPE... + d c 11 + d XPATH_INVALID_ARITY... + d c 12 + d XPATH_INVALID_CTXT_SIZE... + d c 13 + d XPATH_INVALID_CTXT_POSITION... + d c 14 + d XPATH_MEMORY_ERROR... + d c 15 + d XPTR_SYNTAX_ERROR... + d c 16 + d XPTR_RESOURCE_ERROR... + d c 17 + d XPTR_SUB_RESOURCE_ERROR... + d c 18 + d XPATH_UNDEF_PREFIX_ERROR... + d c 19 + d XPATH_ENCODING_ERROR... + d c 20 + d XPATH_INVALID_CHAR_ERROR... + d c 21 + d XPATH_INVALID_CTXT... + d c 22 + d XPATH_STACK_ERROR... + d c 23 + d XPATH_FORBID_VARIABLE_ERROR... + d c 24 + + * A node-set (an unordered collection of nodes without duplicates). + + d xmlNodeSetPtr s * based(######typedef######) + + d xmlNodeSet ds based(xmlNodeSetPtr) + d align qualified + d nodeNr like(xmlCint) Set node count + d nodeMax like(xmlCint) Max # nodes in set + d nodeTab * xmlNodePtr * + + * An expression is evaluated to yield an object, which + * has one of the following four basic types: + * - node-set + * - boolean + * - number + * - string + * + * @@ XPointer will add more types ! + + d xmlXPathObjectType... + d s based(######typedef######) + d like(xmlCenum) + d XPATH_UNDEFINED... + d c 0 + d XPATH_NODESET c 1 + d XPATH_BOOLEAN c 2 + d XPATH_NUMBER c 3 + d XPATH_STRING c 4 + d XPATH_POINT c 5 + d XPATH_RANGE c 6 + d XPATH_LOCATIONSET... + d c 7 + d XPATH_USERS c 8 + d XPATH_XSLT_TREE... R/O XSLT value tree + d c 9 + + d xmlXPathObjectPtr... + d s * based(######typedef######) + + d xmlXPathObject ds based(xmlXPathObjectPtr) + d align qualified + d type like(xmlXPathObjectType) + d nodesetval like(xmlNodeSetPtr) + d boolval like(xmlCint) + d floatval like(xmlCdouble) + d stringval * xmlChar * + d user * void * + d index like(xmlCint) + d user2 * void * + d index2 like(xmlCint) + + * xmlXPathConvertFunc: + * @obj: an XPath object + * @type: the number of the target type + * + * A conversion function is associated to a type and used to cast + * the new type to primitive values. + * + * Returns -1 in case of error, 0 otherwise + + d xmlXPathConvertFunc... + d s * based(######typedef######) + d procptr + + * Extra type: a name and a conversion function. + + d xmlXPathTypePtr... + d s * based(######typedef######) + + d xmlXPathType ds based(xmlXPathTypePtr) + d align qualified + d name * The type name + d func like(xmlXPathConvertFunc) Conversion function + + * Extra variable: a name and a value. + + d xmlXPathVariablePtr... + d s * based(######typedef######) + + d xmlXPathVariable... + d ds based(xmlXPathVariablePtr) + d align qualified + d name * The variable name + d value like(xmlXPathObjectPtr) The value + + * xmlXPathEvalFunc: + * @ctxt: an XPath parser context + * @nargs: the number of arguments passed to the function + * + * An XPath evaluation function, the parameters are on the XPath + * context stack. + + d xmlXPathEvalFunc... + d s * based(######typedef######) + d procptr + + * Extra function: a name and an evaluation function. + + d xmlXPathFuncPtr... + d s * based(######typedef######) + + d xmlXPathFunct ds based(xmlXPathFuncPtr) + d align qualified + d name * The function name + d func like(xmlXPathEvalFunc) Evaluation function + + * xmlXPathAxisFunc: + * @ctxt: the XPath interpreter context + * @cur: the previous node being explored on that axis + * + * An axis traversal function. To traverse an axis, the engine calls + * the first time with cur == NULL and repeat until the function returns + * NULL indicating the end of the axis traversal. + * + * Returns the next node in that axis or NULL if at the end of the axis. + + d xmlXPathAxisFunc... + d s * based(######typedef######) + d procptr + + * Extra axis: a name and an axis function. + + d xmlXPathAxisPtr... + d s * based(######typedef######) + + d xmlXPathAxis ds based(xmlXPathAxisPtr) + d align qualified + d name * The axis name + d func like(xmlXPathAxisFunc) The search function + + * xmlXPathFunction: + * @ctxt: the XPath interprestation context + * @nargs: the number of arguments + * + * An XPath function. + * The arguments (if any) are popped out from the context stack + * and the result is pushed on the stack. + + d xmlXPathFunction... + d s * based(######typedef######) + d procptr + + * Function and Variable Lookup. + + * xmlXPathVariableLookupFunc: + * @ctxt: an XPath context + * @name: name of the variable + * @ns_uri: the namespace name hosting this variable + * + * Prototype for callbacks used to plug variable lookup in the XPath + * engine. + * + * Returns the XPath object value or NULL if not found. + + d xmlXPathVariableLookupFunc... + d s * based(######typedef######) + d procptr + + * xmlXPathFuncLookupFunc: + * @ctxt: an XPath context + * @name: name of the function + * @ns_uri: the namespace name hosting this function + * + * Prototype for callbacks used to plug function lookup in the XPath + * engine. + * + * Returns the XPath function or NULL if not found. + + d xmlXPathFuncLookupFunc... + d s * based(######typedef######) + d procptr + + * xmlXPathFlags: + * Flags for XPath engine compilation and runtime + + * XML_XPATH_CHECKNS: + * + * check namespaces at compilation + + d XML_XPATH_CHECKNS... + d c X'0001' + + * XML_XPATH_NOVAR: + * + * forbid variables in expression + + d XML_XPATH_NOVAR... + d c X'0002' + + * xmlXPathContext: + * + * Expression evaluation occurs with respect to a context. + * he context consists of: + * - a node (the context node) + * - a node list (the context node list) + * - a set of variable bindings + * - a function library + * - the set of namespace declarations in scope for the expression + * Following the switch to hash tables, this need to be trimmed up at + * the next binary incompatible release. + * The node may be modified when the context is passed to libxml2 + * for an XPath evaluation so you may need to initialize it again + * before the next call. + + d xmlXPathContext... + d ds based(xmlXPathContextPtr) + d align qualified + d doc like(xmlDocPtr) Current document + d node like(xmlNodePtr) Current node + * + d nb_variables_unused... Unused (hash table) + d like(xmlCint) + d max_variables_unused... Unused (hash table) + d like(xmlCint) + d varHash like(xmlHashTablePtr) Defined variables + * + d nb_types like(xmlCint) # of defined types + d max_types like(xmlCint) Max number of types + d types like(xmlXPathTypePtr) Defined types array + * + d nb_funcs_unused... Unused (hash table) + d like(xmlCint) + d max_funcs_unused... Unused (hash table) + d like(xmlCint) + d funcHash like(xmlHashTablePtr) Defined functions + * + d nb_axis like(xmlCint) # of defined axis + d max_axis like(xmlCint) Max number of axis + d axis like(xmlXPathAxisPtr) Defined axis array + * + * the namespace nodes of the context node + * + d namespaces * xmlNsPtr * + d nsNr like(xmlCint) # scope namespaces + d user * procptr Function to free + * + * extra variables + * + d contextSize like(xmlCint) The context size + d proximityPosition... + d like(xmlCint) + * + * extra stuff for XPointer + * + d xptr like(xmlCint) XPointer context ? + d here like(xmlNodePtr) For here() + d origin like(xmlNodePtr) For origin() + * + * the set of namespace declarations in scope for the expression + * + d nsHash like(xmlHashTablePtr) Namespace hashtable + d varLookupFunc like(xmlXPathVariableLookupFunc) Var lookup function + d varLookupData * void * + * + * Possibility to link in an extra item + * + d extra * void * + * + * The function name and URI when calling a function + * + d function * const xmlChar * + d functionURI * const xmlChar * + * + * function lookup function and data + * + d funcLookupFunc... Func lookup func + d like(xmlXPathVariableLookupFunc) + d funcLookupData... void * + d * + * + * temporary namespace lists kept for walking the namespace axis + * + d tmpNsList * xmlNsPtr * + d tmpNsNr like(xmlCint) # scope namespaces + * + * error reporting mechanism + * + d userData * void * + d error like(xmlStructuredErrorFunc) Error callback + d lastError likeds(xmlError) The last error + d debugNode like(xmlNodePtr) XSLT source node + * + * dictionary + * + d dict like(xmlDictPtr) Dictionary if any + * + d flags like(xmlCint) Compilation control + * + * Cache for reusal of XPath objects + * + d cache * void * + + * The structure of a compiled expression form is not public. + + d xmlXPathCompExprPtr... + d s * based(######typedef######) + + * xmlXPathParserContext: + * + * An XPath parser context. It contains pure parsing informations, + * an xmlXPathContext, and the stack of objects. + + d xmlXPathParserContext... + d ds based(xmlXPathParserContextPtr) + d align qualified + d cur * const xmlChar * + d base * const xmlChar * + * + d error like(xmlCint) Error code + * + d context like(xmlXPathContextPtr) Evaluation context + d value like(xmlXPathObjectPtr) The current value + d valueNr like(xmlCint) Value stack depth + d valueMax like(xmlCint) Max stack depth + d valueTab * xmlXPathObjectPtr * + * + d comp like(xmlXPathCompExprPtr) Precompiled expr. + d xptr like(xmlCint) XPointer expression? + d ancestor like(xmlNodePtr) To walk prec. axis + * + d valueFrame like(xmlCint) Limit stack pop + + ************************************************************************** + * * + * Public API * + * * + ************************************************************************** + + * Objects and Nodesets handling + + d xmlXPathNAN s import('xmlXPathNAN') + d like(xmlCdouble) + + d xmlXPathPINF s import('xmlXPathPINF') + d like(xmlCdouble) + + d xmlXPathNINF s import('xmlXPathNINF') + d like(xmlCdouble) + + d xmlXPathFreeObject... + d pr extproc('xmlXPathFreeObject') + d obj value like(xmlXPathObjectPtr) + + d xmlXPathNodeSetCreate... + d pr extproc('xmlXPathNodeSetCreate') + d like(xmlNodeSetPtr) + d val value like(xmlNodePtr) + + d xmlXPathFreeNodeSetList... + d pr extproc('xmlXPathFreeNodeSetList') + d obj value like(xmlXPathObjectPtr) + + d xmlXPathFreeNodeSet... + d pr extproc('xmlXPathFreeNodeSet') + d obj value like(xmlNodeSetPtr) + + d xmlXPathObjectCopy... + d pr extproc('xmlXPathObjectCopy') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCmpNodes... + d pr extproc('xmlXPathCmpNodes') + d like(xmlCint) + d node1 value like(xmlNodePtr) + d node2 value like(xmlNodePtr) + + * Conversion functions to basic types. + + d xmlXPathCastNumberToBoolean... + d pr extproc( + d 'xmlXPathCastNumberToBoolean') + d like(xmlCint) + d val value like(xmlCdouble) + + d xmlXPathCastStringToBoolean... + d pr extproc( + d 'xmlXPathCastStringToBoolean') + d like(xmlCint) + d val * value options(*string) const xmlChar * + + d xmlXPathCastNodeSetToBoolean... + d pr extproc( + d 'xmlXPathCastNodeSetToBoolean') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToBoolean... + d pr extproc('xmlXPathCastToBoolean') + d like(xmlCint) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCastBooleanToNumber... + d pr extproc( + d 'xmlXPathCastBooleanToNumber') + d like(xmlCdouble) + d val value like(xmlCint) + + d xmlXPathCastStringToNumber... + d pr extproc('xmlXPathCastStringToNumber') + d like(xmlCdouble) + d val * value options(*string) const xmlChar * + + d xmlXPathCastNodeToNumber... + d pr extproc('xmlXPathCastNodeToNumber') + d like(xmlCdouble) + d node value like(xmlNodePtr) + + d xmlXPathCastNodeSetToNumber... + d pr extproc( + d 'xmlXPathCastNodeSetToNumber') + d like(xmlCdouble) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToNumber... + d pr extproc('xmlXPathCastToNumber') + d like(xmlCdouble) + d val value like(xmlXPathObjectPtr) + + d xmlXPathCastBooleanToString... + d pr * extproc( xmlChar * + d 'xmlXPathCastBooleanToString') + d val value like(xmlCint) + + d xmlXPathCastNumberToString... + d pr * extproc('xmlXPathCastNumberToString')xmlChar * + d val value like(xmlCdouble) + + d xmlXPathCastNodeToString... + d pr * extproc('xmlXPathCastNodeToString') xmlChar * + d node value like(xmlNodePtr) + + d xmlXPathCastNodeSetToString... + d pr * extproc('xmlXPathCastNodeSetToString'xmlChar * + d ) + d ns value like(xmlNodeSetPtr) + + d xmlXPathCastToString... + d pr * extproc('xmlXPathCastToString') xmlChar * + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertBoolean... + d pr extproc('xmlXPathConvertBoolean') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertNumber... + d pr extproc('xmlXPathConvertNumber') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + d xmlXPathConvertString... + d pr extproc('xmlXPathConvertString') + d like(xmlXPathObjectPtr) + d val value like(xmlXPathObjectPtr) + + * Context handling. + + d xmlXPathNewContext... + d pr extproc('xmlXPathNewContext') + d like(xmlXPathContextPtr) + d doc value like(xmlDocPtr) + + d xmlXPathFreeContext... + d pr extproc('xmlXPathFreeContext') + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathContextSetCache... + d pr extproc('xmlXPathContextSetCache') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d active value like(xmlCint) + d value value like(xmlCint) + d options value like(xmlCint) + + * Evaluation functions. + + d xmlXPathOrderDocElems... + d pr extproc('xmlXPathOrderDocElems') + d like(xmlClong) + d doc value like(xmlDocPtr) + + d xmlXPathSetContextNode... + d pr extproc('xmlXPathSetContextNode') + d like(xmlCint) + d node value like(xmlNodePtr) + d ctx value like(xmlXPathContextPtr) + + d xmlXPathNodeEval... + d pr extproc('xmlXPathNodeEval') + d like(xmlXPathObjectPtr) + d node value like(xmlNodePtr) + d str * value options(*string) const xmlChar * + d ctx value like(xmlXPathContextPtr) + + d xmlXPathEval pr extproc('xmlXPathEval') + d like(xmlXPathObjectPtr) + d str * value options(*string) const xmlChar * + d ctx value like(xmlXPathContextPtr) + + d xmlXPathEvalExpression... + d pr extproc('xmlXPathEvalExpression') + d like(xmlXPathObjectPtr) + d str * value options(*string) const xmlChar * + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathEvalPredicate... + d pr extproc('xmlXPathEvalPredicate') + d like(xmlCint) + d ctxt value like(xmlXPathContextPtr) + d res value like(xmlXPathObjectPtr) + + * Separate compilation/evaluation entry points. + + d xmlXPathCompile... + d pr extproc('xmlXPathCompile') + d like(xmlXPathCompExprPtr) + d str * value options(*string) const xmlChar * + + d xmlXPathCtxtCompile... + d pr extproc('xmlXPathCtxtCompile') + d like(xmlXPathCompExprPtr) + d ctxt value like(xmlXPathContextPtr) + d str * value options(*string) const xmlChar * + + d xmlXPathCompiledEval... + d pr extproc('xmlXPathCompiledEval') + d like(xmlXPathObjectPtr) + d comp value like(xmlXPathCompExprPtr) + d ctx value like(xmlXPathContextPtr) + + d xmlXPathCompiledEvalToBoolean... + d pr extproc( + d 'xmlXPathCompiledEvalToBoolean') + d like(xmlCint) + d comp value like(xmlXPathCompExprPtr) + d ctxt value like(xmlXPathContextPtr) + + d xmlXPathFreeCompExpr... + d pr extproc('xmlXPathFreeCompExpr') + d comp value like(xmlXPathCompExprPtr) + /endif LIBXML_XPATH_ENABLED + + /undefine XML_TESTVAL + /if defined(LIBXML_XPATH_ENABLED) + /define XML_TESTVAL + /elseif defined(LIBXML_SCHEMAS_ENABLED) + /define XML_TESTVAL + /endif + /if defined(XML_TESTVAL) + d xmlXPathInit pr extproc('xmlXPathInit') + + d xmlXPathIsNaN pr extproc('xmlXPathIsNaN') + d like(xmlCint) + d val value like(xmlCdouble) + + d xmlXPathIsInf pr extproc('xmlXPathIsInf') + d like(xmlCint) + d val value like(xmlCdouble) + + /undefine XML_TESTVAL + /endif + + * C macros implemented as procedures for ILE/RPG support. + + /if defined(LIBXML_XPATH_ENABLED) + d xmlXPathNodeSetGetLength... + d pr extproc('__xmlXPathNodeSetGetLength') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + + d xmlXPathNodeSetItem... + d pr extproc('__xmlXPathNodeSetItem') + d like(xmlNodePtr) + d ns value like(xmlNodeSetPtr) + d index value like(xmlCint) + + d xmlXPathNodeSetIsEmpty... + d pr extproc('__xmlXPathNodeSetIsEmpty') + d like(xmlCint) + d ns value like(xmlNodeSetPtr) + /endif LIBXML_XPATH_ENABLED + /endif XML_XPATH_H__ -- cgit v1.2.3