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