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__ */ |
633 | |