Imported Upstream version 0.18.1.1
[platform/upstream/gettext.git] / gnulib-local / lib / libxml / xpathInternals.in.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
301 /**
302  * CAST_TO_STRING:
303  *
304  * Macro to try to cast the value on the top of the XPath stack to a string.
305  */
306 #define CAST_TO_STRING                                                  \
307     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))   \
308         xmlXPathStringFunction(ctxt, 1);
309
310 /**
311  * CAST_TO_NUMBER:
312  *
313  * Macro to try to cast the value on the top of the XPath stack to a number.
314  */
315 #define CAST_TO_NUMBER                                                  \
316     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))   \
317         xmlXPathNumberFunction(ctxt, 1);
318
319 /**
320  * CAST_TO_BOOLEAN:
321  *
322  * Macro to try to cast the value on the top of the XPath stack to a boolean.
323  */
324 #define CAST_TO_BOOLEAN                                                 \
325     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))  \
326         xmlXPathBooleanFunction(ctxt, 1);
327
328 /*
329  * Variable Lookup forwarding.
330  */
331
332 XMLPUBFUN void XMLCALL  
333         xmlXPathRegisterVariableLookup  (xmlXPathContextPtr ctxt,
334                                          xmlXPathVariableLookupFunc f,
335                                          void *data);
336
337 /*
338  * Function Lookup forwarding.
339  */
340
341 XMLPUBFUN void XMLCALL  
342             xmlXPathRegisterFuncLookup  (xmlXPathContextPtr ctxt,
343                                          xmlXPathFuncLookupFunc f,
344                                          void *funcCtxt);
345
346 /*
347  * Error reporting.
348  */
349 XMLPUBFUN void XMLCALL          
350                 xmlXPatherror   (xmlXPathParserContextPtr ctxt,
351                                  const char *file,
352                                  int line,
353                                  int no);
354
355 XMLPUBFUN void XMLCALL
356                 xmlXPathErr     (xmlXPathParserContextPtr ctxt,
357                                  int error);
358
359 #ifdef LIBXML_DEBUG_ENABLED
360 XMLPUBFUN void XMLCALL          
361                 xmlXPathDebugDumpObject (FILE *output,
362                                          xmlXPathObjectPtr cur,
363                                          int depth);
364 XMLPUBFUN void XMLCALL          
365             xmlXPathDebugDumpCompExpr(FILE *output,
366                                          xmlXPathCompExprPtr comp,
367                                          int depth);
368 #endif
369 /**
370  * NodeSet handling.
371  */
372 XMLPUBFUN int XMLCALL           
373                 xmlXPathNodeSetContains         (xmlNodeSetPtr cur,
374                                                  xmlNodePtr val);
375 XMLPUBFUN xmlNodeSetPtr XMLCALL 
376                 xmlXPathDifference              (xmlNodeSetPtr nodes1,
377                                                  xmlNodeSetPtr nodes2);
378 XMLPUBFUN xmlNodeSetPtr XMLCALL 
379                 xmlXPathIntersection            (xmlNodeSetPtr nodes1,
380                                                  xmlNodeSetPtr nodes2);
381
382 XMLPUBFUN xmlNodeSetPtr XMLCALL 
383                 xmlXPathDistinctSorted          (xmlNodeSetPtr nodes);
384 XMLPUBFUN xmlNodeSetPtr XMLCALL 
385                 xmlXPathDistinct                (xmlNodeSetPtr nodes);
386
387 XMLPUBFUN int XMLCALL           
388                 xmlXPathHasSameNodes            (xmlNodeSetPtr nodes1,
389                                                  xmlNodeSetPtr nodes2);
390
391 XMLPUBFUN xmlNodeSetPtr XMLCALL 
392                 xmlXPathNodeLeadingSorted       (xmlNodeSetPtr nodes,
393                                                  xmlNodePtr node);
394 XMLPUBFUN xmlNodeSetPtr XMLCALL 
395                 xmlXPathLeadingSorted           (xmlNodeSetPtr nodes1,
396                                                  xmlNodeSetPtr nodes2);
397 XMLPUBFUN xmlNodeSetPtr XMLCALL 
398                 xmlXPathNodeLeading             (xmlNodeSetPtr nodes,
399                                                  xmlNodePtr node);
400 XMLPUBFUN xmlNodeSetPtr XMLCALL 
401                 xmlXPathLeading                 (xmlNodeSetPtr nodes1,
402                                                  xmlNodeSetPtr nodes2);
403
404 XMLPUBFUN xmlNodeSetPtr XMLCALL 
405                 xmlXPathNodeTrailingSorted      (xmlNodeSetPtr nodes,
406                                                  xmlNodePtr node);
407 XMLPUBFUN xmlNodeSetPtr XMLCALL 
408                 xmlXPathTrailingSorted          (xmlNodeSetPtr nodes1,
409                                                  xmlNodeSetPtr nodes2);
410 XMLPUBFUN xmlNodeSetPtr XMLCALL 
411                 xmlXPathNodeTrailing            (xmlNodeSetPtr nodes,
412                                                  xmlNodePtr node);
413 XMLPUBFUN xmlNodeSetPtr XMLCALL 
414                 xmlXPathTrailing                (xmlNodeSetPtr nodes1,
415                                                  xmlNodeSetPtr nodes2);
416
417
418 /**
419  * Extending a context.
420  */
421
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);
431
432 XMLPUBFUN int XMLCALL              
433                 xmlXPathRegisterFunc            (xmlXPathContextPtr ctxt,
434                                                  const xmlChar *name,
435                                                  xmlXPathFunction f);
436 XMLPUBFUN int XMLCALL              
437                 xmlXPathRegisterFuncNS          (xmlXPathContextPtr ctxt,
438                                                  const xmlChar *name,
439                                                  const xmlChar *ns_uri,
440                                                  xmlXPathFunction f);
441 XMLPUBFUN int XMLCALL              
442                 xmlXPathRegisterVariable        (xmlXPathContextPtr ctxt,
443                                                  const xmlChar *name,
444                                                  xmlXPathObjectPtr value);
445 XMLPUBFUN int XMLCALL              
446                 xmlXPathRegisterVariableNS      (xmlXPathContextPtr ctxt,
447                                                  const xmlChar *name,
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,
455                                                  const xmlChar *name,
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,
464                                                  const xmlChar *name,
465                                                  const xmlChar *ns_uri);
466 XMLPUBFUN void XMLCALL             
467                 xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
468
469 /**
470  * Utilities to extend XPath.
471  */
472 XMLPUBFUN xmlXPathParserContextPtr XMLCALL
473                   xmlXPathNewParserContext      (const xmlChar *str,
474                                                  xmlXPathContextPtr ctxt);
475 XMLPUBFUN void XMLCALL            
476                 xmlXPathFreeParserContext       (xmlXPathParserContextPtr ctxt);
477
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);
484
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,
503                                                  xmlNodePtr val);
504 XMLPUBFUN void XMLCALL              
505                 xmlXPathNodeSetAddUnique        (xmlNodeSetPtr cur,
506                                                  xmlNodePtr val);
507 XMLPUBFUN void XMLCALL            
508                 xmlXPathNodeSetAddNs            (xmlNodeSetPtr cur, 
509                                                  xmlNodePtr node, 
510                                                  xmlNsPtr ns);
511 XMLPUBFUN void XMLCALL              
512                 xmlXPathNodeSetSort             (xmlNodeSetPtr set);
513
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);
522
523 /*
524  * Existing functions.
525  */
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, 
535                                                  xmlNodeSetPtr val2);
536 XMLPUBFUN void XMLCALL 
537                 xmlXPathNodeSetDel              (xmlNodeSetPtr cur, 
538                                                  xmlNodePtr val);
539 XMLPUBFUN void XMLCALL 
540                 xmlXPathNodeSetRemove           (xmlNodeSetPtr cur, 
541                                                  int val);
542 XMLPUBFUN xmlXPathObjectPtr XMLCALL 
543                 xmlXPathNewNodeSetList          (xmlNodeSetPtr val);
544 XMLPUBFUN xmlXPathObjectPtr XMLCALL 
545                 xmlXPathWrapNodeSet             (xmlNodeSetPtr val);
546 XMLPUBFUN xmlXPathObjectPtr XMLCALL 
547                 xmlXPathWrapExternal            (void *val);
548
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);
558
559 XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
560
561 /*
562  * Some of the axis navigation routines.
563  */
564 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
565                         xmlNodePtr cur);
566 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
567                         xmlNodePtr cur);
568 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
569                         xmlNodePtr cur);
570 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
571                         xmlNodePtr cur);
572 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
573                         xmlNodePtr cur);
574 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
575                         xmlNodePtr cur);
576 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
577                         xmlNodePtr cur);
578 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
579                         xmlNodePtr cur);
580 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
581                         xmlNodePtr cur);
582 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
583                         xmlNodePtr cur);
584 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
585                         xmlNodePtr cur);
586 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
587                         xmlNodePtr cur);
588 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
589                         xmlNodePtr cur);
590 /*
591  * The official core of XPath functions.
592  */
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);
619
620 /**
621  * Really internal functions
622  */
623 XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
624  
625 #ifdef __cplusplus
626 }
627 #endif
628
629 #endif /* LIBXML_XPATH_ENABLED */
630 #endif /* ! __XML_XPATH_INTERNALS_H__ */