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