~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to Externals/LibXML/include/libxml/xpathInternals.h

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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__ */