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