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); \
300 if (ctxt->valueNr < ctxt->valueFrame + (x)) \
301 XP_ERROR(XPATH_STACK_ERROR);
306 * Macro to try to cast the value on the top of the XPath stack to a string.
308 #define CAST_TO_STRING \
309 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \
310 xmlXPathStringFunction(ctxt, 1);
315 * Macro to try to cast the value on the top of the XPath stack to a number.
317 #define CAST_TO_NUMBER \
318 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \
319 xmlXPathNumberFunction(ctxt, 1);
324 * Macro to try to cast the value on the top of the XPath stack to a boolean.
326 #define CAST_TO_BOOLEAN \
327 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
328 xmlXPathBooleanFunction(ctxt, 1);
331 * Variable Lookup forwarding.
334 XMLPUBFUN void XMLCALL
335 xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
336 xmlXPathVariableLookupFunc f,
340 * Function Lookup forwarding.
343 XMLPUBFUN void XMLCALL
344 xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
345 xmlXPathFuncLookupFunc f,
351 XMLPUBFUN void XMLCALL
352 xmlXPatherror (xmlXPathParserContextPtr ctxt,
357 XMLPUBFUN void XMLCALL
358 xmlXPathErr (xmlXPathParserContextPtr ctxt,
361 #ifdef LIBXML_DEBUG_ENABLED
362 XMLPUBFUN void XMLCALL
363 xmlXPathDebugDumpObject (FILE *output,
364 xmlXPathObjectPtr cur,
366 XMLPUBFUN void XMLCALL
367 xmlXPathDebugDumpCompExpr(FILE *output,
368 xmlXPathCompExprPtr comp,
374 XMLPUBFUN int XMLCALL
375 xmlXPathNodeSetContains (xmlNodeSetPtr cur,
377 XMLPUBFUN xmlNodeSetPtr XMLCALL
378 xmlXPathDifference (xmlNodeSetPtr nodes1,
379 xmlNodeSetPtr nodes2);
380 XMLPUBFUN xmlNodeSetPtr XMLCALL
381 xmlXPathIntersection (xmlNodeSetPtr nodes1,
382 xmlNodeSetPtr nodes2);
384 XMLPUBFUN xmlNodeSetPtr XMLCALL
385 xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
386 XMLPUBFUN xmlNodeSetPtr XMLCALL
387 xmlXPathDistinct (xmlNodeSetPtr nodes);
389 XMLPUBFUN int XMLCALL
390 xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
391 xmlNodeSetPtr nodes2);
393 XMLPUBFUN xmlNodeSetPtr XMLCALL
394 xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
396 XMLPUBFUN xmlNodeSetPtr XMLCALL
397 xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
398 xmlNodeSetPtr nodes2);
399 XMLPUBFUN xmlNodeSetPtr XMLCALL
400 xmlXPathNodeLeading (xmlNodeSetPtr nodes,
402 XMLPUBFUN xmlNodeSetPtr XMLCALL
403 xmlXPathLeading (xmlNodeSetPtr nodes1,
404 xmlNodeSetPtr nodes2);
406 XMLPUBFUN xmlNodeSetPtr XMLCALL
407 xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
409 XMLPUBFUN xmlNodeSetPtr XMLCALL
410 xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
411 xmlNodeSetPtr nodes2);
412 XMLPUBFUN xmlNodeSetPtr XMLCALL
413 xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
415 XMLPUBFUN xmlNodeSetPtr XMLCALL
416 xmlXPathTrailing (xmlNodeSetPtr nodes1,
417 xmlNodeSetPtr nodes2);
421 * Extending a context.
424 XMLPUBFUN int XMLCALL
425 xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
426 const xmlChar *prefix,
427 const xmlChar *ns_uri);
428 XMLPUBFUN const xmlChar * XMLCALL
429 xmlXPathNsLookup (xmlXPathContextPtr ctxt,
430 const xmlChar *prefix);
431 XMLPUBFUN void XMLCALL
432 xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
434 XMLPUBFUN int XMLCALL
435 xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
438 XMLPUBFUN int XMLCALL
439 xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
441 const xmlChar *ns_uri,
443 XMLPUBFUN int XMLCALL
444 xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
446 xmlXPathObjectPtr value);
447 XMLPUBFUN int XMLCALL
448 xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
450 const xmlChar *ns_uri,
451 xmlXPathObjectPtr value);
452 XMLPUBFUN xmlXPathFunction XMLCALL
453 xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
454 const xmlChar *name);
455 XMLPUBFUN xmlXPathFunction XMLCALL
456 xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
458 const xmlChar *ns_uri);
459 XMLPUBFUN void XMLCALL
460 xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
461 XMLPUBFUN xmlXPathObjectPtr XMLCALL
462 xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
463 const xmlChar *name);
464 XMLPUBFUN xmlXPathObjectPtr XMLCALL
465 xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
467 const xmlChar *ns_uri);
468 XMLPUBFUN void XMLCALL
469 xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
472 * Utilities to extend XPath.
474 XMLPUBFUN xmlXPathParserContextPtr XMLCALL
475 xmlXPathNewParserContext (const xmlChar *str,
476 xmlXPathContextPtr ctxt);
477 XMLPUBFUN void XMLCALL
478 xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
480 /* TODO: remap to xmlXPathValuePop and Push. */
481 XMLPUBFUN xmlXPathObjectPtr XMLCALL
482 valuePop (xmlXPathParserContextPtr ctxt);
483 XMLPUBFUN int XMLCALL
484 valuePush (xmlXPathParserContextPtr ctxt,
485 xmlXPathObjectPtr value);
487 XMLPUBFUN xmlXPathObjectPtr XMLCALL
488 xmlXPathNewString (const xmlChar *val);
489 XMLPUBFUN xmlXPathObjectPtr XMLCALL
490 xmlXPathNewCString (const char *val);
491 XMLPUBFUN xmlXPathObjectPtr XMLCALL
492 xmlXPathWrapString (xmlChar *val);
493 XMLPUBFUN xmlXPathObjectPtr XMLCALL
494 xmlXPathWrapCString (char * val);
495 XMLPUBFUN xmlXPathObjectPtr XMLCALL
496 xmlXPathNewFloat (double val);
497 XMLPUBFUN xmlXPathObjectPtr XMLCALL
498 xmlXPathNewBoolean (int val);
499 XMLPUBFUN xmlXPathObjectPtr XMLCALL
500 xmlXPathNewNodeSet (xmlNodePtr val);
501 XMLPUBFUN xmlXPathObjectPtr XMLCALL
502 xmlXPathNewValueTree (xmlNodePtr val);
503 XMLPUBFUN int XMLCALL
504 xmlXPathNodeSetAdd (xmlNodeSetPtr cur,
506 XMLPUBFUN int XMLCALL
507 xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur,
509 XMLPUBFUN int XMLCALL
510 xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
513 XMLPUBFUN void XMLCALL
514 xmlXPathNodeSetSort (xmlNodeSetPtr set);
516 XMLPUBFUN void XMLCALL
517 xmlXPathRoot (xmlXPathParserContextPtr ctxt);
518 XMLPUBFUN void XMLCALL
519 xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
520 XMLPUBFUN xmlChar * XMLCALL
521 xmlXPathParseName (xmlXPathParserContextPtr ctxt);
522 XMLPUBFUN xmlChar * XMLCALL
523 xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
526 * Existing functions.
528 XMLPUBFUN double XMLCALL
529 xmlXPathStringEvalNumber (const xmlChar *str);
530 XMLPUBFUN int XMLCALL
531 xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
532 xmlXPathObjectPtr res);
533 XMLPUBFUN void XMLCALL
534 xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
535 XMLPUBFUN xmlNodeSetPtr XMLCALL
536 xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
538 XMLPUBFUN void XMLCALL
539 xmlXPathNodeSetDel (xmlNodeSetPtr cur,
541 XMLPUBFUN void XMLCALL
542 xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
544 XMLPUBFUN xmlXPathObjectPtr XMLCALL
545 xmlXPathNewNodeSetList (xmlNodeSetPtr val);
546 XMLPUBFUN xmlXPathObjectPtr XMLCALL
547 xmlXPathWrapNodeSet (xmlNodeSetPtr val);
548 XMLPUBFUN xmlXPathObjectPtr XMLCALL
549 xmlXPathWrapExternal (void *val);
551 XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
552 XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
553 XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
554 XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
555 XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
556 XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
557 XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
558 XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
559 XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
561 XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
564 * Some of the axis navigation routines.
566 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
568 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
570 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
572 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
574 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
576 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
578 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
580 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
582 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
584 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
586 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
588 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
590 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
593 * The official core of XPath functions.
595 XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
596 XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
597 XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
598 XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
599 XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
600 XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
601 XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
602 XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
603 XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
604 XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
605 XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
606 XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
607 XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
608 XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
609 XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
610 XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
611 XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
612 XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
613 XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
614 XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
615 XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
616 XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
617 XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
618 XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
619 XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
620 XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
623 * Really internal functions
625 XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
631 #endif /* LIBXML_XPATH_ENABLED */
632 #endif /* ! __XML_XPATH_INTERNALS_H__ */