• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1      * Summary: XML Path Language implementation
2      * Description: API for the XML Path Language implementation
3      *
4      * XML Path Language implementation
5      * XPath is a language for addressing parts of an XML document,
6      * designed to be used by both XSLT and XPointer
7      *     http://www.w3.org/TR/xpath
8      *
9      * Implements
10      * W3C Recommendation 16 November 1999
11      *     http://www.w3.org/TR/1999/REC-xpath-19991116
12      *
13      * Copy: See Copyright for the status of this software.
14      *
15      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
16
17      /if not defined(XML_XPATH_H__)
18      /define XML_XPATH_H__
19
20      /include "libxmlrpg/xmlversion"
21
22      /if defined(LIBXML_XPATH_ENABLED)
23
24      /include "libxmlrpg/xmlTypesC"
25      /include "libxmlrpg/xmlerror"
26      /include "libxmlrpg/tree"
27      /include "libxmlrpg/hash"
28      /endif                                                                    LIBXML_XPATH_ENABLED
29
30      /if defined(LIBXML_XPATH_ENABLED)
31
32     d xmlXPathContextPtr...
33     d                 s               *   based(######typedef######)
34
35     d xmlXPathParserContextPtr...
36     d                 s               *   based(######typedef######)
37
38      * The set of XPath error codes.
39
40     d xmlXPathError   s                   based(######typedef######)
41     d                                     like(xmlCenum)
42     d  XPATH_EXPRESSION_OK...
43     d                 c                   0
44     d  XPATH_NUMBER_ERROR...
45     d                 c                   1
46     d  XPATH_UNFINISHED_LITERAL_ERROR...
47     d                 c                   2
48     d  XPATH_START_LITERAL_ERROR...
49     d                 c                   3
50     d  XPATH_VARIABLE_REF_ERROR...
51     d                 c                   4
52     d  XPATH_UNDEF_VARIABLE_ERROR...
53     d                 c                   5
54     d  XPATH_INVALID_PREDICATE_ERROR...
55     d                 c                   6
56     d  XPATH_EXPR_ERROR...
57     d                 c                   7
58     d  XPATH_UNCLOSED_ERROR...
59     d                 c                   8
60     d  XPATH_UNKNOWN_FUNC_ERROR...
61     d                 c                   9
62     d  XPATH_INVALID_OPERAND...
63     d                 c                   10
64     d  XPATH_INVALID_TYPE...
65     d                 c                   11
66     d  XPATH_INVALID_ARITY...
67     d                 c                   12
68     d  XPATH_INVALID_CTXT_SIZE...
69     d                 c                   13
70     d  XPATH_INVALID_CTXT_POSITION...
71     d                 c                   14
72     d  XPATH_MEMORY_ERROR...
73     d                 c                   15
74     d  XPTR_SYNTAX_ERROR...
75     d                 c                   16
76     d  XPTR_RESOURCE_ERROR...
77     d                 c                   17
78     d  XPTR_SUB_RESOURCE_ERROR...
79     d                 c                   18
80     d  XPATH_UNDEF_PREFIX_ERROR...
81     d                 c                   19
82     d  XPATH_ENCODING_ERROR...
83     d                 c                   20
84     d  XPATH_INVALID_CHAR_ERROR...
85     d                 c                   21
86     d  XPATH_INVALID_CTXT...
87     d                 c                   22
88     d  XPATH_STACK_ERROR...
89     d                 c                   23
90     d  XPATH_FORBID_VARIABLE_ERROR...
91     d                 c                   24
92
93      * A node-set (an unordered collection of nodes without duplicates).
94
95     d xmlNodeSetPtr   s               *   based(######typedef######)
96
97     d xmlNodeSet      ds                  based(xmlNodeSetPtr)
98     d                                     align qualified
99     d  nodeNr                             like(xmlCint)                        Set node count
100     d  nodeMax                            like(xmlCint)                        Max # nodes in set
101     d  nodeTab                        *                                        xmlNodePtr *
102
103      * An expression is evaluated to yield an object, which
104      * has one of the following four basic types:
105      *   - node-set
106      *   - boolean
107      *   - number
108      *   - string
109      *
110      * @@ XPointer will add more types !
111
112     d xmlXPathObjectType...
113     d                 s                   based(######typedef######)
114     d                                     like(xmlCenum)
115     d  XPATH_UNDEFINED...
116     d                 c                   0
117     d  XPATH_NODESET  c                   1
118     d  XPATH_BOOLEAN  c                   2
119     d  XPATH_NUMBER   c                   3
120     d  XPATH_STRING   c                   4
121     d  XPATH_POINT    c                   5
122     d  XPATH_RANGE    c                   6
123     d  XPATH_LOCATIONSET...
124     d                 c                   7
125     d  XPATH_USERS    c                   8
126     d  XPATH_XSLT_TREE...                                                      R/O XSLT value tree
127     d                 c                   9
128
129     d xmlXPathObjectPtr...
130     d                 s               *   based(######typedef######)
131
132     d xmlXPathObject  ds                  based(xmlXPathObjectPtr)
133     d                                     align qualified
134     d  type                               like(xmlXPathObjectType)
135     d  nodesetval                         like(xmlNodeSetPtr)
136     d  boolval                            like(xmlCint)
137     d  floatval                           like(xmlCdouble)
138     d  stringval                      *                                        xmlChar *
139     d  user                           *                                        void *
140     d  index                              like(xmlCint)
141     d  user2                          *                                        void *
142     d  index2                             like(xmlCint)
143
144      * xmlXPathConvertFunc:
145      * @obj:  an XPath object
146      * @type:  the number of the target type
147      *
148      * A conversion function is associated to a type and used to cast
149      * the new type to primitive values.
150      *
151      * Returns -1 in case of error, 0 otherwise
152
153     d xmlXPathConvertFunc...
154     d                 s               *   based(######typedef######)
155     d                                     procptr
156
157      * Extra type: a name and a conversion function.
158
159     d xmlXPathTypePtr...
160     d                 s               *   based(######typedef######)
161
162     d xmlXPathType    ds                  based(xmlXPathTypePtr)
163     d                                     align qualified
164     d  name                           *                                        The type name
165     d  func                               like(xmlXPathConvertFunc)            Conversion function
166
167      * Extra variable: a name and a value.
168
169     d xmlXPathVariablePtr...
170     d                 s               *   based(######typedef######)
171
172     d xmlXPathVariable...
173     d                 ds                  based(xmlXPathVariablePtr)
174     d                                     align qualified
175     d  name                           *                                        The variable name
176     d  value                              like(xmlXPathObjectPtr)              The value
177
178      * xmlXPathEvalFunc:
179      * @ctxt: an XPath parser context
180      * @nargs: the number of arguments passed to the function
181      *
182      * An XPath evaluation function, the parameters are on the XPath
183      *   context stack.
184
185     d xmlXPathEvalFunc...
186     d                 s               *   based(######typedef######)
187     d                                     procptr
188
189      * Extra function: a name and an evaluation function.
190
191     d xmlXPathFuncPtr...
192     d                 s               *   based(######typedef######)
193
194     d xmlXPathFunct   ds                  based(xmlXPathFuncPtr)
195     d                                     align qualified
196     d  name                           *                                        The function name
197     d  func                               like(xmlXPathEvalFunc)               Evaluation function
198
199      * xmlXPathAxisFunc:
200      * @ctxt:  the XPath interpreter context
201      * @cur:  the previous node being explored on that axis
202      *
203      * An axis traversal function. To traverse an axis, the engine calls
204      * the first time with cur == NULL and repeat until the function returns
205      * NULL indicating the end of the axis traversal.
206      *
207      * Returns the next node in that axis or NULL if at the end of the axis.
208
209     d xmlXPathAxisFunc...
210     d                 s               *   based(######typedef######)
211     d                                     procptr
212
213      * Extra axis: a name and an axis function.
214
215     d xmlXPathAxisPtr...
216     d                 s               *   based(######typedef######)
217
218     d xmlXPathAxis    ds                  based(xmlXPathAxisPtr)
219     d                                     align qualified
220     d  name                           *                                        The axis name
221     d  func                               like(xmlXPathAxisFunc)               The search function
222
223      * xmlXPathFunction:
224      * @ctxt:  the XPath interprestation context
225      * @nargs:  the number of arguments
226      *
227      * An XPath function.
228      * The arguments (if any) are popped out from the context stack
229      * and the result is pushed on the stack.
230
231     d xmlXPathFunction...
232     d                 s               *   based(######typedef######)
233     d                                     procptr
234
235      * Function and Variable Lookup.
236
237      * xmlXPathVariableLookupFunc:
238      * @ctxt:  an XPath context
239      * @name:  name of the variable
240      * @ns_uri:  the namespace name hosting this variable
241      *
242      * Prototype for callbacks used to plug variable lookup in the XPath
243      * engine.
244      *
245      * Returns the XPath object value or NULL if not found.
246
247     d xmlXPathVariableLookupFunc...
248     d                 s               *   based(######typedef######)
249     d                                     procptr
250
251      * xmlXPathFuncLookupFunc:
252      * @ctxt:  an XPath context
253      * @name:  name of the function
254      * @ns_uri:  the namespace name hosting this function
255      *
256      * Prototype for callbacks used to plug function lookup in the XPath
257      * engine.
258      *
259      * Returns the XPath function or NULL if not found.
260
261     d xmlXPathFuncLookupFunc...
262     d                 s               *   based(######typedef######)
263     d                                     procptr
264
265      * xmlXPathFlags:
266      * Flags for XPath engine compilation and runtime
267
268      * XML_XPATH_CHECKNS:
269      *
270      * check namespaces at compilation
271
272     d  XML_XPATH_CHECKNS...
273     d                 c                   X'0001'
274
275      * XML_XPATH_NOVAR:
276      *
277      * forbid variables in expression
278
279     d  XML_XPATH_NOVAR...
280     d                 c                   X'0002'
281
282      * xmlXPathContext:
283      *
284      * Expression evaluation occurs with respect to a context.
285      * he context consists of:
286      *    - a node (the context node)
287      *    - a node list (the context node list)
288      *    - a set of variable bindings
289      *    - a function library
290      *    - the set of namespace declarations in scope for the expression
291      * Following the switch to hash tables, this need to be trimmed up at
292      * the next binary incompatible release.
293      * The node may be modified when the context is passed to libxml2
294      * for an XPath evaluation so you may need to initialize it again
295      * before the next call.
296
297     d xmlXPathContext...
298     d                 ds                  based(xmlXPathContextPtr)
299     d                                     align qualified
300     d  doc                                like(xmlDocPtr)                      Current document
301     d  node                               like(xmlNodePtr)                     Current node
302      *
303     d  nb_variables_unused...                                                  Unused (hash table)
304     d                                     like(xmlCint)
305     d  max_variables_unused...                                                 Unused (hash table)
306     d                                     like(xmlCint)
307     d  varHash                            like(xmlHashTablePtr)                Defined variables
308      *
309     d  nb_types                           like(xmlCint)                        # of defined types
310     d  max_types                          like(xmlCint)                        Max number of types
311     d  types                              like(xmlXPathTypePtr)                Defined types array
312      *
313     d  nb_funcs_unused...                                                      Unused (hash table)
314     d                                     like(xmlCint)
315     d  max_funcs_unused...                                                     Unused (hash table)
316     d                                     like(xmlCint)
317     d  funcHash                           like(xmlHashTablePtr)                Defined functions
318      *
319     d  nb_axis                            like(xmlCint)                        # of defined axis
320     d  max_axis                           like(xmlCint)                        Max number of axis
321     d  axis                               like(xmlXPathAxisPtr)                Defined axis array
322      *
323      * the namespace nodes of the context node
324      *
325     d  namespaces                     *                                        xmlNsPtr *
326     d  nsNr                               like(xmlCint)                        # scope namespaces
327     d  user                           *   procptr                              Function to free
328      *
329      * extra variables
330      *
331     d  contextSize                        like(xmlCint)                        The context size
332     d  proximityPosition...
333     d                                     like(xmlCint)
334      *
335      * extra stuff for XPointer
336      *
337     d  xptr                               like(xmlCint)                        XPointer context ?
338     d  here                               like(xmlNodePtr)                     For here()
339     d  origin                             like(xmlNodePtr)                     For origin()
340      *
341      * the set of namespace declarations in scope for the expression
342      *
343     d  nsHash                             like(xmlHashTablePtr)                Namespace hashtable
344     d  varLookupFunc                      like(xmlXPathVariableLookupFunc)     Var lookup function
345     d  varLookupData                  *                                        void *
346      *
347      * Possibility to link in an extra item
348      *
349     d  extra                          *                                        void *
350      *
351      * The function name and URI when calling a function
352      *
353     d  function                       *                                        const xmlChar *
354     d  functionURI                    *                                        const xmlChar *
355      *
356      * function lookup function and data
357      *
358     d  funcLookupFunc...                                                       Func lookup func
359     d                                     like(xmlXPathVariableLookupFunc)
360     d  funcLookupData...                                                       void *
361     d                                 *
362      *
363      * temporary namespace lists kept for walking the namespace axis
364      *
365     d  tmpNsList                      *                                        xmlNsPtr *
366     d  tmpNsNr                            like(xmlCint)                        # scope namespaces
367      *
368      * error reporting mechanism
369      *
370     d  userData                       *                                        void *
371     d  error                              like(xmlStructuredErrorFunc)         Error callback
372     d  lastError                          likeds(xmlError)                     The last error
373     d  debugNode                          like(xmlNodePtr)                     XSLT source node
374      *
375      * dictionary
376      *
377     d  dict                               like(xmlDictPtr)                     Dictionary if any
378      *
379     d  flags                              like(xmlCint)                        Compilation control
380      *
381      * Cache for reusal of XPath objects
382      *
383     d  cache                          *                                        void *
384
385      * The structure of a compiled expression form is not public.
386
387     d xmlXPathCompExprPtr...
388     d                 s               *   based(######typedef######)
389
390      * xmlXPathParserContext:
391      *
392      * An XPath parser context. It contains pure parsing informations,
393      * an xmlXPathContext, and the stack of objects.
394
395     d xmlXPathParserContext...
396     d                 ds                  based(xmlXPathParserContextPtr)
397     d                                     align qualified
398     d  cur                            *                                        const xmlChar *
399     d  base                           *                                        const xmlChar *
400      *
401     d  error                              like(xmlCint)                        Error code
402      *
403     d  context                            like(xmlXPathContextPtr)             Evaluation context
404     d  value                              like(xmlXPathObjectPtr)              The current value
405     d  valueNr                            like(xmlCint)                        Value stack depth
406     d  valueMax                           like(xmlCint)                        Max stack depth
407     d  valueTab                       *                                        xmlXPathObjectPtr *
408      *
409     d  comp                               like(xmlXPathCompExprPtr)            Precompiled expr.
410     d  xptr                               like(xmlCint)                        XPointer expression?
411     d  ancestor                           like(xmlNodePtr)                     To walk prec. axis
412      *
413     d  valueFrame                         like(xmlCint)                        Limit stack pop
414
415      **************************************************************************
416      *                                                                        *
417      *                             Public API                                 *
418      *                                                                        *
419      **************************************************************************
420
421      * Objects and Nodesets handling
422
423     d xmlXPathNAN     s                   import('xmlXPathNAN')
424     d                                     like(xmlCdouble)
425
426     d xmlXPathPINF    s                   import('xmlXPathPINF')
427     d                                     like(xmlCdouble)
428
429     d xmlXPathNINF    s                   import('xmlXPathNINF')
430     d                                     like(xmlCdouble)
431
432     d xmlXPathFreeObject...
433     d                 pr                  extproc('xmlXPathFreeObject')
434     d obj                                 value like(xmlXPathObjectPtr)
435
436     d xmlXPathNodeSetCreate...
437     d                 pr                  extproc('xmlXPathNodeSetCreate')
438     d                                     like(xmlNodeSetPtr)
439     d val                                 value like(xmlNodePtr)
440
441     d xmlXPathFreeNodeSetList...
442     d                 pr                  extproc('xmlXPathFreeNodeSetList')
443     d obj                                 value like(xmlXPathObjectPtr)
444
445     d xmlXPathFreeNodeSet...
446     d                 pr                  extproc('xmlXPathFreeNodeSet')
447     d obj                                 value like(xmlNodeSetPtr)
448
449     d xmlXPathObjectCopy...
450     d                 pr                  extproc('xmlXPathObjectCopy')
451     d                                     like(xmlXPathObjectPtr)
452     d val                                 value like(xmlXPathObjectPtr)
453
454     d xmlXPathCmpNodes...
455     d                 pr                  extproc('xmlXPathCmpNodes')
456     d                                     like(xmlCint)
457     d node1                               value like(xmlNodePtr)
458     d node2                               value like(xmlNodePtr)
459
460      * Conversion functions to basic types.
461
462     d xmlXPathCastNumberToBoolean...
463     d                 pr                  extproc(
464     d                                      'xmlXPathCastNumberToBoolean')
465     d                                     like(xmlCint)
466     d val                                 value like(xmlCdouble)
467
468     d xmlXPathCastStringToBoolean...
469     d                 pr                  extproc(
470     d                                      'xmlXPathCastStringToBoolean')
471     d                                     like(xmlCint)
472     d val                             *   value options(*string)               const xmlChar *
473
474     d xmlXPathCastNodeSetToBoolean...
475     d                 pr                  extproc(
476     d                                     'xmlXPathCastNodeSetToBoolean')
477     d                                     like(xmlCint)
478     d ns                                  value like(xmlNodeSetPtr)
479
480     d xmlXPathCastToBoolean...
481     d                 pr                  extproc('xmlXPathCastToBoolean')
482     d                                     like(xmlCint)
483     d val                                 value like(xmlXPathObjectPtr)
484
485     d xmlXPathCastBooleanToNumber...
486     d                 pr                  extproc(
487     d                                      'xmlXPathCastBooleanToNumber')
488     d                                     like(xmlCdouble)
489     d val                                 value like(xmlCint)
490
491     d xmlXPathCastStringToNumber...
492     d                 pr                  extproc('xmlXPathCastStringToNumber')
493     d                                     like(xmlCdouble)
494     d val                             *   value options(*string)               const xmlChar *
495
496     d xmlXPathCastNodeToNumber...
497     d                 pr                  extproc('xmlXPathCastNodeToNumber')
498     d                                     like(xmlCdouble)
499     d node                                value like(xmlNodePtr)
500
501     d xmlXPathCastNodeSetToNumber...
502     d                 pr                  extproc(
503     d                                      'xmlXPathCastNodeSetToNumber')
504     d                                     like(xmlCdouble)
505     d ns                                  value like(xmlNodeSetPtr)
506
507     d xmlXPathCastToNumber...
508     d                 pr                  extproc('xmlXPathCastToNumber')
509     d                                     like(xmlCdouble)
510     d val                                 value like(xmlXPathObjectPtr)
511
512     d xmlXPathCastBooleanToString...
513     d                 pr              *   extproc(                             xmlChar *
514     d                                      'xmlXPathCastBooleanToString')
515     d val                                 value like(xmlCint)
516
517     d xmlXPathCastNumberToString...
518     d                 pr              *   extproc('xmlXPathCastNumberToString')xmlChar *
519     d val                                 value like(xmlCdouble)
520
521     d xmlXPathCastNodeToString...
522     d                 pr              *   extproc('xmlXPathCastNodeToString')  xmlChar *
523     d node                                value like(xmlNodePtr)
524
525     d xmlXPathCastNodeSetToString...
526     d                 pr              *   extproc('xmlXPathCastNodeSetToString'xmlChar *
527     d                                     )
528     d ns                                  value like(xmlNodeSetPtr)
529
530     d xmlXPathCastToString...
531     d                 pr              *   extproc('xmlXPathCastToString')      xmlChar *
532     d val                                 value like(xmlXPathObjectPtr)
533
534     d xmlXPathConvertBoolean...
535     d                 pr                  extproc('xmlXPathConvertBoolean')
536     d                                     like(xmlXPathObjectPtr)
537     d val                                 value like(xmlXPathObjectPtr)
538
539     d xmlXPathConvertNumber...
540     d                 pr                  extproc('xmlXPathConvertNumber')
541     d                                     like(xmlXPathObjectPtr)
542     d val                                 value like(xmlXPathObjectPtr)
543
544     d xmlXPathConvertString...
545     d                 pr                  extproc('xmlXPathConvertString')
546     d                                     like(xmlXPathObjectPtr)
547     d val                                 value like(xmlXPathObjectPtr)
548
549      * Context handling.
550
551     d xmlXPathNewContext...
552     d                 pr                  extproc('xmlXPathNewContext')
553     d                                     like(xmlXPathContextPtr)
554     d doc                                 value like(xmlDocPtr)
555
556     d xmlXPathFreeContext...
557     d                 pr                  extproc('xmlXPathFreeContext')
558     d ctxt                                value like(xmlXPathContextPtr)
559
560     d xmlXPathContextSetCache...
561     d                 pr                  extproc('xmlXPathContextSetCache')
562     d                                     like(xmlCint)
563     d ctxt                                value like(xmlXPathContextPtr)
564     d active                              value like(xmlCint)
565     d value                               value like(xmlCint)
566     d options                             value like(xmlCint)
567
568      * Evaluation functions.
569
570     d xmlXPathOrderDocElems...
571     d                 pr                  extproc('xmlXPathOrderDocElems')
572     d                                     like(xmlClong)
573     d doc                                 value like(xmlDocPtr)
574
575     d xmlXPathSetContextNode...
576     d                 pr                  extproc('xmlXPathSetContextNode')
577     d                                     like(xmlCint)
578     d node                                value like(xmlNodePtr)
579     d ctx                                 value like(xmlXPathContextPtr)
580
581     d xmlXPathNodeEval...
582     d                 pr                  extproc('xmlXPathNodeEval')
583     d                                     like(xmlXPathObjectPtr)
584     d node                                value like(xmlNodePtr)
585     d str                             *   value options(*string)               const xmlChar *
586     d ctx                                 value like(xmlXPathContextPtr)
587
588     d xmlXPathEval    pr                  extproc('xmlXPathEval')
589     d                                     like(xmlXPathObjectPtr)
590     d str                             *   value options(*string)               const xmlChar *
591     d ctx                                 value like(xmlXPathContextPtr)
592
593     d xmlXPathEvalExpression...
594     d                 pr                  extproc('xmlXPathEvalExpression')
595     d                                     like(xmlXPathObjectPtr)
596     d str                             *   value options(*string)               const xmlChar *
597     d ctxt                                value like(xmlXPathContextPtr)
598
599     d xmlXPathEvalPredicate...
600     d                 pr                  extproc('xmlXPathEvalPredicate')
601     d                                     like(xmlCint)
602     d ctxt                                value like(xmlXPathContextPtr)
603     d res                                 value like(xmlXPathObjectPtr)
604
605      * Separate compilation/evaluation entry points.
606
607     d xmlXPathCompile...
608     d                 pr                  extproc('xmlXPathCompile')
609     d                                     like(xmlXPathCompExprPtr)
610     d str                             *   value options(*string)               const xmlChar *
611
612     d xmlXPathCtxtCompile...
613     d                 pr                  extproc('xmlXPathCtxtCompile')
614     d                                     like(xmlXPathCompExprPtr)
615     d ctxt                                value like(xmlXPathContextPtr)
616     d str                             *   value options(*string)               const xmlChar *
617
618     d xmlXPathCompiledEval...
619     d                 pr                  extproc('xmlXPathCompiledEval')
620     d                                     like(xmlXPathObjectPtr)
621     d comp                                value like(xmlXPathCompExprPtr)
622     d ctx                                 value like(xmlXPathContextPtr)
623
624     d xmlXPathCompiledEvalToBoolean...
625     d                 pr                  extproc(
626     d                                     'xmlXPathCompiledEvalToBoolean')
627     d                                     like(xmlCint)
628     d comp                                value like(xmlXPathCompExprPtr)
629     d ctxt                                value like(xmlXPathContextPtr)
630
631     d xmlXPathFreeCompExpr...
632     d                 pr                  extproc('xmlXPathFreeCompExpr')
633     d comp                                value like(xmlXPathCompExprPtr)
634      /endif                                                                    LIBXML_XPATH_ENABLED
635
636      /undefine XML_TESTVAL
637      /if defined(LIBXML_XPATH_ENABLED)
638      /define XML_TESTVAL
639      /elseif defined(LIBXML_SCHEMAS_ENABLED)
640      /define XML_TESTVAL
641      /endif
642      /if defined(XML_TESTVAL)
643     d xmlXPathInit    pr                  extproc('xmlXPathInit')
644
645     d xmlXPathIsNaN   pr                  extproc('xmlXPathIsNaN')
646     d                                     like(xmlCint)
647     d val                                 value like(xmlCdouble)
648
649     d xmlXPathIsInf   pr                  extproc('xmlXPathIsInf')
650     d                                     like(xmlCint)
651     d val                                 value like(xmlCdouble)
652
653      /undefine XML_TESTVAL
654      /endif
655
656      * C macros implemented as procedures for ILE/RPG support.
657
658      /if defined(LIBXML_XPATH_ENABLED)
659     d xmlXPathNodeSetGetLength...
660     d                 pr                  extproc('__xmlXPathNodeSetGetLength')
661     d                                     like(xmlCint)
662     d  ns                                 value like(xmlNodeSetPtr)
663
664     d xmlXPathNodeSetItem...
665     d                 pr                  extproc('__xmlXPathNodeSetItem')
666     d                                     like(xmlNodePtr)
667     d  ns                                 value like(xmlNodeSetPtr)
668     d  index                              value like(xmlCint)
669
670     d xmlXPathNodeSetIsEmpty...
671     d                 pr                  extproc('__xmlXPathNodeSetIsEmpty')
672     d                                     like(xmlCint)
673     d  ns                                 value like(xmlNodeSetPtr)
674      /endif                                                                    LIBXML_XPATH_ENABLED
675      /endif                                                                    XML_XPATH_H__
676