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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>