xpathInternals.h.svn-base
上传用户:szjkjd
上传日期:2022-06-27
资源大小:8968k
文件大小:19k
源码类别:

浏览器

开发平台:

Visual C++

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