2001-02-23 17:55:21 +00:00
/*
2001-12-31 16:16:02 +00:00
* xpathInternals . c : internal interfaces for XML Path Language implementation
* used to build new modules on top of XPath
2001-02-23 17:55:21 +00:00
*
* See COPYRIGHT for the status of this software
*
2001-06-24 12:13:24 +00:00
* Author : daniel @ veillard . com
2001-02-23 17:55:21 +00:00
*/
# ifndef __XML_XPATH_INTERNALS_H__
# define __XML_XPATH_INTERNALS_H__
2001-06-24 12:13:24 +00:00
# if defined(WIN32) && defined(_MSC_VER)
# include <libxml/xmlwin32version.h>
# else
2001-06-21 11:20:21 +00:00
# include <libxml/xmlversion.h>
2001-06-24 12:13:24 +00:00
# endif
2001-02-23 17:55:21 +00:00
# include <libxml/xpath.h>
# ifdef __cplusplus
extern " C " {
# endif
/************************************************************************
* *
* Helpers *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2001-07-17 20:07:33 +00:00
/**
* Many of these macros may later turn into functions . They
* shouldn ' t be used in # ifdef ' s preprocessor instructions .
*/
2001-07-16 04:52:57 +00:00
/**
* xmlXPathSetError :
* @ ctxt : an XPath parser context
* @ err : an xmlXPathError code
*
* Raises an error .
*/
# define xmlXPathSetError(ctxt, err) \
{ xmlXPatherror ( ( ctxt ) , __FILE__ , __LINE__ , ( err ) ) ; \
( ctxt ) - > error = ( err ) ; }
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathSetArityError :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Raises an XPATH_INVALID_ARITY error .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathSetArityError(ctxt) \
xmlXPathSetError ( ( ctxt ) , XPATH_INVALID_ARITY )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathSetTypeError :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Raises an XPATH_INVALID_TYPE error .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathSetTypeError(ctxt) \
xmlXPathSetError ( ( ctxt ) , XPATH_INVALID_TYPE )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathGetError :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Get the error code of an XPath context .
2001-07-18 19:30:27 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns the context error .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathGetError(ctxt) ((ctxt)->error)
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathCheckError :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Check if an XPath error was raised .
2001-07-18 19:30:27 +00:00
*
2001-07-16 04:52:57 +00:00
* Returns true if an error has been raised , false otherwise .
*/
# define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
/**
* xmlXPathGetDocument :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Get the document of an XPath context .
2001-07-18 19:30:27 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns the context document .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathGetContextNode :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Get the context node of an XPath context .
2001-07-18 19:30:27 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns the context node .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
int xmlXPathPopBoolean ( xmlXPathParserContextPtr ctxt ) ;
double xmlXPathPopNumber ( xmlXPathParserContextPtr ctxt ) ;
xmlChar * xmlXPathPopString ( xmlXPathParserContextPtr ctxt ) ;
xmlNodeSetPtr xmlXPathPopNodeSet ( xmlXPathParserContextPtr ctxt ) ;
void * xmlXPathPopExternal ( xmlXPathParserContextPtr ctxt ) ;
/**
* xmlXPathReturnBoolean :
* @ ctxt : an XPath parser context
* @ val : a boolean
*
2002-03-12 18:46:39 +00:00
* Pushes the boolean @ val on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnBoolean(ctxt, val) \
valuePush ( ( ctxt ) , xmlXPathNewBoolean ( val ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnTrue :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Pushes true on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnFalse :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Pushes false on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnNumber :
* @ ctxt : an XPath parser context
* @ val : a double
*
2002-03-12 18:46:39 +00:00
* Pushes the double @ val on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnNumber(ctxt, val) \
valuePush ( ( ctxt ) , xmlXPathNewFloat ( val ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnString :
* @ ctxt : an XPath parser context
* @ str : a string
*
2002-03-12 18:46:39 +00:00
* Pushes the string @ str on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnString(ctxt, str) \
valuePush ( ( ctxt ) , xmlXPathWrapString ( str ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnEmptyString :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Pushes an empty string on the stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnEmptyString(ctxt) \
valuePush ( ( ctxt ) , xmlXPathNewCString ( " " ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnNodeSet :
* @ ctxt : an XPath parser context
* @ ns : a node - set
*
2002-03-12 18:46:39 +00:00
* Pushes the node - set @ ns on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnNodeSet(ctxt, ns) \
valuePush ( ( ctxt ) , xmlXPathWrapNodeSet ( ns ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnEmptyNodeSet :
* @ ctxt : an XPath parser context
*
2002-03-12 18:46:39 +00:00
* Pushes an empty node - set on the context stack .
2001-07-16 04:52:57 +00:00
*/
2001-12-31 16:37:34 +00:00
# define xmlXPathReturnEmptyNodeSet(ctxt) \
2001-07-16 04:52:57 +00:00
valuePush ( ( ctxt ) , xmlXPathNewNodeSet ( NULL ) )
2001-07-17 20:07:33 +00:00
2001-07-16 04:52:57 +00:00
/**
* xmlXPathReturnExternal :
* @ ctxt : an XPath parser context
* @ val : user data
*
2002-03-12 18:46:39 +00:00
* Pushes user data on the context stack .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathReturnExternal(ctxt, val) \
valuePush ( ( ctxt ) , xmlXPathWrapExternal ( val ) )
/**
* xmlXPathStackIsNodeSet :
* @ ctxt : an XPath parser context
*
2001-07-18 19:30:27 +00:00
* Check if the current value on the XPath stack is a node set or
2002-03-12 18:46:39 +00:00
* an XSLT value tree .
2001-07-18 19:30:27 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns true if the current object on the stack is a node - set .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathStackIsNodeSet(ctxt) \
( ( ( ctxt ) - > value ! = NULL ) \
& & ( ( ( ctxt ) - > value - > type = = XPATH_NODESET ) \
| | ( ( ctxt ) - > value - > type = = XPATH_XSLT_TREE ) ) )
2001-10-07 16:41:52 +00:00
/**
* xmlXPathStackIsExternal :
* @ ctxt : an XPath parser context
*
* Checks if the current value on the XPath stack is an external
* object .
*
* Returns true if the current object on the stack is an external
2002-03-12 18:46:39 +00:00
* object .
2001-10-07 16:41:52 +00:00
*/
# define xmlXPathStackIsExternal(ctxt) \
( ( ctxt - > value ! = NULL ) & & ( ctxt - > value - > type = = XPATH_USERS ) )
2001-07-16 04:52:57 +00:00
/**
* xmlXPathEmptyNodeSet :
* @ ns : a node - set
*
2002-03-12 18:46:39 +00:00
* Empties a node - set .
2001-07-16 04:52:57 +00:00
*/
# define xmlXPathEmptyNodeSet(ns) \
{ while ( ( ns ) - > nodeNr > 0 ) ( ns ) - > nodeTab [ ( ns ) - > nodeNr - - ] = NULL ; }
2001-05-19 14:59:49 +00:00
/**
* CHECK_ERROR :
*
2002-03-12 18:46:39 +00:00
* Macro to return from the function if an XPath error was detected .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CHECK_ERROR \
if ( ctxt - > error ! = XPATH_EXPRESSION_OK ) return
2001-05-19 14:59:49 +00:00
/**
* CHECK_ERROR0 :
*
2002-03-12 18:46:39 +00:00
* Macro to return 0 from the function if an XPath error was detected .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CHECK_ERROR0 \
if ( ctxt - > error ! = XPATH_EXPRESSION_OK ) return ( 0 )
2001-05-19 14:59:49 +00:00
/**
* XP_ERROR :
* @ X : the error code
*
2002-03-12 18:46:39 +00:00
* Macro to raise an XPath error and return .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define XP_ERROR(X) \
{ xmlXPatherror ( ctxt , __FILE__ , __LINE__ , X ) ; \
ctxt - > error = ( X ) ; return ; }
2001-05-19 14:59:49 +00:00
/**
* XP_ERROR0 :
* @ X : the error code
*
2002-03-12 18:46:39 +00:00
* Macro to raise an XPath error and return 0.
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define XP_ERROR0(X) \
{ xmlXPatherror ( ctxt , __FILE__ , __LINE__ , X ) ; \
ctxt - > error = ( X ) ; return ( 0 ) ; }
2001-05-19 14:59:49 +00:00
/**
* CHECK_TYPE :
* @ typeval : the XPath type
*
* Macro to check that the value on top of the XPath stack is of a given
* type .
*/
2001-02-23 17:55:21 +00:00
# define CHECK_TYPE(typeval) \
if ( ( ctxt - > value = = NULL ) | | ( ctxt - > value - > type ! = typeval ) ) \
XP_ERROR ( XPATH_INVALID_TYPE )
2001-07-03 10:35:50 +00:00
/**
* CHECK_TYPE0 :
* @ typeval : the XPath type
*
* Macro to check that the value on top of the XPath stack is of a given
2002-03-12 18:46:39 +00:00
* type . Return ( 0 ) in case of failure
2001-07-03 10:35:50 +00:00
*/
# define CHECK_TYPE0(typeval) \
if ( ( ctxt - > value = = NULL ) | | ( ctxt - > value - > type ! = typeval ) ) \
XP_ERROR0 ( XPATH_INVALID_TYPE )
2001-05-19 14:59:49 +00:00
/**
* CHECK_ARITY :
* @ x : the number of expected args
*
2002-03-12 18:46:39 +00:00
* Macro to check that the number of args passed to an XPath function matches .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CHECK_ARITY(x) \
if ( nargs ! = ( x ) ) \
XP_ERROR ( XPATH_INVALID_ARITY ) ;
2001-05-19 14:59:49 +00:00
/**
* CAST_TO_STRING :
*
2002-03-12 18:46:39 +00:00
* Macro to try to cast the value on the top of the XPath stack to a string .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CAST_TO_STRING \
if ( ( ctxt - > value ! = NULL ) & & ( ctxt - > value - > type ! = XPATH_STRING ) ) \
xmlXPathStringFunction ( ctxt , 1 ) ;
2001-05-19 14:59:49 +00:00
/**
* CAST_TO_NUMBER :
*
2002-03-12 18:46:39 +00:00
* Macro to try to cast the value on the top of the XPath stack to a number .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CAST_TO_NUMBER \
if ( ( ctxt - > value ! = NULL ) & & ( ctxt - > value - > type ! = XPATH_NUMBER ) ) \
xmlXPathNumberFunction ( ctxt , 1 ) ;
2001-05-19 14:59:49 +00:00
/**
* CAST_TO_BOOLEAN :
*
2002-03-12 18:46:39 +00:00
* Macro to try to cast the value on the top of the XPath stack to a boolean .
2001-05-19 14:59:49 +00:00
*/
2001-02-23 17:55:21 +00:00
# define CAST_TO_BOOLEAN \
if ( ( ctxt - > value ! = NULL ) & & ( ctxt - > value - > type ! = XPATH_BOOLEAN ) ) \
xmlXPathBooleanFunction ( ctxt , 1 ) ;
/*
2002-03-12 18:46:39 +00:00
* Variable Lookup forwarding .
2001-02-23 17:55:21 +00:00
*/
2002-01-22 18:15:52 +00:00
/**
* xmlXPathVariableLookupFunc :
* @ ctxt : an XPath context
* @ name : name of the variable
* @ ns_uri : the namespace name hosting this variable
*
* Prototype for callbacks used to plug variable lookup in the XPath
2002-03-12 18:46:39 +00:00
* engine .
2002-01-22 18:15:52 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns the XPath object value or NULL if not found .
2002-01-22 18:15:52 +00:00
*/
typedef xmlXPathObjectPtr ( * xmlXPathVariableLookupFunc ) ( void * ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ) ;
void xmlXPathRegisterVariableLookup ( xmlXPathContextPtr ctxt ,
xmlXPathVariableLookupFunc f ,
2001-12-31 16:16:02 +00:00
void * data ) ;
2001-02-23 17:55:21 +00:00
2001-07-26 16:55:21 +00:00
/*
2002-03-12 18:46:39 +00:00
* Function Lookup forwarding .
2001-07-26 16:55:21 +00:00
*/
2002-01-22 18:15:52 +00:00
/**
* xmlXPathFuncLookupFunc :
* @ ctxt : an XPath context
* @ name : name of the function
* @ ns_uri : the namespace name hosting this function
*
* Prototype for callbacks used to plug function lookup in the XPath
2002-03-12 18:46:39 +00:00
* engine .
2002-01-22 18:15:52 +00:00
*
2002-03-12 18:46:39 +00:00
* Returns the XPath function or NULL if not found .
2002-01-22 18:15:52 +00:00
*/
2002-01-21 08:56:29 +00:00
typedef xmlXPathFunction ( * xmlXPathFuncLookupFunc ) ( void * ctxt ,
2001-07-26 16:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ) ;
void xmlXPathRegisterFuncLookup ( xmlXPathContextPtr ctxt ,
xmlXPathFuncLookupFunc f ,
void * funcCtxt ) ;
2001-02-23 17:55:21 +00:00
/*
2002-03-12 18:46:39 +00:00
* Error reporting .
2001-02-23 17:55:21 +00:00
*/
void xmlXPatherror ( xmlXPathParserContextPtr ctxt ,
const char * file ,
int line ,
int no ) ;
void xmlXPathDebugDumpObject ( FILE * output ,
xmlXPathObjectPtr cur ,
int depth ) ;
2001-03-24 17:00:36 +00:00
void xmlXPathDebugDumpCompExpr ( FILE * output ,
xmlXPathCompExprPtr comp ,
int depth ) ;
2001-07-16 04:52:57 +00:00
/**
2002-03-12 18:46:39 +00:00
* NodeSet handling .
2001-07-16 04:52:57 +00:00
*/
2001-07-31 23:30:37 +00:00
int xmlXPathNodeSetContains ( xmlNodeSetPtr cur ,
xmlNodePtr val ) ;
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr xmlXPathDifference ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathIntersection ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathDistinctSorted ( xmlNodeSetPtr nodes ) ;
xmlNodeSetPtr xmlXPathDistinct ( xmlNodeSetPtr nodes ) ;
int xmlXPathHasSameNodes ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathNodeLeadingSorted ( xmlNodeSetPtr nodes ,
xmlNodePtr node ) ;
xmlNodeSetPtr xmlXPathLeadingSorted ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathNodeLeading ( xmlNodeSetPtr nodes ,
xmlNodePtr node ) ;
xmlNodeSetPtr xmlXPathLeading ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathNodeTrailingSorted ( xmlNodeSetPtr nodes ,
xmlNodePtr node ) ;
xmlNodeSetPtr xmlXPathTrailingSorted ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
xmlNodeSetPtr xmlXPathNodeTrailing ( xmlNodeSetPtr nodes ,
xmlNodePtr node ) ;
xmlNodeSetPtr xmlXPathTrailing ( xmlNodeSetPtr nodes1 ,
xmlNodeSetPtr nodes2 ) ;
2001-02-23 17:55:21 +00:00
/**
2002-03-12 18:46:39 +00:00
* Extending a context .
2001-02-23 17:55:21 +00:00
*/
int xmlXPathRegisterNs ( xmlXPathContextPtr ctxt ,
const xmlChar * prefix ,
const xmlChar * ns_uri ) ;
const xmlChar * xmlXPathNsLookup ( xmlXPathContextPtr ctxt ,
2001-12-31 16:16:02 +00:00
const xmlChar * prefix ) ;
2001-02-23 17:55:21 +00:00
void xmlXPathRegisteredNsCleanup ( xmlXPathContextPtr ctxt ) ;
int xmlXPathRegisterFunc ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
xmlXPathFunction f ) ;
int xmlXPathRegisterFuncNS ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
const xmlChar * ns_uri ,
xmlXPathFunction f ) ;
int xmlXPathRegisterVariable ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
xmlXPathObjectPtr value ) ;
int xmlXPathRegisterVariableNS ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
const xmlChar * ns_uri ,
xmlXPathObjectPtr value ) ;
xmlXPathFunction xmlXPathFunctionLookup ( xmlXPathContextPtr ctxt ,
const xmlChar * name ) ;
xmlXPathFunction xmlXPathFunctionLookupNS ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
const xmlChar * ns_uri ) ;
void xmlXPathRegisteredFuncsCleanup ( xmlXPathContextPtr ctxt ) ;
xmlXPathObjectPtr xmlXPathVariableLookup ( xmlXPathContextPtr ctxt ,
const xmlChar * name ) ;
xmlXPathObjectPtr xmlXPathVariableLookupNS ( xmlXPathContextPtr ctxt ,
const xmlChar * name ,
const xmlChar * ns_uri ) ;
void xmlXPathRegisteredVariablesCleanup ( xmlXPathContextPtr ctxt ) ;
/**
2002-03-12 18:46:39 +00:00
* Utilities to extend XPath .
2001-02-23 17:55:21 +00:00
*/
xmlXPathParserContextPtr
xmlXPathNewParserContext ( const xmlChar * str ,
xmlXPathContextPtr ctxt ) ;
void xmlXPathFreeParserContext ( xmlXPathParserContextPtr ctxt ) ;
2002-03-12 18:46:39 +00:00
/* TODO: remap to xmlXPathValuePop and Push. */
2001-02-23 17:55:21 +00:00
xmlXPathObjectPtr valuePop ( xmlXPathParserContextPtr ctxt ) ;
int valuePush ( xmlXPathParserContextPtr ctxt ,
xmlXPathObjectPtr value ) ;
xmlXPathObjectPtr xmlXPathNewString ( const xmlChar * val ) ;
xmlXPathObjectPtr xmlXPathNewCString ( const char * val ) ;
2001-05-15 09:43:47 +00:00
xmlXPathObjectPtr xmlXPathWrapString ( xmlChar * val ) ;
2002-01-20 22:08:18 +00:00
xmlXPathObjectPtr xmlXPathWrapCString ( char * val ) ;
2001-02-23 17:55:21 +00:00
xmlXPathObjectPtr xmlXPathNewFloat ( double val ) ;
xmlXPathObjectPtr xmlXPathNewBoolean ( int val ) ;
xmlXPathObjectPtr xmlXPathNewNodeSet ( xmlNodePtr val ) ;
xmlXPathObjectPtr xmlXPathNewValueTree ( xmlNodePtr val ) ;
void xmlXPathNodeSetAdd ( xmlNodeSetPtr cur ,
xmlNodePtr val ) ;
2001-03-24 17:00:36 +00:00
void xmlXPathNodeSetAddUnique ( xmlNodeSetPtr cur ,
xmlNodePtr val ) ;
void xmlXPathNodeSetSort ( xmlNodeSetPtr set ) ;
2001-02-23 17:55:21 +00:00
void xmlXPathRoot ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathEvalExpr ( xmlXPathParserContextPtr ctxt ) ;
xmlChar * xmlXPathParseName ( xmlXPathParserContextPtr ctxt ) ;
xmlChar * xmlXPathParseNCName ( xmlXPathParserContextPtr ctxt ) ;
/*
2002-03-12 18:46:39 +00:00
* Existing functions .
2001-02-23 17:55:21 +00:00
*/
2001-06-21 11:20:21 +00:00
double xmlXPathStringEvalNumber ( const xmlChar * str ) ;
2001-02-23 17:55:21 +00:00
int xmlXPathEvaluatePredicateResult ( xmlXPathParserContextPtr ctxt ,
xmlXPathObjectPtr res ) ;
void xmlXPathRegisterAllFunctions ( xmlXPathContextPtr ctxt ) ;
xmlNodeSetPtr xmlXPathNodeSetMerge ( xmlNodeSetPtr val1 , xmlNodeSetPtr val2 ) ;
void xmlXPathNodeSetDel ( xmlNodeSetPtr cur , xmlNodePtr val ) ;
void xmlXPathNodeSetRemove ( xmlNodeSetPtr cur , int val ) ;
xmlXPathObjectPtr xmlXPathNewNodeSetList ( xmlNodeSetPtr val ) ;
xmlXPathObjectPtr xmlXPathWrapNodeSet ( xmlNodeSetPtr val ) ;
2001-12-31 16:16:02 +00:00
xmlXPathObjectPtr xmlXPathWrapExternal ( void * val ) ;
2001-02-23 17:55:21 +00:00
int xmlXPathEqualValues ( xmlXPathParserContextPtr ctxt ) ;
int xmlXPathCompareValues ( xmlXPathParserContextPtr ctxt , int inf , int strict ) ;
void xmlXPathValueFlipSign ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathAddValues ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathSubValues ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathMultValues ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathDivValues ( xmlXPathParserContextPtr ctxt ) ;
void xmlXPathModValues ( xmlXPathParserContextPtr ctxt ) ;
2001-03-24 17:00:36 +00:00
int xmlXPathIsNodeType ( const xmlChar * name ) ;
2001-02-23 17:55:21 +00:00
/*
2002-03-12 18:46:39 +00:00
* Some of the axis navigation routines .
2001-02-23 17:55:21 +00:00
*/
2001-03-24 17:00:36 +00:00
xmlNodePtr xmlXPathNextSelf ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextChild ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextDescendant ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextDescendantOrSelf ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextParent ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextAncestorOrSelf ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextFollowingSibling ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextFollowing ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextNamespace ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextAttribute ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextPreceding ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextAncestor ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
xmlNodePtr xmlXPathNextPrecedingSibling ( xmlXPathParserContextPtr ctxt ,
xmlNodePtr cur ) ;
2001-02-23 17:55:21 +00:00
/*
2002-03-12 18:46:39 +00:00
* The official core of XPath functions .
2001-02-23 17:55:21 +00:00
*/
void xmlXPathLastFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathPositionFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathCountFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathIdFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathLocalNameFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathNamespaceURIFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathStringFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathStringLengthFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathConcatFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathContainsFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathStartsWithFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathSubstringFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathSubstringBeforeFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathSubstringAfterFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathNormalizeFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathTranslateFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathNotFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathTrueFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathFalseFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathLangFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathNumberFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathSumFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathFloorFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathCeilingFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathRoundFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
void xmlXPathBooleanFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
# ifdef __cplusplus
}
# endif
# endif /* ! __XML_XPATH_INTERNALS_H__ */