xref: /aosp_15_r20/external/libxml2/include/libxml/xpathInternals.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1 /*
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
5  *              XSLT
6  *
7  * Copy: See Copyright for the status of this software.
8  *
9  * Author: Daniel Veillard
10  */
11 
12 #ifndef __XML_XPATH_INTERNALS_H__
13 #define __XML_XPATH_INTERNALS_H__
14 
15 #include <stdio.h>
16 #include <libxml/xmlversion.h>
17 #include <libxml/xpath.h>
18 
19 #ifdef LIBXML_XPATH_ENABLED
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 /************************************************************************
26  *									*
27  *			Helpers						*
28  *									*
29  ************************************************************************/
30 
31 /*
32  * Many of these macros may later turn into functions. They
33  * shouldn't be used in #ifdef's preprocessor instructions.
34  */
35 /**
36  * xmlXPathSetError:
37  * @ctxt:  an XPath parser context
38  * @err:  an xmlXPathError code
39  *
40  * Raises an error.
41  */
42 #define xmlXPathSetError(ctxt, err)					\
43     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));			\
44       if ((ctxt) != NULL) (ctxt)->error = (err); }
45 
46 /**
47  * xmlXPathSetArityError:
48  * @ctxt:  an XPath parser context
49  *
50  * Raises an XPATH_INVALID_ARITY error.
51  */
52 #define xmlXPathSetArityError(ctxt)					\
53     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
54 
55 /**
56  * xmlXPathSetTypeError:
57  * @ctxt:  an XPath parser context
58  *
59  * Raises an XPATH_INVALID_TYPE error.
60  */
61 #define xmlXPathSetTypeError(ctxt)					\
62     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
63 
64 /**
65  * xmlXPathGetError:
66  * @ctxt:  an XPath parser context
67  *
68  * Get the error code of an XPath context.
69  *
70  * Returns the context error.
71  */
72 #define xmlXPathGetError(ctxt)	  ((ctxt)->error)
73 
74 /**
75  * xmlXPathCheckError:
76  * @ctxt:  an XPath parser context
77  *
78  * Check if an XPath error was raised.
79  *
80  * Returns true if an error has been raised, false otherwise.
81  */
82 #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
83 
84 /**
85  * xmlXPathGetDocument:
86  * @ctxt:  an XPath parser context
87  *
88  * Get the document of an XPath context.
89  *
90  * Returns the context document.
91  */
92 #define xmlXPathGetDocument(ctxt)	((ctxt)->context->doc)
93 
94 /**
95  * xmlXPathGetContextNode:
96  * @ctxt: an XPath parser context
97  *
98  * Get the context node of an XPath context.
99  *
100  * Returns the context node.
101  */
102 #define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)
103 
104 XMLPUBFUN int
105 		xmlXPathPopBoolean	(xmlXPathParserContextPtr ctxt);
106 XMLPUBFUN double
107 		xmlXPathPopNumber	(xmlXPathParserContextPtr ctxt);
108 XMLPUBFUN xmlChar *
109 		xmlXPathPopString	(xmlXPathParserContextPtr ctxt);
110 XMLPUBFUN xmlNodeSetPtr
111 		xmlXPathPopNodeSet	(xmlXPathParserContextPtr ctxt);
112 XMLPUBFUN void *
113 		xmlXPathPopExternal	(xmlXPathParserContextPtr ctxt);
114 
115 /**
116  * xmlXPathReturnBoolean:
117  * @ctxt:  an XPath parser context
118  * @val:  a boolean
119  *
120  * Pushes the boolean @val on the context stack.
121  */
122 #define xmlXPathReturnBoolean(ctxt, val)				\
123     valuePush((ctxt), xmlXPathNewBoolean(val))
124 
125 /**
126  * xmlXPathReturnTrue:
127  * @ctxt:  an XPath parser context
128  *
129  * Pushes true on the context stack.
130  */
131 #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
132 
133 /**
134  * xmlXPathReturnFalse:
135  * @ctxt:  an XPath parser context
136  *
137  * Pushes false on the context stack.
138  */
139 #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
140 
141 /**
142  * xmlXPathReturnNumber:
143  * @ctxt:  an XPath parser context
144  * @val:  a double
145  *
146  * Pushes the double @val on the context stack.
147  */
148 #define xmlXPathReturnNumber(ctxt, val)					\
149     valuePush((ctxt), xmlXPathNewFloat(val))
150 
151 /**
152  * xmlXPathReturnString:
153  * @ctxt:  an XPath parser context
154  * @str:  a string
155  *
156  * Pushes the string @str on the context stack.
157  */
158 #define xmlXPathReturnString(ctxt, str)					\
159     valuePush((ctxt), xmlXPathWrapString(str))
160 
161 /**
162  * xmlXPathReturnEmptyString:
163  * @ctxt:  an XPath parser context
164  *
165  * Pushes an empty string on the stack.
166  */
167 #define xmlXPathReturnEmptyString(ctxt)					\
168     valuePush((ctxt), xmlXPathNewCString(""))
169 
170 /**
171  * xmlXPathReturnNodeSet:
172  * @ctxt:  an XPath parser context
173  * @ns:  a node-set
174  *
175  * Pushes the node-set @ns on the context stack.
176  */
177 #define xmlXPathReturnNodeSet(ctxt, ns)					\
178     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
179 
180 /**
181  * xmlXPathReturnEmptyNodeSet:
182  * @ctxt:  an XPath parser context
183  *
184  * Pushes an empty node-set on the context stack.
185  */
186 #define xmlXPathReturnEmptyNodeSet(ctxt)				\
187     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
188 
189 /**
190  * xmlXPathReturnExternal:
191  * @ctxt:  an XPath parser context
192  * @val:  user data
193  *
194  * Pushes user data on the context stack.
195  */
196 #define xmlXPathReturnExternal(ctxt, val)				\
197     valuePush((ctxt), xmlXPathWrapExternal(val))
198 
199 /**
200  * xmlXPathStackIsNodeSet:
201  * @ctxt: an XPath parser context
202  *
203  * Check if the current value on the XPath stack is a node set or
204  * an XSLT value tree.
205  *
206  * Returns true if the current object on the stack is a node-set.
207  */
208 #define xmlXPathStackIsNodeSet(ctxt)					\
209     (((ctxt)->value != NULL)						\
210      && (((ctxt)->value->type == XPATH_NODESET)				\
211          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
212 
213 /**
214  * xmlXPathStackIsExternal:
215  * @ctxt: an XPath parser context
216  *
217  * Checks if the current value on the XPath stack is an external
218  * object.
219  *
220  * Returns true if the current object on the stack is an external
221  * object.
222  */
223 #define xmlXPathStackIsExternal(ctxt)					\
224 	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
225 
226 /**
227  * xmlXPathEmptyNodeSet:
228  * @ns:  a node-set
229  *
230  * Empties a node-set.
231  */
232 #define xmlXPathEmptyNodeSet(ns)					\
233     { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
234 
235 /**
236  * CHECK_ERROR:
237  *
238  * Macro to return from the function if an XPath error was detected.
239  */
240 #define CHECK_ERROR							\
241     if (ctxt->error != XPATH_EXPRESSION_OK) return
242 
243 /**
244  * CHECK_ERROR0:
245  *
246  * Macro to return 0 from the function if an XPath error was detected.
247  */
248 #define CHECK_ERROR0							\
249     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
250 
251 /**
252  * XP_ERROR:
253  * @X:  the error code
254  *
255  * Macro to raise an XPath error and return.
256  */
257 #define XP_ERROR(X)							\
258     { xmlXPathErr(ctxt, X); return; }
259 
260 /**
261  * XP_ERROR0:
262  * @X:  the error code
263  *
264  * Macro to raise an XPath error and return 0.
265  */
266 #define XP_ERROR0(X)							\
267     { xmlXPathErr(ctxt, X); return(0); }
268 
269 /**
270  * CHECK_TYPE:
271  * @typeval:  the XPath type
272  *
273  * Macro to check that the value on top of the XPath stack is of a given
274  * type.
275  */
276 #define CHECK_TYPE(typeval)						\
277     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
278         XP_ERROR(XPATH_INVALID_TYPE)
279 
280 /**
281  * CHECK_TYPE0:
282  * @typeval:  the XPath type
283  *
284  * Macro to check that the value on top of the XPath stack is of a given
285  * type. Return(0) in case of failure
286  */
287 #define CHECK_TYPE0(typeval)						\
288     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
289         XP_ERROR0(XPATH_INVALID_TYPE)
290 
291 /**
292  * CHECK_ARITY:
293  * @x:  the number of expected args
294  *
295  * Macro to check that the number of args passed to an XPath function matches.
296  */
297 #define CHECK_ARITY(x)							\
298     if (ctxt == NULL) return;						\
299     if (nargs != (x))							\
300         XP_ERROR(XPATH_INVALID_ARITY);					\
301     if (ctxt->valueNr < (x))						\
302         XP_ERROR(XPATH_STACK_ERROR);
303 
304 /**
305  * CAST_TO_STRING:
306  *
307  * Macro to try to cast the value on the top of the XPath stack to a string.
308  */
309 #define CAST_TO_STRING							\
310     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\
311         xmlXPathStringFunction(ctxt, 1);
312 
313 /**
314  * CAST_TO_NUMBER:
315  *
316  * Macro to try to cast the value on the top of the XPath stack to a number.
317  */
318 #define CAST_TO_NUMBER							\
319     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\
320         xmlXPathNumberFunction(ctxt, 1);
321 
322 /**
323  * CAST_TO_BOOLEAN:
324  *
325  * Macro to try to cast the value on the top of the XPath stack to a boolean.
326  */
327 #define CAST_TO_BOOLEAN							\
328     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\
329         xmlXPathBooleanFunction(ctxt, 1);
330 
331 /*
332  * Variable Lookup forwarding.
333  */
334 
335 XMLPUBFUN void
336 	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,
337 					 xmlXPathVariableLookupFunc f,
338 					 void *data);
339 
340 /*
341  * Function Lookup forwarding.
342  */
343 
344 XMLPUBFUN void
345 	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,
346 					 xmlXPathFuncLookupFunc f,
347 					 void *funcCtxt);
348 
349 /*
350  * Error reporting.
351  */
352 XMLPUBFUN void
353 		xmlXPatherror	(xmlXPathParserContextPtr ctxt,
354 				 const char *file,
355 				 int line,
356 				 int no);
357 
358 XMLPUBFUN void
359 		xmlXPathErr	(xmlXPathParserContextPtr ctxt,
360 				 int error);
361 
362 #ifdef LIBXML_DEBUG_ENABLED
363 XMLPUBFUN void
364 		xmlXPathDebugDumpObject	(FILE *output,
365 					 xmlXPathObjectPtr cur,
366 					 int depth);
367 XMLPUBFUN void
368 	    xmlXPathDebugDumpCompExpr(FILE *output,
369 					 xmlXPathCompExprPtr comp,
370 					 int depth);
371 #endif
372 /**
373  * NodeSet handling.
374  */
375 XMLPUBFUN int
376 		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,
377 						 xmlNodePtr val);
378 XMLPUBFUN xmlNodeSetPtr
379 		xmlXPathDifference		(xmlNodeSetPtr nodes1,
380 						 xmlNodeSetPtr nodes2);
381 XMLPUBFUN xmlNodeSetPtr
382 		xmlXPathIntersection		(xmlNodeSetPtr nodes1,
383 						 xmlNodeSetPtr nodes2);
384 
385 XMLPUBFUN xmlNodeSetPtr
386 		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);
387 XMLPUBFUN xmlNodeSetPtr
388 		xmlXPathDistinct		(xmlNodeSetPtr nodes);
389 
390 XMLPUBFUN int
391 		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,
392 						 xmlNodeSetPtr nodes2);
393 
394 XMLPUBFUN xmlNodeSetPtr
395 		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,
396 						 xmlNodePtr node);
397 XMLPUBFUN xmlNodeSetPtr
398 		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,
399 						 xmlNodeSetPtr nodes2);
400 XMLPUBFUN xmlNodeSetPtr
401 		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,
402 						 xmlNodePtr node);
403 XMLPUBFUN xmlNodeSetPtr
404 		xmlXPathLeading			(xmlNodeSetPtr nodes1,
405 						 xmlNodeSetPtr nodes2);
406 
407 XMLPUBFUN xmlNodeSetPtr
408 		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,
409 						 xmlNodePtr node);
410 XMLPUBFUN xmlNodeSetPtr
411 		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,
412 						 xmlNodeSetPtr nodes2);
413 XMLPUBFUN xmlNodeSetPtr
414 		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,
415 						 xmlNodePtr node);
416 XMLPUBFUN xmlNodeSetPtr
417 		xmlXPathTrailing		(xmlNodeSetPtr nodes1,
418 						 xmlNodeSetPtr nodes2);
419 
420 
421 /**
422  * Extending a context.
423  */
424 
425 XMLPUBFUN int
426 		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,
427 						 const xmlChar *prefix,
428 						 const xmlChar *ns_uri);
429 XMLPUBFUN const xmlChar *
430 		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,
431 						 const xmlChar *prefix);
432 XMLPUBFUN void
433 		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);
434 
435 XMLPUBFUN int
436 		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,
437 						 const xmlChar *name,
438 						 xmlXPathFunction f);
439 XMLPUBFUN int
440 		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,
441 						 const xmlChar *name,
442 						 const xmlChar *ns_uri,
443 						 xmlXPathFunction f);
444 XMLPUBFUN int
445 		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,
446 						 const xmlChar *name,
447 						 xmlXPathObjectPtr value);
448 XMLPUBFUN int
449 		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,
450 						 const xmlChar *name,
451 						 const xmlChar *ns_uri,
452 						 xmlXPathObjectPtr value);
453 XMLPUBFUN xmlXPathFunction
454 		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,
455 						 const xmlChar *name);
456 XMLPUBFUN xmlXPathFunction
457 		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,
458 						 const xmlChar *name,
459 						 const xmlChar *ns_uri);
460 XMLPUBFUN void
461 		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);
462 XMLPUBFUN xmlXPathObjectPtr
463 		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,
464 						 const xmlChar *name);
465 XMLPUBFUN xmlXPathObjectPtr
466 		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,
467 						 const xmlChar *name,
468 						 const xmlChar *ns_uri);
469 XMLPUBFUN void
470 		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
471 
472 /**
473  * Utilities to extend XPath.
474  */
475 XMLPUBFUN xmlXPathParserContextPtr
476 		  xmlXPathNewParserContext	(const xmlChar *str,
477 						 xmlXPathContextPtr ctxt);
478 XMLPUBFUN void
479 		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);
480 
481 /* TODO: remap to xmlXPathValuePop and Push. */
482 XMLPUBFUN xmlXPathObjectPtr
483 		valuePop			(xmlXPathParserContextPtr ctxt);
484 XMLPUBFUN int
485 		valuePush			(xmlXPathParserContextPtr ctxt,
486 						 xmlXPathObjectPtr value);
487 
488 XMLPUBFUN xmlXPathObjectPtr
489 		xmlXPathNewString		(const xmlChar *val);
490 XMLPUBFUN xmlXPathObjectPtr
491 		xmlXPathNewCString		(const char *val);
492 XMLPUBFUN xmlXPathObjectPtr
493 		xmlXPathWrapString		(xmlChar *val);
494 XMLPUBFUN xmlXPathObjectPtr
495 		xmlXPathWrapCString		(char * val);
496 XMLPUBFUN xmlXPathObjectPtr
497 		xmlXPathNewFloat		(double val);
498 XMLPUBFUN xmlXPathObjectPtr
499 		xmlXPathNewBoolean		(int val);
500 XMLPUBFUN xmlXPathObjectPtr
501 		xmlXPathNewNodeSet		(xmlNodePtr val);
502 XMLPUBFUN xmlXPathObjectPtr
503 		xmlXPathNewValueTree		(xmlNodePtr val);
504 XMLPUBFUN int
505 		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,
506 						 xmlNodePtr val);
507 XMLPUBFUN int
508 		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,
509 						 xmlNodePtr val);
510 XMLPUBFUN int
511 		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur,
512 						 xmlNodePtr node,
513 						 xmlNsPtr ns);
514 XMLPUBFUN void
515 		xmlXPathNodeSetSort		(xmlNodeSetPtr set);
516 
517 XMLPUBFUN void
518 		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);
519 XML_DEPRECATED
520 XMLPUBFUN void
521 		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);
522 XMLPUBFUN xmlChar *
523 		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);
524 XMLPUBFUN xmlChar *
525 		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);
526 
527 /*
528  * Existing functions.
529  */
530 XMLPUBFUN double
531 		xmlXPathStringEvalNumber	(const xmlChar *str);
532 XMLPUBFUN int
533 		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
534 						 xmlXPathObjectPtr res);
535 XMLPUBFUN void
536 		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);
537 XMLPUBFUN xmlNodeSetPtr
538 		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1,
539 						 xmlNodeSetPtr val2);
540 XMLPUBFUN void
541 		xmlXPathNodeSetDel		(xmlNodeSetPtr cur,
542 						 xmlNodePtr val);
543 XMLPUBFUN void
544 		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur,
545 						 int val);
546 XMLPUBFUN xmlXPathObjectPtr
547 		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);
548 XMLPUBFUN xmlXPathObjectPtr
549 		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);
550 XMLPUBFUN xmlXPathObjectPtr
551 		xmlXPathWrapExternal		(void *val);
552 
553 XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
554 XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
555 XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
556 XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
557 XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
558 XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
559 XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
560 XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
561 XMLPUBFUN void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
562 
563 XMLPUBFUN int xmlXPathIsNodeType(const xmlChar *name);
564 
565 /*
566  * Some of the axis navigation routines.
567  */
568 XMLPUBFUN xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
569 			xmlNodePtr cur);
570 XMLPUBFUN xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
571 			xmlNodePtr cur);
572 XMLPUBFUN xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
573 			xmlNodePtr cur);
574 XMLPUBFUN xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
575 			xmlNodePtr cur);
576 XMLPUBFUN xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
577 			xmlNodePtr cur);
578 XMLPUBFUN xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
579 			xmlNodePtr cur);
580 XMLPUBFUN xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
581 			xmlNodePtr cur);
582 XMLPUBFUN xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
583 			xmlNodePtr cur);
584 XMLPUBFUN xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
585 			xmlNodePtr cur);
586 XMLPUBFUN xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
587 			xmlNodePtr cur);
588 XMLPUBFUN xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
589 			xmlNodePtr cur);
590 XMLPUBFUN xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
591 			xmlNodePtr cur);
592 XMLPUBFUN xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
593 			xmlNodePtr cur);
594 /*
595  * The official core of XPath functions.
596  */
597 XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
598 XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
599 XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
600 XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
601 XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
602 XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
603 XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
604 XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
605 XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
606 XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
607 XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
608 XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
609 XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
610 XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
611 XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
612 XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
613 XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
614 XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
615 XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
616 XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
617 XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
618 XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
619 XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
620 XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
621 XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
622 XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
623 
624 /**
625  * Really internal functions
626  */
627 XMLPUBFUN void xmlXPathNodeSetFreeNs(xmlNsPtr ns);
628 
629 #ifdef __cplusplus
630 }
631 #endif
632 
633 #endif /* LIBXML_XPATH_ENABLED */
634 #endif /* ! __XML_XPATH_INTERNALS_H__ */
635