imgtools/imgcheck/libxml/xpathInternals.h
changeset 2 39c28ec933dd
equal deleted inserted replaced
1:820b22e13ff1 2:39c28ec933dd
       
     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 /* 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__ */