OSDN Git Service

initial files
[iptd/iPTd_R3.git] / lib / libxml / include / libxml2 / libxml / xpathInternals.h
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 <libxml/xmlversion.h>
16 #include <libxml/xpath.h>
17
18 #ifdef LIBXML_XPATH_ENABLED
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 /************************************************************************
25  *                                                                      *
26  *                      Helpers                                         *
27  *                                                                      *
28  ************************************************************************/
29
30 /*
31  * Many of these macros may later turn into functions. They
32  * shouldn't be used in #ifdef's preprocessor instructions.
33  */
34 /**
35  * xmlXPathSetError:
36  * @ctxt:  an XPath parser context
37  * @err:  an xmlXPathError code
38  *
39  * Raises an error.
40  */
41 #define xmlXPathSetError(ctxt, err)                                     \
42     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));                 \
43       if ((ctxt) != NULL) (ctxt)->error = (err); }
44
45 /**
46  * xmlXPathSetArityError:
47  * @ctxt:  an XPath parser context
48  *
49  * Raises an XPATH_INVALID_ARITY error.
50  */
51 #define xmlXPathSetArityError(ctxt)                                     \
52     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
53
54 /**
55  * xmlXPathSetTypeError:
56  * @ctxt:  an XPath parser context
57  *
58  * Raises an XPATH_INVALID_TYPE error.
59  */
60 #define xmlXPathSetTypeError(ctxt)                                      \
61     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
62
63 /**
64  * xmlXPathGetError:
65  * @ctxt:  an XPath parser context
66  *
67  * Get the error code of an XPath context.
68  *
69  * Returns the context error.
70  */
71 #define xmlXPathGetError(ctxt)    ((ctxt)->error)
72
73 /**
74  * xmlXPathCheckError:
75  * @ctxt:  an XPath parser context
76  *
77  * Check if an XPath error was raised.
78  *
79  * Returns true if an error has been raised, false otherwise.
80  */
81 #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
82
83 /**
84  * xmlXPathGetDocument:
85  * @ctxt:  an XPath parser context
86  *
87  * Get the document of an XPath context.
88  *
89  * Returns the context document.
90  */
91 #define xmlXPathGetDocument(ctxt)       ((ctxt)->context->doc)
92
93 /**
94  * xmlXPathGetContextNode:
95  * @ctxt: an XPath parser context
96  *
97  * Get the context node of an XPath context.
98  *
99  * Returns the context node.
100  */
101 #define xmlXPathGetContextNode(ctxt)    ((ctxt)->context->node)
102
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);
113
114 /**
115  * xmlXPathReturnBoolean:
116  * @ctxt:  an XPath parser context
117  * @val:  a boolean
118  *
119  * Pushes the boolean @val on the context stack.
120  */
121 #define xmlXPathReturnBoolean(ctxt, val)                                \
122     valuePush((ctxt), xmlXPathNewBoolean(val))
123
124 /**
125  * xmlXPathReturnTrue:
126  * @ctxt:  an XPath parser context
127  *
128  * Pushes true on the context stack.
129  */
130 #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
131
132 /**
133  * xmlXPathReturnFalse:
134  * @ctxt:  an XPath parser context
135  *
136  * Pushes false on the context stack.
137  */
138 #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
139
140 /**
141  * xmlXPathReturnNumber:
142  * @ctxt:  an XPath parser context
143  * @val:  a double
144  *
145  * Pushes the double @val on the context stack.
146  */
147 #define xmlXPathReturnNumber(ctxt, val)                                 \
148     valuePush((ctxt), xmlXPathNewFloat(val))
149
150 /**
151  * xmlXPathReturnString:
152  * @ctxt:  an XPath parser context
153  * @str:  a string
154  *
155  * Pushes the string @str on the context stack.
156  */
157 #define xmlXPathReturnString(ctxt, str)                                 \
158     valuePush((ctxt), xmlXPathWrapString(str))
159
160 /**
161  * xmlXPathReturnEmptyString:
162  * @ctxt:  an XPath parser context
163  *
164  * Pushes an empty string on the stack.
165  */
166 #define xmlXPathReturnEmptyString(ctxt)                                 \
167     valuePush((ctxt), xmlXPathNewCString(""))
168
169 /**
170  * xmlXPathReturnNodeSet:
171  * @ctxt:  an XPath parser context
172  * @ns:  a node-set
173  *
174  * Pushes the node-set @ns on the context stack.
175  */
176 #define xmlXPathReturnNodeSet(ctxt, ns)                                 \
177     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
178
179 /**
180  * xmlXPathReturnEmptyNodeSet:
181  * @ctxt:  an XPath parser context
182  *
183  * Pushes an empty node-set on the context stack.
184  */
185 #define xmlXPathReturnEmptyNodeSet(ctxt)                                \
186     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
187
188 /**
189  * xmlXPathReturnExternal:
190  * @ctxt:  an XPath parser context
191  * @val:  user data
192  *
193  * Pushes user data on the context stack.
194  */
195 #define xmlXPathReturnExternal(ctxt, val)                               \
196     valuePush((ctxt), xmlXPathWrapExternal(val))
197
198 /**
199  * xmlXPathStackIsNodeSet:
200  * @ctxt: an XPath parser context
201  *
202  * Check if the current value on the XPath stack is a node set or
203  * an XSLT value tree.
204  *
205  * Returns true if the current object on the stack is a node-set.
206  */
207 #define xmlXPathStackIsNodeSet(ctxt)                                    \
208     (((ctxt)->value != NULL)                                            \
209      && (((ctxt)->value->type == XPATH_NODESET)                         \
210          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
211
212 /**
213  * xmlXPathStackIsExternal:
214  * @ctxt: an XPath parser context
215  *
216  * Checks if the current value on the XPath stack is an external
217  * object.
218  *
219  * Returns true if the current object on the stack is an external
220  * object.
221  */
222 #define xmlXPathStackIsExternal(ctxt)                                   \
223         ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
224
225 /**
226  * xmlXPathEmptyNodeSet:
227  * @ns:  a node-set
228  *
229  * Empties a node-set.
230  */
231 #define xmlXPathEmptyNodeSet(ns)                                        \
232     { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
233
234 /**
235  * CHECK_ERROR:
236  *
237  * Macro to return from the function if an XPath error was detected.
238  */
239 #define CHECK_ERROR                                                     \
240     if (ctxt->error != XPATH_EXPRESSION_OK) return
241
242 /**
243  * CHECK_ERROR0:
244  *
245  * Macro to return 0 from the function if an XPath error was detected.
246  */
247 #define CHECK_ERROR0                                                    \
248     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
249
250 /**
251  * XP_ERROR:
252  * @X:  the error code
253  *
254  * Macro to raise an XPath error and return.
255  */
256 #define XP_ERROR(X)                                                     \
257     { xmlXPathErr(ctxt, X); return; }
258
259 /**
260  * XP_ERROR0:
261  * @X:  the error code
262  *
263  * Macro to raise an XPath error and return 0.
264  */
265 #define XP_ERROR0(X)                                                    \
266     { xmlXPathErr(ctxt, X); return(0); }
267
268 /**
269  * CHECK_TYPE:
270  * @typeval:  the XPath type
271  *
272  * Macro to check that the value on top of the XPath stack is of a given
273  * type.
274  */
275 #define CHECK_TYPE(typeval)                                             \
276     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))        \
277         XP_ERROR(XPATH_INVALID_TYPE)
278
279 /**
280  * CHECK_TYPE0:
281  * @typeval:  the XPath type
282  *
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
285  */
286 #define CHECK_TYPE0(typeval)                                            \
287     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))        \
288         XP_ERROR0(XPATH_INVALID_TYPE)
289
290 /**
291  * CHECK_ARITY:
292  * @x:  the number of expected args
293  *
294  * Macro to check that the number of args passed to an XPath function matches.
295  */
296 #define CHECK_ARITY(x)                                                  \
297     if (ctxt == NULL) return;                                           \
298     if (nargs != (x))                                                   \
299         XP_ERROR(XPATH_INVALID_ARITY);                                  \
300     if (ctxt->valueNr < ctxt->valueFrame + (x))                         \
301         XP_ERROR(XPATH_STACK_ERROR);
302
303 /**
304  * CAST_TO_STRING:
305  *
306  * Macro to try to cast the value on the top of the XPath stack to a string.
307  */
308 #define CAST_TO_STRING                                                  \
309     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))   \
310         xmlXPathStringFunction(ctxt, 1);
311
312 /**
313  * CAST_TO_NUMBER:
314  *
315  * Macro to try to cast the value on the top of the XPath stack to a number.
316  */
317 #define CAST_TO_NUMBER                                                  \
318     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))   \
319         xmlXPathNumberFunction(ctxt, 1);
320
321 /**
322  * CAST_TO_BOOLEAN:
323  *
324  * Macro to try to cast the value on the top of the XPath stack to a boolean.
325  */
326 #define CAST_TO_BOOLEAN                                                 \
327     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))  \
328         xmlXPathBooleanFunction(ctxt, 1);
329
330 /*
331  * Variable Lookup forwarding.
332  */
333
334 XMLPUBFUN void XMLCALL
335         xmlXPathRegisterVariableLookup  (xmlXPathContextPtr ctxt,
336                                          xmlXPathVariableLookupFunc f,
337                                          void *data);
338
339 /*
340  * Function Lookup forwarding.
341  */
342
343 XMLPUBFUN void XMLCALL
344             xmlXPathRegisterFuncLookup  (xmlXPathContextPtr ctxt,
345                                          xmlXPathFuncLookupFunc f,
346                                          void *funcCtxt);
347
348 /*
349  * Error reporting.
350  */
351 XMLPUBFUN void XMLCALL
352                 xmlXPatherror   (xmlXPathParserContextPtr ctxt,
353                                  const char *file,
354                                  int line,
355                                  int no);
356
357 XMLPUBFUN void XMLCALL
358                 xmlXPathErr     (xmlXPathParserContextPtr ctxt,
359                                  int error);
360
361 #ifdef LIBXML_DEBUG_ENABLED
362 XMLPUBFUN void XMLCALL
363                 xmlXPathDebugDumpObject (FILE *output,
364                                          xmlXPathObjectPtr cur,
365                                          int depth);
366 XMLPUBFUN void XMLCALL
367             xmlXPathDebugDumpCompExpr(FILE *output,
368                                          xmlXPathCompExprPtr comp,
369                                          int depth);
370 #endif
371 /**
372  * NodeSet handling.
373  */
374 XMLPUBFUN int XMLCALL
375                 xmlXPathNodeSetContains         (xmlNodeSetPtr cur,
376                                                  xmlNodePtr val);
377 XMLPUBFUN xmlNodeSetPtr XMLCALL
378                 xmlXPathDifference              (xmlNodeSetPtr nodes1,
379                                                  xmlNodeSetPtr nodes2);
380 XMLPUBFUN xmlNodeSetPtr XMLCALL
381                 xmlXPathIntersection            (xmlNodeSetPtr nodes1,
382                                                  xmlNodeSetPtr nodes2);
383
384 XMLPUBFUN xmlNodeSetPtr XMLCALL
385                 xmlXPathDistinctSorted          (xmlNodeSetPtr nodes);
386 XMLPUBFUN xmlNodeSetPtr XMLCALL
387                 xmlXPathDistinct                (xmlNodeSetPtr nodes);
388
389 XMLPUBFUN int XMLCALL
390                 xmlXPathHasSameNodes            (xmlNodeSetPtr nodes1,
391                                                  xmlNodeSetPtr nodes2);
392
393 XMLPUBFUN xmlNodeSetPtr XMLCALL
394                 xmlXPathNodeLeadingSorted       (xmlNodeSetPtr nodes,
395                                                  xmlNodePtr node);
396 XMLPUBFUN xmlNodeSetPtr XMLCALL
397                 xmlXPathLeadingSorted           (xmlNodeSetPtr nodes1,
398                                                  xmlNodeSetPtr nodes2);
399 XMLPUBFUN xmlNodeSetPtr XMLCALL
400                 xmlXPathNodeLeading             (xmlNodeSetPtr nodes,
401                                                  xmlNodePtr node);
402 XMLPUBFUN xmlNodeSetPtr XMLCALL
403                 xmlXPathLeading                 (xmlNodeSetPtr nodes1,
404                                                  xmlNodeSetPtr nodes2);
405
406 XMLPUBFUN xmlNodeSetPtr XMLCALL
407                 xmlXPathNodeTrailingSorted      (xmlNodeSetPtr nodes,
408                                                  xmlNodePtr node);
409 XMLPUBFUN xmlNodeSetPtr XMLCALL
410                 xmlXPathTrailingSorted          (xmlNodeSetPtr nodes1,
411                                                  xmlNodeSetPtr nodes2);
412 XMLPUBFUN xmlNodeSetPtr XMLCALL
413                 xmlXPathNodeTrailing            (xmlNodeSetPtr nodes,
414                                                  xmlNodePtr node);
415 XMLPUBFUN xmlNodeSetPtr XMLCALL
416                 xmlXPathTrailing                (xmlNodeSetPtr nodes1,
417                                                  xmlNodeSetPtr nodes2);
418
419
420 /**
421  * Extending a context.
422  */
423
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);
433
434 XMLPUBFUN int XMLCALL
435                 xmlXPathRegisterFunc            (xmlXPathContextPtr ctxt,
436                                                  const xmlChar *name,
437                                                  xmlXPathFunction f);
438 XMLPUBFUN int XMLCALL
439                 xmlXPathRegisterFuncNS          (xmlXPathContextPtr ctxt,
440                                                  const xmlChar *name,
441                                                  const xmlChar *ns_uri,
442                                                  xmlXPathFunction f);
443 XMLPUBFUN int XMLCALL
444                 xmlXPathRegisterVariable        (xmlXPathContextPtr ctxt,
445                                                  const xmlChar *name,
446                                                  xmlXPathObjectPtr value);
447 XMLPUBFUN int XMLCALL
448                 xmlXPathRegisterVariableNS      (xmlXPathContextPtr ctxt,
449                                                  const xmlChar *name,
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,
457                                                  const xmlChar *name,
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,
466                                                  const xmlChar *name,
467                                                  const xmlChar *ns_uri);
468 XMLPUBFUN void XMLCALL
469                 xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
470
471 /**
472  * Utilities to extend XPath.
473  */
474 XMLPUBFUN xmlXPathParserContextPtr XMLCALL
475                   xmlXPathNewParserContext      (const xmlChar *str,
476                                                  xmlXPathContextPtr ctxt);
477 XMLPUBFUN void XMLCALL
478                 xmlXPathFreeParserContext       (xmlXPathParserContextPtr ctxt);
479
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);
486
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,
505                                                  xmlNodePtr val);
506 XMLPUBFUN int XMLCALL
507                 xmlXPathNodeSetAddUnique        (xmlNodeSetPtr cur,
508                                                  xmlNodePtr val);
509 XMLPUBFUN int XMLCALL
510                 xmlXPathNodeSetAddNs            (xmlNodeSetPtr cur,
511                                                  xmlNodePtr node,
512                                                  xmlNsPtr ns);
513 XMLPUBFUN void XMLCALL
514                 xmlXPathNodeSetSort             (xmlNodeSetPtr set);
515
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);
524
525 /*
526  * Existing functions.
527  */
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,
537                                                  xmlNodeSetPtr val2);
538 XMLPUBFUN void XMLCALL
539                 xmlXPathNodeSetDel              (xmlNodeSetPtr cur,
540                                                  xmlNodePtr val);
541 XMLPUBFUN void XMLCALL
542                 xmlXPathNodeSetRemove           (xmlNodeSetPtr cur,
543                                                  int val);
544 XMLPUBFUN xmlXPathObjectPtr XMLCALL
545                 xmlXPathNewNodeSetList          (xmlNodeSetPtr val);
546 XMLPUBFUN xmlXPathObjectPtr XMLCALL
547                 xmlXPathWrapNodeSet             (xmlNodeSetPtr val);
548 XMLPUBFUN xmlXPathObjectPtr XMLCALL
549                 xmlXPathWrapExternal            (void *val);
550
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);
560
561 XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
562
563 /*
564  * Some of the axis navigation routines.
565  */
566 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
567                         xmlNodePtr cur);
568 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
569                         xmlNodePtr cur);
570 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
571                         xmlNodePtr cur);
572 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
573                         xmlNodePtr cur);
574 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
575                         xmlNodePtr cur);
576 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
577                         xmlNodePtr cur);
578 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
579                         xmlNodePtr cur);
580 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
581                         xmlNodePtr cur);
582 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
583                         xmlNodePtr cur);
584 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
585                         xmlNodePtr cur);
586 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
587                         xmlNodePtr cur);
588 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
589                         xmlNodePtr cur);
590 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
591                         xmlNodePtr cur);
592 /*
593  * The official core of XPath functions.
594  */
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);
621
622 /**
623  * Really internal functions
624  */
625 XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
626
627 #ifdef __cplusplus
628 }
629 #endif
630
631 #endif /* LIBXML_XPATH_ENABLED */
632 #endif /* ! __XML_XPATH_INTERNALS_H__ */