File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml / xpathInternals.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:38 2014 UTC (10 years, 1 month ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    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:     if (ctxt->valueNr < ctxt->valueFrame + (x))				\
  301:         XP_ERROR(XPATH_STACK_ERROR);
  302: 
  303: /**
  304:  * CAST_TO_STRING:
  305:  *
  306:  * Macro to try to cast the value on the top of the XPath stack to a string.
  307:  */
  308: #define CAST_TO_STRING							\
  309:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\
  310:         xmlXPathStringFunction(ctxt, 1);
  311: 
  312: /**
  313:  * CAST_TO_NUMBER:
  314:  *
  315:  * Macro to try to cast the value on the top of the XPath stack to a number.
  316:  */
  317: #define CAST_TO_NUMBER							\
  318:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\
  319:         xmlXPathNumberFunction(ctxt, 1);
  320: 
  321: /**
  322:  * CAST_TO_BOOLEAN:
  323:  *
  324:  * Macro to try to cast the value on the top of the XPath stack to a boolean.
  325:  */
  326: #define CAST_TO_BOOLEAN							\
  327:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\
  328:         xmlXPathBooleanFunction(ctxt, 1);
  329: 
  330: /*
  331:  * Variable Lookup forwarding.
  332:  */
  333: 
  334: XMLPUBFUN void XMLCALL
  335: 	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,
  336: 					 xmlXPathVariableLookupFunc f,
  337: 					 void *data);
  338: 
  339: /*
  340:  * Function Lookup forwarding.
  341:  */
  342: 
  343: XMLPUBFUN void XMLCALL
  344: 	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,
  345: 					 xmlXPathFuncLookupFunc f,
  346: 					 void *funcCtxt);
  347: 
  348: /*
  349:  * Error reporting.
  350:  */
  351: XMLPUBFUN void XMLCALL
  352: 		xmlXPatherror	(xmlXPathParserContextPtr ctxt,
  353: 				 const char *file,
  354: 				 int line,
  355: 				 int no);
  356: 
  357: XMLPUBFUN void XMLCALL
  358: 		xmlXPathErr	(xmlXPathParserContextPtr ctxt,
  359: 				 int error);
  360: 
  361: #ifdef LIBXML_DEBUG_ENABLED
  362: XMLPUBFUN void XMLCALL
  363: 		xmlXPathDebugDumpObject	(FILE *output,
  364: 					 xmlXPathObjectPtr cur,
  365: 					 int depth);
  366: XMLPUBFUN void XMLCALL
  367: 	    xmlXPathDebugDumpCompExpr(FILE *output,
  368: 					 xmlXPathCompExprPtr comp,
  369: 					 int depth);
  370: #endif
  371: /**
  372:  * NodeSet handling.
  373:  */
  374: XMLPUBFUN int XMLCALL
  375: 		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,
  376: 						 xmlNodePtr val);
  377: XMLPUBFUN xmlNodeSetPtr XMLCALL
  378: 		xmlXPathDifference		(xmlNodeSetPtr nodes1,
  379: 						 xmlNodeSetPtr nodes2);
  380: XMLPUBFUN xmlNodeSetPtr XMLCALL
  381: 		xmlXPathIntersection		(xmlNodeSetPtr nodes1,
  382: 						 xmlNodeSetPtr nodes2);
  383: 
  384: XMLPUBFUN xmlNodeSetPtr XMLCALL
  385: 		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);
  386: XMLPUBFUN xmlNodeSetPtr XMLCALL
  387: 		xmlXPathDistinct		(xmlNodeSetPtr nodes);
  388: 
  389: XMLPUBFUN int XMLCALL
  390: 		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,
  391: 						 xmlNodeSetPtr nodes2);
  392: 
  393: XMLPUBFUN xmlNodeSetPtr XMLCALL
  394: 		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,
  395: 						 xmlNodePtr node);
  396: XMLPUBFUN xmlNodeSetPtr XMLCALL
  397: 		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,
  398: 						 xmlNodeSetPtr nodes2);
  399: XMLPUBFUN xmlNodeSetPtr XMLCALL
  400: 		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,
  401: 						 xmlNodePtr node);
  402: XMLPUBFUN xmlNodeSetPtr XMLCALL
  403: 		xmlXPathLeading			(xmlNodeSetPtr nodes1,
  404: 						 xmlNodeSetPtr nodes2);
  405: 
  406: XMLPUBFUN xmlNodeSetPtr XMLCALL
  407: 		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,
  408: 						 xmlNodePtr node);
  409: XMLPUBFUN xmlNodeSetPtr XMLCALL
  410: 		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,
  411: 						 xmlNodeSetPtr nodes2);
  412: XMLPUBFUN xmlNodeSetPtr XMLCALL
  413: 		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,
  414: 						 xmlNodePtr node);
  415: XMLPUBFUN xmlNodeSetPtr XMLCALL
  416: 		xmlXPathTrailing		(xmlNodeSetPtr nodes1,
  417: 						 xmlNodeSetPtr nodes2);
  418: 
  419: 
  420: /**
  421:  * Extending a context.
  422:  */
  423: 
  424: XMLPUBFUN int XMLCALL
  425: 		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,
  426: 						 const xmlChar *prefix,
  427: 						 const xmlChar *ns_uri);
  428: XMLPUBFUN const xmlChar * XMLCALL
  429: 		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,
  430: 						 const xmlChar *prefix);
  431: XMLPUBFUN void XMLCALL
  432: 		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);
  433: 
  434: XMLPUBFUN int XMLCALL
  435: 		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,
  436: 						 const xmlChar *name,
  437: 						 xmlXPathFunction f);
  438: XMLPUBFUN int XMLCALL
  439: 		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,
  440: 						 const xmlChar *name,
  441: 						 const xmlChar *ns_uri,
  442: 						 xmlXPathFunction f);
  443: XMLPUBFUN int XMLCALL
  444: 		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,
  445: 						 const xmlChar *name,
  446: 						 xmlXPathObjectPtr value);
  447: XMLPUBFUN int XMLCALL
  448: 		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,
  449: 						 const xmlChar *name,
  450: 						 const xmlChar *ns_uri,
  451: 						 xmlXPathObjectPtr value);
  452: XMLPUBFUN xmlXPathFunction XMLCALL
  453: 		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,
  454: 						 const xmlChar *name);
  455: XMLPUBFUN xmlXPathFunction XMLCALL
  456: 		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,
  457: 						 const xmlChar *name,
  458: 						 const xmlChar *ns_uri);
  459: XMLPUBFUN void XMLCALL
  460: 		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);
  461: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  462: 		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,
  463: 						 const xmlChar *name);
  464: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  465: 		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,
  466: 						 const xmlChar *name,
  467: 						 const xmlChar *ns_uri);
  468: XMLPUBFUN void XMLCALL
  469: 		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
  470: 
  471: /**
  472:  * Utilities to extend XPath.
  473:  */
  474: XMLPUBFUN xmlXPathParserContextPtr XMLCALL
  475: 		  xmlXPathNewParserContext	(const xmlChar *str,
  476: 						 xmlXPathContextPtr ctxt);
  477: XMLPUBFUN void XMLCALL
  478: 		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);
  479: 
  480: /* TODO: remap to xmlXPathValuePop and Push. */
  481: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  482: 		valuePop			(xmlXPathParserContextPtr ctxt);
  483: XMLPUBFUN int XMLCALL
  484: 		valuePush			(xmlXPathParserContextPtr ctxt,
  485: 						 xmlXPathObjectPtr value);
  486: 
  487: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  488: 		xmlXPathNewString		(const xmlChar *val);
  489: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  490: 		xmlXPathNewCString		(const char *val);
  491: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  492: 		xmlXPathWrapString		(xmlChar *val);
  493: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  494: 		xmlXPathWrapCString		(char * val);
  495: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  496: 		xmlXPathNewFloat		(double val);
  497: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  498: 		xmlXPathNewBoolean		(int val);
  499: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  500: 		xmlXPathNewNodeSet		(xmlNodePtr val);
  501: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  502: 		xmlXPathNewValueTree		(xmlNodePtr val);
  503: XMLPUBFUN int XMLCALL
  504: 		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,
  505: 						 xmlNodePtr val);
  506: XMLPUBFUN int XMLCALL
  507: 		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,
  508: 						 xmlNodePtr val);
  509: XMLPUBFUN int XMLCALL
  510: 		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur,
  511: 						 xmlNodePtr node,
  512: 						 xmlNsPtr ns);
  513: XMLPUBFUN void XMLCALL
  514: 		xmlXPathNodeSetSort		(xmlNodeSetPtr set);
  515: 
  516: XMLPUBFUN void XMLCALL
  517: 		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);
  518: XMLPUBFUN void XMLCALL
  519: 		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);
  520: XMLPUBFUN xmlChar * XMLCALL
  521: 		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);
  522: XMLPUBFUN xmlChar * XMLCALL
  523: 		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);
  524: 
  525: /*
  526:  * Existing functions.
  527:  */
  528: XMLPUBFUN double XMLCALL
  529: 		xmlXPathStringEvalNumber	(const xmlChar *str);
  530: XMLPUBFUN int XMLCALL
  531: 		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
  532: 						 xmlXPathObjectPtr res);
  533: XMLPUBFUN void XMLCALL
  534: 		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);
  535: XMLPUBFUN xmlNodeSetPtr XMLCALL
  536: 		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1,
  537: 						 xmlNodeSetPtr val2);
  538: XMLPUBFUN void XMLCALL
  539: 		xmlXPathNodeSetDel		(xmlNodeSetPtr cur,
  540: 						 xmlNodePtr val);
  541: XMLPUBFUN void XMLCALL
  542: 		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur,
  543: 						 int val);
  544: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  545: 		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);
  546: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  547: 		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);
  548: XMLPUBFUN xmlXPathObjectPtr XMLCALL
  549: 		xmlXPathWrapExternal		(void *val);
  550: 
  551: XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
  552: XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
  553: XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
  554: XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
  555: XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
  556: XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
  557: XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
  558: XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
  559: XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
  560: 
  561: XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
  562: 
  563: /*
  564:  * Some of the axis navigation routines.
  565:  */
  566: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
  567: 			xmlNodePtr cur);
  568: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
  569: 			xmlNodePtr cur);
  570: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
  571: 			xmlNodePtr cur);
  572: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
  573: 			xmlNodePtr cur);
  574: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
  575: 			xmlNodePtr cur);
  576: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
  577: 			xmlNodePtr cur);
  578: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
  579: 			xmlNodePtr cur);
  580: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
  581: 			xmlNodePtr cur);
  582: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
  583: 			xmlNodePtr cur);
  584: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
  585: 			xmlNodePtr cur);
  586: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
  587: 			xmlNodePtr cur);
  588: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
  589: 			xmlNodePtr cur);
  590: XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
  591: 			xmlNodePtr cur);
  592: /*
  593:  * The official core of XPath functions.
  594:  */
  595: XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
  596: XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
  597: XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
  598: XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
  599: XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
  600: XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
  601: XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
  602: XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
  603: XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
  604: XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
  605: XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
  606: XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
  607: XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
  608: XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
  609: XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
  610: XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
  611: XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
  612: XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
  613: XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
  614: XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
  615: XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
  616: XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
  617: XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
  618: XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
  619: XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
  620: XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
  621: 
  622: /**
  623:  * Really internal functions
  624:  */
  625: XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
  626: 
  627: #ifdef __cplusplus
  628: }
  629: #endif
  630: 
  631: #endif /* LIBXML_XPATH_ENABLED */
  632: #endif /* ! __XML_XPATH_INTERNALS_H__ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>