2 * Summary: internal interfaces for XML Path Language implementation
3 * Description: internal interfaces for XML Path Language implementation
4 * used to build new modules on top of XPath like XPointer and
7 * Copy: See Copyright for the status of this software.
9 * Author: Daniel Veillard
12 #ifndef __XML_XPATH_INTERNALS_H__
13 #define __XML_XPATH_INTERNALS_H__
15 #include <libxml/xmlversion.h>
16 #include <libxml/xpath.h>
18 #ifdef LIBXML_XPATH_ENABLED
24 /************************************************************************
28 ************************************************************************/
31 * Many of these macros may later turn into functions. They
32 * shouldn't be used in #ifdef's preprocessor instructions.
36 * @ctxt: an XPath parser context
37 * @err: an xmlXPathError code
41 #define xmlXPathSetError(ctxt, err) \
42 { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \
43 if ((ctxt) != NULL) (ctxt)->error = (err); }
46 * xmlXPathSetArityError:
47 * @ctxt: an XPath parser context
49 * Raises an XPATH_INVALID_ARITY error.
51 #define xmlXPathSetArityError(ctxt) \
52 xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
55 * xmlXPathSetTypeError:
56 * @ctxt: an XPath parser context
58 * Raises an XPATH_INVALID_TYPE error.
60 #define xmlXPathSetTypeError(ctxt) \
61 xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
65 * @ctxt: an XPath parser context
67 * Get the error code of an XPath context.
69 * Returns the context error.
71 #define xmlXPathGetError(ctxt) ((ctxt)->error)
75 * @ctxt: an XPath parser context
77 * Check if an XPath error was raised.
79 * Returns true if an error has been raised, false otherwise.
81 #define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
84 * xmlXPathGetDocument:
85 * @ctxt: an XPath parser context
87 * Get the document of an XPath context.
89 * Returns the context document.
91 #define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
94 * xmlXPathGetContextNode:
95 * @ctxt: an XPath parser context
97 * Get the context node of an XPath context.
99 * Returns the context node.
101 #define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
103 XMLPUBFUN int XMLCALL
104 xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt);
105 XMLPUBFUN double XMLCALL
106 xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
107 XMLPUBFUN xmlChar * XMLCALL
108 xmlXPathPopString (xmlXPathParserContextPtr ctxt);
109 XMLPUBFUN xmlNodeSetPtr XMLCALL
110 xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
111 XMLPUBFUN void * XMLCALL
112 xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
115 * xmlXPathReturnBoolean:
116 * @ctxt: an XPath parser context
119 * Pushes the boolean @val on the context stack.
121 #define xmlXPathReturnBoolean(ctxt, val) \
122 valuePush((ctxt), xmlXPathNewBoolean(val))
125 * xmlXPathReturnTrue:
126 * @ctxt: an XPath parser context
128 * Pushes true on the context stack.
130 #define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
133 * xmlXPathReturnFalse:
134 * @ctxt: an XPath parser context
136 * Pushes false on the context stack.
138 #define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
141 * xmlXPathReturnNumber:
142 * @ctxt: an XPath parser context
145 * Pushes the double @val on the context stack.
147 #define xmlXPathReturnNumber(ctxt, val) \
148 valuePush((ctxt), xmlXPathNewFloat(val))
151 * xmlXPathReturnString:
152 * @ctxt: an XPath parser context
155 * Pushes the string @str on the context stack.
157 #define xmlXPathReturnString(ctxt, str) \
158 valuePush((ctxt), xmlXPathWrapString(str))
161 * xmlXPathReturnEmptyString:
162 * @ctxt: an XPath parser context
164 * Pushes an empty string on the stack.
166 #define xmlXPathReturnEmptyString(ctxt) \
167 valuePush((ctxt), xmlXPathNewCString(""))
170 * xmlXPathReturnNodeSet:
171 * @ctxt: an XPath parser context
174 * Pushes the node-set @ns on the context stack.
176 #define xmlXPathReturnNodeSet(ctxt, ns) \
177 valuePush((ctxt), xmlXPathWrapNodeSet(ns))
180 * xmlXPathReturnEmptyNodeSet:
181 * @ctxt: an XPath parser context
183 * Pushes an empty node-set on the context stack.
185 #define xmlXPathReturnEmptyNodeSet(ctxt) \
186 valuePush((ctxt), xmlXPathNewNodeSet(NULL))
189 * xmlXPathReturnExternal:
190 * @ctxt: an XPath parser context
193 * Pushes user data on the context stack.
195 #define xmlXPathReturnExternal(ctxt, val) \
196 valuePush((ctxt), xmlXPathWrapExternal(val))
199 * xmlXPathStackIsNodeSet:
200 * @ctxt: an XPath parser context
202 * Check if the current value on the XPath stack is a node set or
203 * an XSLT value tree.
205 * Returns true if the current object on the stack is a node-set.
207 #define xmlXPathStackIsNodeSet(ctxt) \
208 (((ctxt)->value != NULL) \
209 && (((ctxt)->value->type == XPATH_NODESET) \
210 || ((ctxt)->value->type == XPATH_XSLT_TREE)))
213 * xmlXPathStackIsExternal:
214 * @ctxt: an XPath parser context
216 * Checks if the current value on the XPath stack is an external
219 * Returns true if the current object on the stack is an external
222 #define xmlXPathStackIsExternal(ctxt) \
223 ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
226 * xmlXPathEmptyNodeSet:
229 * Empties a node-set.
231 #define xmlXPathEmptyNodeSet(ns) \
232 { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
237 * Macro to return from the function if an XPath error was detected.
239 #define CHECK_ERROR \
240 if (ctxt->error != XPATH_EXPRESSION_OK) return
245 * Macro to return 0 from the function if an XPath error was detected.
247 #define CHECK_ERROR0 \
248 if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
254 * Macro to raise an XPath error and return.
256 #define XP_ERROR(X) \
257 { xmlXPathErr(ctxt, X); return; }
263 * Macro to raise an XPath error and return 0.
265 #define XP_ERROR0(X) \
266 { xmlXPathErr(ctxt, X); return(0); }
270 * @typeval: the XPath type
272 * Macro to check that the value on top of the XPath stack is of a given
275 #define CHECK_TYPE(typeval) \
276 if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
277 XP_ERROR(XPATH_INVALID_TYPE)
281 * @typeval: the XPath type
283 * Macro to check that the value on top of the XPath stack is of a given
284 * type. Return(0) in case of failure
286 #define CHECK_TYPE0(typeval) \
287 if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
288 XP_ERROR0(XPATH_INVALID_TYPE)
292 * @x: the number of expected args
294 * Macro to check that the number of args passed to an XPath function matches.
296 #define CHECK_ARITY(x) \
297 if (ctxt == NULL) return; \
299 XP_ERROR(XPATH_INVALID_ARITY);
304 * Macro to try to cast the value on the top of the XPath stack to a string.
306 #define CAST_TO_STRING \
307 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \
308 xmlXPathStringFunction(ctxt, 1);
313 * Macro to try to cast the value on the top of the XPath stack to a number.
315 #define CAST_TO_NUMBER \
316 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \
317 xmlXPathNumberFunction(ctxt, 1);
322 * Macro to try to cast the value on the top of the XPath stack to a boolean.
324 #define CAST_TO_BOOLEAN \
325 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
326 xmlXPathBooleanFunction(ctxt, 1);
329 * Variable Lookup forwarding.
332 XMLPUBFUN void XMLCALL
333 xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
334 xmlXPathVariableLookupFunc f,
338 * Function Lookup forwarding.
341 XMLPUBFUN void XMLCALL
342 xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
343 xmlXPathFuncLookupFunc f,
349 XMLPUBFUN void XMLCALL
350 xmlXPatherror (xmlXPathParserContextPtr ctxt,
355 XMLPUBFUN void XMLCALL
356 xmlXPathErr (xmlXPathParserContextPtr ctxt,
359 #ifdef LIBXML_DEBUG_ENABLED
360 XMLPUBFUN void XMLCALL
361 xmlXPathDebugDumpObject (FILE *output,
362 xmlXPathObjectPtr cur,
364 XMLPUBFUN void XMLCALL
365 xmlXPathDebugDumpCompExpr(FILE *output,
366 xmlXPathCompExprPtr comp,
372 XMLPUBFUN int XMLCALL
373 xmlXPathNodeSetContains (xmlNodeSetPtr cur,
375 XMLPUBFUN xmlNodeSetPtr XMLCALL
376 xmlXPathDifference (xmlNodeSetPtr nodes1,
377 xmlNodeSetPtr nodes2);
378 XMLPUBFUN xmlNodeSetPtr XMLCALL
379 xmlXPathIntersection (xmlNodeSetPtr nodes1,
380 xmlNodeSetPtr nodes2);
382 XMLPUBFUN xmlNodeSetPtr XMLCALL
383 xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
384 XMLPUBFUN xmlNodeSetPtr XMLCALL
385 xmlXPathDistinct (xmlNodeSetPtr nodes);
387 XMLPUBFUN int XMLCALL
388 xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
389 xmlNodeSetPtr nodes2);
391 XMLPUBFUN xmlNodeSetPtr XMLCALL
392 xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
394 XMLPUBFUN xmlNodeSetPtr XMLCALL
395 xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
396 xmlNodeSetPtr nodes2);
397 XMLPUBFUN xmlNodeSetPtr XMLCALL
398 xmlXPathNodeLeading (xmlNodeSetPtr nodes,
400 XMLPUBFUN xmlNodeSetPtr XMLCALL
401 xmlXPathLeading (xmlNodeSetPtr nodes1,
402 xmlNodeSetPtr nodes2);
404 XMLPUBFUN xmlNodeSetPtr XMLCALL
405 xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
407 XMLPUBFUN xmlNodeSetPtr XMLCALL
408 xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
409 xmlNodeSetPtr nodes2);
410 XMLPUBFUN xmlNodeSetPtr XMLCALL
411 xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
413 XMLPUBFUN xmlNodeSetPtr XMLCALL
414 xmlXPathTrailing (xmlNodeSetPtr nodes1,
415 xmlNodeSetPtr nodes2);
419 * Extending a context.
422 XMLPUBFUN int XMLCALL
423 xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
424 const xmlChar *prefix,
425 const xmlChar *ns_uri);
426 XMLPUBFUN const xmlChar * XMLCALL
427 xmlXPathNsLookup (xmlXPathContextPtr ctxt,
428 const xmlChar *prefix);
429 XMLPUBFUN void XMLCALL
430 xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
432 XMLPUBFUN int XMLCALL
433 xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
436 XMLPUBFUN int XMLCALL
437 xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
439 const xmlChar *ns_uri,
441 XMLPUBFUN int XMLCALL
442 xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
444 xmlXPathObjectPtr value);
445 XMLPUBFUN int XMLCALL
446 xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
448 const xmlChar *ns_uri,
449 xmlXPathObjectPtr value);
450 XMLPUBFUN xmlXPathFunction XMLCALL
451 xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
452 const xmlChar *name);
453 XMLPUBFUN xmlXPathFunction XMLCALL
454 xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
456 const xmlChar *ns_uri);
457 XMLPUBFUN void XMLCALL
458 xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
459 XMLPUBFUN xmlXPathObjectPtr XMLCALL
460 xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
461 const xmlChar *name);
462 XMLPUBFUN xmlXPathObjectPtr XMLCALL
463 xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
465 const xmlChar *ns_uri);
466 XMLPUBFUN void XMLCALL
467 xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
470 * Utilities to extend XPath.
472 XMLPUBFUN xmlXPathParserContextPtr XMLCALL
473 xmlXPathNewParserContext (const xmlChar *str,
474 xmlXPathContextPtr ctxt);
475 XMLPUBFUN void XMLCALL
476 xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
478 /* TODO: remap to xmlXPathValuePop and Push. */
479 XMLPUBFUN xmlXPathObjectPtr XMLCALL
480 valuePop (xmlXPathParserContextPtr ctxt);
481 XMLPUBFUN int XMLCALL
482 valuePush (xmlXPathParserContextPtr ctxt,
483 xmlXPathObjectPtr value);
485 XMLPUBFUN xmlXPathObjectPtr XMLCALL
486 xmlXPathNewString (const xmlChar *val);
487 XMLPUBFUN xmlXPathObjectPtr XMLCALL
488 xmlXPathNewCString (const char *val);
489 XMLPUBFUN xmlXPathObjectPtr XMLCALL
490 xmlXPathWrapString (xmlChar *val);
491 XMLPUBFUN xmlXPathObjectPtr XMLCALL
492 xmlXPathWrapCString (char * val);
493 XMLPUBFUN xmlXPathObjectPtr XMLCALL
494 xmlXPathNewFloat (double val);
495 XMLPUBFUN xmlXPathObjectPtr XMLCALL
496 xmlXPathNewBoolean (int val);
497 XMLPUBFUN xmlXPathObjectPtr XMLCALL
498 xmlXPathNewNodeSet (xmlNodePtr val);
499 XMLPUBFUN xmlXPathObjectPtr XMLCALL
500 xmlXPathNewValueTree (xmlNodePtr val);
501 XMLPUBFUN void XMLCALL
502 xmlXPathNodeSetAdd (xmlNodeSetPtr cur,
504 XMLPUBFUN void XMLCALL
505 xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur,
507 XMLPUBFUN void XMLCALL
508 xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
511 XMLPUBFUN void XMLCALL
512 xmlXPathNodeSetSort (xmlNodeSetPtr set);
514 XMLPUBFUN void XMLCALL
515 xmlXPathRoot (xmlXPathParserContextPtr ctxt);
516 XMLPUBFUN void XMLCALL
517 xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
518 XMLPUBFUN xmlChar * XMLCALL
519 xmlXPathParseName (xmlXPathParserContextPtr ctxt);
520 XMLPUBFUN xmlChar * XMLCALL
521 xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
524 * Existing functions.
526 XMLPUBFUN double XMLCALL
527 xmlXPathStringEvalNumber (const xmlChar *str);
528 XMLPUBFUN int XMLCALL
529 xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
530 xmlXPathObjectPtr res);
531 XMLPUBFUN void XMLCALL
532 xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
533 XMLPUBFUN xmlNodeSetPtr XMLCALL
534 xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
536 XMLPUBFUN void XMLCALL
537 xmlXPathNodeSetDel (xmlNodeSetPtr cur,
539 XMLPUBFUN void XMLCALL
540 xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
542 XMLPUBFUN xmlXPathObjectPtr XMLCALL
543 xmlXPathNewNodeSetList (xmlNodeSetPtr val);
544 XMLPUBFUN xmlXPathObjectPtr XMLCALL
545 xmlXPathWrapNodeSet (xmlNodeSetPtr val);
546 XMLPUBFUN xmlXPathObjectPtr XMLCALL
547 xmlXPathWrapExternal (void *val);
549 XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
550 XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
551 XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
552 XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
553 XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
554 XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
555 XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
556 XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
557 XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
559 XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
562 * Some of the axis navigation routines.
564 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
566 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
568 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
570 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
572 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
574 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
576 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
578 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
580 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
582 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
584 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
586 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
588 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
591 * The official core of XPath functions.
593 XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
594 XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
595 XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
596 XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
597 XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
598 XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
599 XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
600 XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
601 XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
602 XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
603 XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
604 XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
605 XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
606 XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
607 XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
608 XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
609 XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
610 XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
611 XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
612 XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
613 XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
614 XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
615 XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
616 XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
617 XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
618 XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
621 * Really internal functions
623 XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
629 #endif /* LIBXML_XPATH_ENABLED */
630 #endif /* ! __XML_XPATH_INTERNALS_H__ */