xref: /aosp_15_r20/external/libxml2/include/libxml/xpathInternals.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /*
2*7c568831SAndroid Build Coastguard Worker  * Summary: internal interfaces for XML Path Language implementation
3*7c568831SAndroid Build Coastguard Worker  * Description: internal interfaces for XML Path Language implementation
4*7c568831SAndroid Build Coastguard Worker  *              used to build new modules on top of XPath like XPointer and
5*7c568831SAndroid Build Coastguard Worker  *              XSLT
6*7c568831SAndroid Build Coastguard Worker  *
7*7c568831SAndroid Build Coastguard Worker  * Copy: See Copyright for the status of this software.
8*7c568831SAndroid Build Coastguard Worker  *
9*7c568831SAndroid Build Coastguard Worker  * Author: Daniel Veillard
10*7c568831SAndroid Build Coastguard Worker  */
11*7c568831SAndroid Build Coastguard Worker 
12*7c568831SAndroid Build Coastguard Worker #ifndef __XML_XPATH_INTERNALS_H__
13*7c568831SAndroid Build Coastguard Worker #define __XML_XPATH_INTERNALS_H__
14*7c568831SAndroid Build Coastguard Worker 
15*7c568831SAndroid Build Coastguard Worker #include <stdio.h>
16*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h>
17*7c568831SAndroid Build Coastguard Worker #include <libxml/xpath.h>
18*7c568831SAndroid Build Coastguard Worker 
19*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_XPATH_ENABLED
20*7c568831SAndroid Build Coastguard Worker 
21*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
22*7c568831SAndroid Build Coastguard Worker extern "C" {
23*7c568831SAndroid Build Coastguard Worker #endif
24*7c568831SAndroid Build Coastguard Worker 
25*7c568831SAndroid Build Coastguard Worker /************************************************************************
26*7c568831SAndroid Build Coastguard Worker  *									*
27*7c568831SAndroid Build Coastguard Worker  *			Helpers						*
28*7c568831SAndroid Build Coastguard Worker  *									*
29*7c568831SAndroid Build Coastguard Worker  ************************************************************************/
30*7c568831SAndroid Build Coastguard Worker 
31*7c568831SAndroid Build Coastguard Worker /*
32*7c568831SAndroid Build Coastguard Worker  * Many of these macros may later turn into functions. They
33*7c568831SAndroid Build Coastguard Worker  * shouldn't be used in #ifdef's preprocessor instructions.
34*7c568831SAndroid Build Coastguard Worker  */
35*7c568831SAndroid Build Coastguard Worker /**
36*7c568831SAndroid Build Coastguard Worker  * xmlXPathSetError:
37*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
38*7c568831SAndroid Build Coastguard Worker  * @err:  an xmlXPathError code
39*7c568831SAndroid Build Coastguard Worker  *
40*7c568831SAndroid Build Coastguard Worker  * Raises an error.
41*7c568831SAndroid Build Coastguard Worker  */
42*7c568831SAndroid Build Coastguard Worker #define xmlXPathSetError(ctxt, err)					\
43*7c568831SAndroid Build Coastguard Worker     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));			\
44*7c568831SAndroid Build Coastguard Worker       if ((ctxt) != NULL) (ctxt)->error = (err); }
45*7c568831SAndroid Build Coastguard Worker 
46*7c568831SAndroid Build Coastguard Worker /**
47*7c568831SAndroid Build Coastguard Worker  * xmlXPathSetArityError:
48*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
49*7c568831SAndroid Build Coastguard Worker  *
50*7c568831SAndroid Build Coastguard Worker  * Raises an XPATH_INVALID_ARITY error.
51*7c568831SAndroid Build Coastguard Worker  */
52*7c568831SAndroid Build Coastguard Worker #define xmlXPathSetArityError(ctxt)					\
53*7c568831SAndroid Build Coastguard Worker     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
54*7c568831SAndroid Build Coastguard Worker 
55*7c568831SAndroid Build Coastguard Worker /**
56*7c568831SAndroid Build Coastguard Worker  * xmlXPathSetTypeError:
57*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
58*7c568831SAndroid Build Coastguard Worker  *
59*7c568831SAndroid Build Coastguard Worker  * Raises an XPATH_INVALID_TYPE error.
60*7c568831SAndroid Build Coastguard Worker  */
61*7c568831SAndroid Build Coastguard Worker #define xmlXPathSetTypeError(ctxt)					\
62*7c568831SAndroid Build Coastguard Worker     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
63*7c568831SAndroid Build Coastguard Worker 
64*7c568831SAndroid Build Coastguard Worker /**
65*7c568831SAndroid Build Coastguard Worker  * xmlXPathGetError:
66*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
67*7c568831SAndroid Build Coastguard Worker  *
68*7c568831SAndroid Build Coastguard Worker  * Get the error code of an XPath context.
69*7c568831SAndroid Build Coastguard Worker  *
70*7c568831SAndroid Build Coastguard Worker  * Returns the context error.
71*7c568831SAndroid Build Coastguard Worker  */
72*7c568831SAndroid Build Coastguard Worker #define xmlXPathGetError(ctxt)	  ((ctxt)->error)
73*7c568831SAndroid Build Coastguard Worker 
74*7c568831SAndroid Build Coastguard Worker /**
75*7c568831SAndroid Build Coastguard Worker  * xmlXPathCheckError:
76*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
77*7c568831SAndroid Build Coastguard Worker  *
78*7c568831SAndroid Build Coastguard Worker  * Check if an XPath error was raised.
79*7c568831SAndroid Build Coastguard Worker  *
80*7c568831SAndroid Build Coastguard Worker  * Returns true if an error has been raised, false otherwise.
81*7c568831SAndroid Build Coastguard Worker  */
82*7c568831SAndroid Build Coastguard Worker #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
83*7c568831SAndroid Build Coastguard Worker 
84*7c568831SAndroid Build Coastguard Worker /**
85*7c568831SAndroid Build Coastguard Worker  * xmlXPathGetDocument:
86*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
87*7c568831SAndroid Build Coastguard Worker  *
88*7c568831SAndroid Build Coastguard Worker  * Get the document of an XPath context.
89*7c568831SAndroid Build Coastguard Worker  *
90*7c568831SAndroid Build Coastguard Worker  * Returns the context document.
91*7c568831SAndroid Build Coastguard Worker  */
92*7c568831SAndroid Build Coastguard Worker #define xmlXPathGetDocument(ctxt)	((ctxt)->context->doc)
93*7c568831SAndroid Build Coastguard Worker 
94*7c568831SAndroid Build Coastguard Worker /**
95*7c568831SAndroid Build Coastguard Worker  * xmlXPathGetContextNode:
96*7c568831SAndroid Build Coastguard Worker  * @ctxt: an XPath parser context
97*7c568831SAndroid Build Coastguard Worker  *
98*7c568831SAndroid Build Coastguard Worker  * Get the context node of an XPath context.
99*7c568831SAndroid Build Coastguard Worker  *
100*7c568831SAndroid Build Coastguard Worker  * Returns the context node.
101*7c568831SAndroid Build Coastguard Worker  */
102*7c568831SAndroid Build Coastguard Worker #define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)
103*7c568831SAndroid Build Coastguard Worker 
104*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
105*7c568831SAndroid Build Coastguard Worker 		xmlXPathPopBoolean	(xmlXPathParserContextPtr ctxt);
106*7c568831SAndroid Build Coastguard Worker XMLPUBFUN double
107*7c568831SAndroid Build Coastguard Worker 		xmlXPathPopNumber	(xmlXPathParserContextPtr ctxt);
108*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlChar *
109*7c568831SAndroid Build Coastguard Worker 		xmlXPathPopString	(xmlXPathParserContextPtr ctxt);
110*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
111*7c568831SAndroid Build Coastguard Worker 		xmlXPathPopNodeSet	(xmlXPathParserContextPtr ctxt);
112*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void *
113*7c568831SAndroid Build Coastguard Worker 		xmlXPathPopExternal	(xmlXPathParserContextPtr ctxt);
114*7c568831SAndroid Build Coastguard Worker 
115*7c568831SAndroid Build Coastguard Worker /**
116*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnBoolean:
117*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
118*7c568831SAndroid Build Coastguard Worker  * @val:  a boolean
119*7c568831SAndroid Build Coastguard Worker  *
120*7c568831SAndroid Build Coastguard Worker  * Pushes the boolean @val on the context stack.
121*7c568831SAndroid Build Coastguard Worker  */
122*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnBoolean(ctxt, val)				\
123*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathNewBoolean(val))
124*7c568831SAndroid Build Coastguard Worker 
125*7c568831SAndroid Build Coastguard Worker /**
126*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnTrue:
127*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
128*7c568831SAndroid Build Coastguard Worker  *
129*7c568831SAndroid Build Coastguard Worker  * Pushes true on the context stack.
130*7c568831SAndroid Build Coastguard Worker  */
131*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
132*7c568831SAndroid Build Coastguard Worker 
133*7c568831SAndroid Build Coastguard Worker /**
134*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnFalse:
135*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
136*7c568831SAndroid Build Coastguard Worker  *
137*7c568831SAndroid Build Coastguard Worker  * Pushes false on the context stack.
138*7c568831SAndroid Build Coastguard Worker  */
139*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
140*7c568831SAndroid Build Coastguard Worker 
141*7c568831SAndroid Build Coastguard Worker /**
142*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnNumber:
143*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
144*7c568831SAndroid Build Coastguard Worker  * @val:  a double
145*7c568831SAndroid Build Coastguard Worker  *
146*7c568831SAndroid Build Coastguard Worker  * Pushes the double @val on the context stack.
147*7c568831SAndroid Build Coastguard Worker  */
148*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnNumber(ctxt, val)					\
149*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathNewFloat(val))
150*7c568831SAndroid Build Coastguard Worker 
151*7c568831SAndroid Build Coastguard Worker /**
152*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnString:
153*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
154*7c568831SAndroid Build Coastguard Worker  * @str:  a string
155*7c568831SAndroid Build Coastguard Worker  *
156*7c568831SAndroid Build Coastguard Worker  * Pushes the string @str on the context stack.
157*7c568831SAndroid Build Coastguard Worker  */
158*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnString(ctxt, str)					\
159*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathWrapString(str))
160*7c568831SAndroid Build Coastguard Worker 
161*7c568831SAndroid Build Coastguard Worker /**
162*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnEmptyString:
163*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
164*7c568831SAndroid Build Coastguard Worker  *
165*7c568831SAndroid Build Coastguard Worker  * Pushes an empty string on the stack.
166*7c568831SAndroid Build Coastguard Worker  */
167*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnEmptyString(ctxt)					\
168*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathNewCString(""))
169*7c568831SAndroid Build Coastguard Worker 
170*7c568831SAndroid Build Coastguard Worker /**
171*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnNodeSet:
172*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
173*7c568831SAndroid Build Coastguard Worker  * @ns:  a node-set
174*7c568831SAndroid Build Coastguard Worker  *
175*7c568831SAndroid Build Coastguard Worker  * Pushes the node-set @ns on the context stack.
176*7c568831SAndroid Build Coastguard Worker  */
177*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnNodeSet(ctxt, ns)					\
178*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
179*7c568831SAndroid Build Coastguard Worker 
180*7c568831SAndroid Build Coastguard Worker /**
181*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnEmptyNodeSet:
182*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
183*7c568831SAndroid Build Coastguard Worker  *
184*7c568831SAndroid Build Coastguard Worker  * Pushes an empty node-set on the context stack.
185*7c568831SAndroid Build Coastguard Worker  */
186*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnEmptyNodeSet(ctxt)				\
187*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
188*7c568831SAndroid Build Coastguard Worker 
189*7c568831SAndroid Build Coastguard Worker /**
190*7c568831SAndroid Build Coastguard Worker  * xmlXPathReturnExternal:
191*7c568831SAndroid Build Coastguard Worker  * @ctxt:  an XPath parser context
192*7c568831SAndroid Build Coastguard Worker  * @val:  user data
193*7c568831SAndroid Build Coastguard Worker  *
194*7c568831SAndroid Build Coastguard Worker  * Pushes user data on the context stack.
195*7c568831SAndroid Build Coastguard Worker  */
196*7c568831SAndroid Build Coastguard Worker #define xmlXPathReturnExternal(ctxt, val)				\
197*7c568831SAndroid Build Coastguard Worker     valuePush((ctxt), xmlXPathWrapExternal(val))
198*7c568831SAndroid Build Coastguard Worker 
199*7c568831SAndroid Build Coastguard Worker /**
200*7c568831SAndroid Build Coastguard Worker  * xmlXPathStackIsNodeSet:
201*7c568831SAndroid Build Coastguard Worker  * @ctxt: an XPath parser context
202*7c568831SAndroid Build Coastguard Worker  *
203*7c568831SAndroid Build Coastguard Worker  * Check if the current value on the XPath stack is a node set or
204*7c568831SAndroid Build Coastguard Worker  * an XSLT value tree.
205*7c568831SAndroid Build Coastguard Worker  *
206*7c568831SAndroid Build Coastguard Worker  * Returns true if the current object on the stack is a node-set.
207*7c568831SAndroid Build Coastguard Worker  */
208*7c568831SAndroid Build Coastguard Worker #define xmlXPathStackIsNodeSet(ctxt)					\
209*7c568831SAndroid Build Coastguard Worker     (((ctxt)->value != NULL)						\
210*7c568831SAndroid Build Coastguard Worker      && (((ctxt)->value->type == XPATH_NODESET)				\
211*7c568831SAndroid Build Coastguard Worker          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
212*7c568831SAndroid Build Coastguard Worker 
213*7c568831SAndroid Build Coastguard Worker /**
214*7c568831SAndroid Build Coastguard Worker  * xmlXPathStackIsExternal:
215*7c568831SAndroid Build Coastguard Worker  * @ctxt: an XPath parser context
216*7c568831SAndroid Build Coastguard Worker  *
217*7c568831SAndroid Build Coastguard Worker  * Checks if the current value on the XPath stack is an external
218*7c568831SAndroid Build Coastguard Worker  * object.
219*7c568831SAndroid Build Coastguard Worker  *
220*7c568831SAndroid Build Coastguard Worker  * Returns true if the current object on the stack is an external
221*7c568831SAndroid Build Coastguard Worker  * object.
222*7c568831SAndroid Build Coastguard Worker  */
223*7c568831SAndroid Build Coastguard Worker #define xmlXPathStackIsExternal(ctxt)					\
224*7c568831SAndroid Build Coastguard Worker 	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
225*7c568831SAndroid Build Coastguard Worker 
226*7c568831SAndroid Build Coastguard Worker /**
227*7c568831SAndroid Build Coastguard Worker  * xmlXPathEmptyNodeSet:
228*7c568831SAndroid Build Coastguard Worker  * @ns:  a node-set
229*7c568831SAndroid Build Coastguard Worker  *
230*7c568831SAndroid Build Coastguard Worker  * Empties a node-set.
231*7c568831SAndroid Build Coastguard Worker  */
232*7c568831SAndroid Build Coastguard Worker #define xmlXPathEmptyNodeSet(ns)					\
233*7c568831SAndroid Build Coastguard Worker     { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
234*7c568831SAndroid Build Coastguard Worker 
235*7c568831SAndroid Build Coastguard Worker /**
236*7c568831SAndroid Build Coastguard Worker  * CHECK_ERROR:
237*7c568831SAndroid Build Coastguard Worker  *
238*7c568831SAndroid Build Coastguard Worker  * Macro to return from the function if an XPath error was detected.
239*7c568831SAndroid Build Coastguard Worker  */
240*7c568831SAndroid Build Coastguard Worker #define CHECK_ERROR							\
241*7c568831SAndroid Build Coastguard Worker     if (ctxt->error != XPATH_EXPRESSION_OK) return
242*7c568831SAndroid Build Coastguard Worker 
243*7c568831SAndroid Build Coastguard Worker /**
244*7c568831SAndroid Build Coastguard Worker  * CHECK_ERROR0:
245*7c568831SAndroid Build Coastguard Worker  *
246*7c568831SAndroid Build Coastguard Worker  * Macro to return 0 from the function if an XPath error was detected.
247*7c568831SAndroid Build Coastguard Worker  */
248*7c568831SAndroid Build Coastguard Worker #define CHECK_ERROR0							\
249*7c568831SAndroid Build Coastguard Worker     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
250*7c568831SAndroid Build Coastguard Worker 
251*7c568831SAndroid Build Coastguard Worker /**
252*7c568831SAndroid Build Coastguard Worker  * XP_ERROR:
253*7c568831SAndroid Build Coastguard Worker  * @X:  the error code
254*7c568831SAndroid Build Coastguard Worker  *
255*7c568831SAndroid Build Coastguard Worker  * Macro to raise an XPath error and return.
256*7c568831SAndroid Build Coastguard Worker  */
257*7c568831SAndroid Build Coastguard Worker #define XP_ERROR(X)							\
258*7c568831SAndroid Build Coastguard Worker     { xmlXPathErr(ctxt, X); return; }
259*7c568831SAndroid Build Coastguard Worker 
260*7c568831SAndroid Build Coastguard Worker /**
261*7c568831SAndroid Build Coastguard Worker  * XP_ERROR0:
262*7c568831SAndroid Build Coastguard Worker  * @X:  the error code
263*7c568831SAndroid Build Coastguard Worker  *
264*7c568831SAndroid Build Coastguard Worker  * Macro to raise an XPath error and return 0.
265*7c568831SAndroid Build Coastguard Worker  */
266*7c568831SAndroid Build Coastguard Worker #define XP_ERROR0(X)							\
267*7c568831SAndroid Build Coastguard Worker     { xmlXPathErr(ctxt, X); return(0); }
268*7c568831SAndroid Build Coastguard Worker 
269*7c568831SAndroid Build Coastguard Worker /**
270*7c568831SAndroid Build Coastguard Worker  * CHECK_TYPE:
271*7c568831SAndroid Build Coastguard Worker  * @typeval:  the XPath type
272*7c568831SAndroid Build Coastguard Worker  *
273*7c568831SAndroid Build Coastguard Worker  * Macro to check that the value on top of the XPath stack is of a given
274*7c568831SAndroid Build Coastguard Worker  * type.
275*7c568831SAndroid Build Coastguard Worker  */
276*7c568831SAndroid Build Coastguard Worker #define CHECK_TYPE(typeval)						\
277*7c568831SAndroid Build Coastguard Worker     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
278*7c568831SAndroid Build Coastguard Worker         XP_ERROR(XPATH_INVALID_TYPE)
279*7c568831SAndroid Build Coastguard Worker 
280*7c568831SAndroid Build Coastguard Worker /**
281*7c568831SAndroid Build Coastguard Worker  * CHECK_TYPE0:
282*7c568831SAndroid Build Coastguard Worker  * @typeval:  the XPath type
283*7c568831SAndroid Build Coastguard Worker  *
284*7c568831SAndroid Build Coastguard Worker  * Macro to check that the value on top of the XPath stack is of a given
285*7c568831SAndroid Build Coastguard Worker  * type. Return(0) in case of failure
286*7c568831SAndroid Build Coastguard Worker  */
287*7c568831SAndroid Build Coastguard Worker #define CHECK_TYPE0(typeval)						\
288*7c568831SAndroid Build Coastguard Worker     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
289*7c568831SAndroid Build Coastguard Worker         XP_ERROR0(XPATH_INVALID_TYPE)
290*7c568831SAndroid Build Coastguard Worker 
291*7c568831SAndroid Build Coastguard Worker /**
292*7c568831SAndroid Build Coastguard Worker  * CHECK_ARITY:
293*7c568831SAndroid Build Coastguard Worker  * @x:  the number of expected args
294*7c568831SAndroid Build Coastguard Worker  *
295*7c568831SAndroid Build Coastguard Worker  * Macro to check that the number of args passed to an XPath function matches.
296*7c568831SAndroid Build Coastguard Worker  */
297*7c568831SAndroid Build Coastguard Worker #define CHECK_ARITY(x)							\
298*7c568831SAndroid Build Coastguard Worker     if (ctxt == NULL) return;						\
299*7c568831SAndroid Build Coastguard Worker     if (nargs != (x))							\
300*7c568831SAndroid Build Coastguard Worker         XP_ERROR(XPATH_INVALID_ARITY);					\
301*7c568831SAndroid Build Coastguard Worker     if (ctxt->valueNr < (x))						\
302*7c568831SAndroid Build Coastguard Worker         XP_ERROR(XPATH_STACK_ERROR);
303*7c568831SAndroid Build Coastguard Worker 
304*7c568831SAndroid Build Coastguard Worker /**
305*7c568831SAndroid Build Coastguard Worker  * CAST_TO_STRING:
306*7c568831SAndroid Build Coastguard Worker  *
307*7c568831SAndroid Build Coastguard Worker  * Macro to try to cast the value on the top of the XPath stack to a string.
308*7c568831SAndroid Build Coastguard Worker  */
309*7c568831SAndroid Build Coastguard Worker #define CAST_TO_STRING							\
310*7c568831SAndroid Build Coastguard Worker     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\
311*7c568831SAndroid Build Coastguard Worker         xmlXPathStringFunction(ctxt, 1);
312*7c568831SAndroid Build Coastguard Worker 
313*7c568831SAndroid Build Coastguard Worker /**
314*7c568831SAndroid Build Coastguard Worker  * CAST_TO_NUMBER:
315*7c568831SAndroid Build Coastguard Worker  *
316*7c568831SAndroid Build Coastguard Worker  * Macro to try to cast the value on the top of the XPath stack to a number.
317*7c568831SAndroid Build Coastguard Worker  */
318*7c568831SAndroid Build Coastguard Worker #define CAST_TO_NUMBER							\
319*7c568831SAndroid Build Coastguard Worker     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\
320*7c568831SAndroid Build Coastguard Worker         xmlXPathNumberFunction(ctxt, 1);
321*7c568831SAndroid Build Coastguard Worker 
322*7c568831SAndroid Build Coastguard Worker /**
323*7c568831SAndroid Build Coastguard Worker  * CAST_TO_BOOLEAN:
324*7c568831SAndroid Build Coastguard Worker  *
325*7c568831SAndroid Build Coastguard Worker  * Macro to try to cast the value on the top of the XPath stack to a boolean.
326*7c568831SAndroid Build Coastguard Worker  */
327*7c568831SAndroid Build Coastguard Worker #define CAST_TO_BOOLEAN							\
328*7c568831SAndroid Build Coastguard Worker     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\
329*7c568831SAndroid Build Coastguard Worker         xmlXPathBooleanFunction(ctxt, 1);
330*7c568831SAndroid Build Coastguard Worker 
331*7c568831SAndroid Build Coastguard Worker /*
332*7c568831SAndroid Build Coastguard Worker  * Variable Lookup forwarding.
333*7c568831SAndroid Build Coastguard Worker  */
334*7c568831SAndroid Build Coastguard Worker 
335*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
336*7c568831SAndroid Build Coastguard Worker 	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,
337*7c568831SAndroid Build Coastguard Worker 					 xmlXPathVariableLookupFunc f,
338*7c568831SAndroid Build Coastguard Worker 					 void *data);
339*7c568831SAndroid Build Coastguard Worker 
340*7c568831SAndroid Build Coastguard Worker /*
341*7c568831SAndroid Build Coastguard Worker  * Function Lookup forwarding.
342*7c568831SAndroid Build Coastguard Worker  */
343*7c568831SAndroid Build Coastguard Worker 
344*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
345*7c568831SAndroid Build Coastguard Worker 	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,
346*7c568831SAndroid Build Coastguard Worker 					 xmlXPathFuncLookupFunc f,
347*7c568831SAndroid Build Coastguard Worker 					 void *funcCtxt);
348*7c568831SAndroid Build Coastguard Worker 
349*7c568831SAndroid Build Coastguard Worker /*
350*7c568831SAndroid Build Coastguard Worker  * Error reporting.
351*7c568831SAndroid Build Coastguard Worker  */
352*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
353*7c568831SAndroid Build Coastguard Worker 		xmlXPatherror	(xmlXPathParserContextPtr ctxt,
354*7c568831SAndroid Build Coastguard Worker 				 const char *file,
355*7c568831SAndroid Build Coastguard Worker 				 int line,
356*7c568831SAndroid Build Coastguard Worker 				 int no);
357*7c568831SAndroid Build Coastguard Worker 
358*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
359*7c568831SAndroid Build Coastguard Worker 		xmlXPathErr	(xmlXPathParserContextPtr ctxt,
360*7c568831SAndroid Build Coastguard Worker 				 int error);
361*7c568831SAndroid Build Coastguard Worker 
362*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_DEBUG_ENABLED
363*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
364*7c568831SAndroid Build Coastguard Worker 		xmlXPathDebugDumpObject	(FILE *output,
365*7c568831SAndroid Build Coastguard Worker 					 xmlXPathObjectPtr cur,
366*7c568831SAndroid Build Coastguard Worker 					 int depth);
367*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
368*7c568831SAndroid Build Coastguard Worker 	    xmlXPathDebugDumpCompExpr(FILE *output,
369*7c568831SAndroid Build Coastguard Worker 					 xmlXPathCompExprPtr comp,
370*7c568831SAndroid Build Coastguard Worker 					 int depth);
371*7c568831SAndroid Build Coastguard Worker #endif
372*7c568831SAndroid Build Coastguard Worker /**
373*7c568831SAndroid Build Coastguard Worker  * NodeSet handling.
374*7c568831SAndroid Build Coastguard Worker  */
375*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
376*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,
377*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr val);
378*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
379*7c568831SAndroid Build Coastguard Worker 		xmlXPathDifference		(xmlNodeSetPtr nodes1,
380*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
381*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
382*7c568831SAndroid Build Coastguard Worker 		xmlXPathIntersection		(xmlNodeSetPtr nodes1,
383*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
384*7c568831SAndroid Build Coastguard Worker 
385*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
386*7c568831SAndroid Build Coastguard Worker 		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);
387*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
388*7c568831SAndroid Build Coastguard Worker 		xmlXPathDistinct		(xmlNodeSetPtr nodes);
389*7c568831SAndroid Build Coastguard Worker 
390*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
391*7c568831SAndroid Build Coastguard Worker 		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,
392*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
393*7c568831SAndroid Build Coastguard Worker 
394*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
395*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,
396*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr node);
397*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
398*7c568831SAndroid Build Coastguard Worker 		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,
399*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
400*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
401*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,
402*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr node);
403*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
404*7c568831SAndroid Build Coastguard Worker 		xmlXPathLeading			(xmlNodeSetPtr nodes1,
405*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
406*7c568831SAndroid Build Coastguard Worker 
407*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
408*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,
409*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr node);
410*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
411*7c568831SAndroid Build Coastguard Worker 		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,
412*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
413*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
414*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,
415*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr node);
416*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
417*7c568831SAndroid Build Coastguard Worker 		xmlXPathTrailing		(xmlNodeSetPtr nodes1,
418*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr nodes2);
419*7c568831SAndroid Build Coastguard Worker 
420*7c568831SAndroid Build Coastguard Worker 
421*7c568831SAndroid Build Coastguard Worker /**
422*7c568831SAndroid Build Coastguard Worker  * Extending a context.
423*7c568831SAndroid Build Coastguard Worker  */
424*7c568831SAndroid Build Coastguard Worker 
425*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
426*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,
427*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *prefix,
428*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *ns_uri);
429*7c568831SAndroid Build Coastguard Worker XMLPUBFUN const xmlChar *
430*7c568831SAndroid Build Coastguard Worker 		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,
431*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *prefix);
432*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
433*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);
434*7c568831SAndroid Build Coastguard Worker 
435*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
436*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,
437*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
438*7c568831SAndroid Build Coastguard Worker 						 xmlXPathFunction f);
439*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
440*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,
441*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
442*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *ns_uri,
443*7c568831SAndroid Build Coastguard Worker 						 xmlXPathFunction f);
444*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
445*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,
446*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
447*7c568831SAndroid Build Coastguard Worker 						 xmlXPathObjectPtr value);
448*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
449*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,
450*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
451*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *ns_uri,
452*7c568831SAndroid Build Coastguard Worker 						 xmlXPathObjectPtr value);
453*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathFunction
454*7c568831SAndroid Build Coastguard Worker 		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,
455*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name);
456*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathFunction
457*7c568831SAndroid Build Coastguard Worker 		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,
458*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
459*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *ns_uri);
460*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
461*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);
462*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
463*7c568831SAndroid Build Coastguard Worker 		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,
464*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name);
465*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
466*7c568831SAndroid Build Coastguard Worker 		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,
467*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *name,
468*7c568831SAndroid Build Coastguard Worker 						 const xmlChar *ns_uri);
469*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
470*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
471*7c568831SAndroid Build Coastguard Worker 
472*7c568831SAndroid Build Coastguard Worker /**
473*7c568831SAndroid Build Coastguard Worker  * Utilities to extend XPath.
474*7c568831SAndroid Build Coastguard Worker  */
475*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathParserContextPtr
476*7c568831SAndroid Build Coastguard Worker 		  xmlXPathNewParserContext	(const xmlChar *str,
477*7c568831SAndroid Build Coastguard Worker 						 xmlXPathContextPtr ctxt);
478*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
479*7c568831SAndroid Build Coastguard Worker 		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);
480*7c568831SAndroid Build Coastguard Worker 
481*7c568831SAndroid Build Coastguard Worker /* TODO: remap to xmlXPathValuePop and Push. */
482*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
483*7c568831SAndroid Build Coastguard Worker 		valuePop			(xmlXPathParserContextPtr ctxt);
484*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
485*7c568831SAndroid Build Coastguard Worker 		valuePush			(xmlXPathParserContextPtr ctxt,
486*7c568831SAndroid Build Coastguard Worker 						 xmlXPathObjectPtr value);
487*7c568831SAndroid Build Coastguard Worker 
488*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
489*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewString		(const xmlChar *val);
490*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
491*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewCString		(const char *val);
492*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
493*7c568831SAndroid Build Coastguard Worker 		xmlXPathWrapString		(xmlChar *val);
494*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
495*7c568831SAndroid Build Coastguard Worker 		xmlXPathWrapCString		(char * val);
496*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
497*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewFloat		(double val);
498*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
499*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewBoolean		(int val);
500*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
501*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewNodeSet		(xmlNodePtr val);
502*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
503*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewValueTree		(xmlNodePtr val);
504*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
505*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,
506*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr val);
507*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
508*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,
509*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr val);
510*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
511*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur,
512*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr node,
513*7c568831SAndroid Build Coastguard Worker 						 xmlNsPtr ns);
514*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
515*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetSort		(xmlNodeSetPtr set);
516*7c568831SAndroid Build Coastguard Worker 
517*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
518*7c568831SAndroid Build Coastguard Worker 		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);
519*7c568831SAndroid Build Coastguard Worker XML_DEPRECATED
520*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
521*7c568831SAndroid Build Coastguard Worker 		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);
522*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlChar *
523*7c568831SAndroid Build Coastguard Worker 		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);
524*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlChar *
525*7c568831SAndroid Build Coastguard Worker 		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);
526*7c568831SAndroid Build Coastguard Worker 
527*7c568831SAndroid Build Coastguard Worker /*
528*7c568831SAndroid Build Coastguard Worker  * Existing functions.
529*7c568831SAndroid Build Coastguard Worker  */
530*7c568831SAndroid Build Coastguard Worker XMLPUBFUN double
531*7c568831SAndroid Build Coastguard Worker 		xmlXPathStringEvalNumber	(const xmlChar *str);
532*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
533*7c568831SAndroid Build Coastguard Worker 		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
534*7c568831SAndroid Build Coastguard Worker 						 xmlXPathObjectPtr res);
535*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
536*7c568831SAndroid Build Coastguard Worker 		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);
537*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodeSetPtr
538*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1,
539*7c568831SAndroid Build Coastguard Worker 						 xmlNodeSetPtr val2);
540*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
541*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetDel		(xmlNodeSetPtr cur,
542*7c568831SAndroid Build Coastguard Worker 						 xmlNodePtr val);
543*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
544*7c568831SAndroid Build Coastguard Worker 		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur,
545*7c568831SAndroid Build Coastguard Worker 						 int val);
546*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
547*7c568831SAndroid Build Coastguard Worker 		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);
548*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
549*7c568831SAndroid Build Coastguard Worker 		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);
550*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlXPathObjectPtr
551*7c568831SAndroid Build Coastguard Worker 		xmlXPathWrapExternal		(void *val);
552*7c568831SAndroid Build Coastguard Worker 
553*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
554*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
555*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
556*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
557*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
558*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
559*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
560*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
561*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
562*7c568831SAndroid Build Coastguard Worker 
563*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int xmlXPathIsNodeType(const xmlChar *name);
564*7c568831SAndroid Build Coastguard Worker 
565*7c568831SAndroid Build Coastguard Worker /*
566*7c568831SAndroid Build Coastguard Worker  * Some of the axis navigation routines.
567*7c568831SAndroid Build Coastguard Worker  */
568*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
569*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
570*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
571*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
572*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
573*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
574*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
575*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
576*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
577*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
578*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
579*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
580*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
581*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
582*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
583*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
584*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
585*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
586*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
587*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
588*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
589*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
590*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
591*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
592*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
593*7c568831SAndroid Build Coastguard Worker 			xmlNodePtr cur);
594*7c568831SAndroid Build Coastguard Worker /*
595*7c568831SAndroid Build Coastguard Worker  * The official core of XPath functions.
596*7c568831SAndroid Build Coastguard Worker  */
597*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
598*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
599*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
600*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
601*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
602*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
603*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
604*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
605*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
606*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
607*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
608*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
609*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
610*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
611*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
612*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
613*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
614*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
615*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
616*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
617*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
618*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
619*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
620*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
621*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
622*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
623*7c568831SAndroid Build Coastguard Worker 
624*7c568831SAndroid Build Coastguard Worker /**
625*7c568831SAndroid Build Coastguard Worker  * Really internal functions
626*7c568831SAndroid Build Coastguard Worker  */
627*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlXPathNodeSetFreeNs(xmlNsPtr ns);
628*7c568831SAndroid Build Coastguard Worker 
629*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
630*7c568831SAndroid Build Coastguard Worker }
631*7c568831SAndroid Build Coastguard Worker #endif
632*7c568831SAndroid Build Coastguard Worker 
633*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_XPATH_ENABLED */
634*7c568831SAndroid Build Coastguard Worker #endif /* ! __XML_XPATH_INTERNALS_H__ */
635