Annotation of embedaddon/libxml2/include/libxml/xpathInternals.h, revision 1.1
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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>