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