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