2001-02-23 17:55:21 +00:00
/*
2003-11-18 20:56:51 +00:00
* Summary : internal interfaces for XML Path Language implementation
* Description : internal interfaces for XML Path Language implementation
* used to build new modules on top of XPath like XPointer and
* XSLT
2001-02-23 17:55:21 +00:00
*
2003-11-18 20:56:51 +00:00
* Copy : See Copyright for the status of this software .
2001-02-23 17:55:21 +00:00
*
2003-11-18 20:56:51 +00:00
* Author : Daniel Veillard
2001-02-23 17:55:21 +00:00
*/
# ifndef __XML_XPATH_INTERNALS_H__
# define __XML_XPATH_INTERNALS_H__
2001-06-21 11:20:21 +00:00
# include <libxml/xmlversion.h>
2001-02-23 17:55:21 +00:00
# include <libxml/xpath.h>
2004-06-27 12:08:10 +00:00
# ifdef LIBXML_XPATH_ENABLED
2001-02-23 17:55:21 +00:00
# ifdef __cplusplus
extern " C " {
# endif
/************************************************************************
* *
* Helpers *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2003-11-16 06:25:42 +00:00
/*
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 ) ) ; \
2004-11-08 16:24:57 +00:00
if ( ( ctxt ) ! = NULL ) ( 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)
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathPopBoolean ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN double XMLCALL
xmlXPathPopNumber ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN xmlChar * XMLCALL
xmlXPathPopString ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathPopNodeSet ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void * XMLCALL
xmlXPathPopExternal ( xmlXPathParserContextPtr ctxt ) ;
2001-07-16 04:52:57 +00:00
/**
* 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) \
2003-12-20 09:20:39 +00:00
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) \
2003-10-07 21:25:12 +00:00
{ xmlXPathErr ( ctxt , X ) ; return ; }
2001-02-23 17:55:21 +00:00
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) \
2003-10-07 21:25:12 +00:00
{ xmlXPathErr ( ctxt , X ) ; return ( 0 ) ; }
2001-02-23 17:55:21 +00:00
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) \
2004-11-08 16:24:57 +00:00
if ( ctxt = = NULL ) return ; \
2001-02-23 17:55:21 +00:00
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
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathRegisterVariableLookup ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
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
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathRegisterFuncLookup ( xmlXPathContextPtr ctxt ,
2001-07-26 16:55:21 +00:00
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
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPatherror ( xmlXPathParserContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const char * file ,
int line ,
int no ) ;
2003-10-07 21:25:12 +00:00
XMLPUBFUN void XMLCALL
xmlXPathErr ( xmlXPathParserContextPtr ctxt ,
int error ) ;
2003-09-29 13:20:24 +00:00
# ifdef LIBXML_DEBUG_ENABLED
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathDebugDumpObject ( FILE * output ,
2001-02-23 17:55:21 +00:00
xmlXPathObjectPtr cur ,
int depth ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathDebugDumpCompExpr ( FILE * output ,
2001-03-24 17:00:36 +00:00
xmlXPathCompExprPtr comp ,
int depth ) ;
2003-09-29 13:20:24 +00:00
# endif
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
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathNodeSetContains ( xmlNodeSetPtr cur ,
2001-07-31 23:30:37 +00:00
xmlNodePtr val ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDifference ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathIntersection ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDistinctSorted ( xmlNodeSetPtr nodes ) ;
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathDistinct ( xmlNodeSetPtr nodes ) ;
2001-07-16 04:52:57 +00:00
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathHasSameNodes ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeLeadingSorted ( xmlNodeSetPtr nodes ,
2001-07-16 04:52:57 +00:00
xmlNodePtr node ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathLeadingSorted ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeLeading ( xmlNodeSetPtr nodes ,
2001-07-16 04:52:57 +00:00
xmlNodePtr node ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathLeading ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeTrailingSorted ( xmlNodeSetPtr nodes ,
2001-07-16 04:52:57 +00:00
xmlNodePtr node ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathTrailingSorted ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
xmlNodeSetPtr nodes2 ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeTrailing ( xmlNodeSetPtr nodes ,
2001-07-16 04:52:57 +00:00
xmlNodePtr node ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathTrailing ( xmlNodeSetPtr nodes1 ,
2001-07-16 04:52:57 +00:00
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
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathRegisterNs ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * prefix ,
const xmlChar * ns_uri ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN const xmlChar * XMLCALL
xmlXPathNsLookup ( xmlXPathContextPtr ctxt ,
2001-12-31 16:16:02 +00:00
const xmlChar * prefix ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathRegisteredNsCleanup ( xmlXPathContextPtr ctxt ) ;
2001-02-23 17:55:21 +00:00
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathRegisterFunc ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
xmlXPathFunction f ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathRegisterFuncNS ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ,
xmlXPathFunction f ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathRegisterVariable ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
xmlXPathObjectPtr value ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN int XMLCALL
xmlXPathRegisterVariableNS ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ,
xmlXPathObjectPtr value ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlXPathFunction XMLCALL
xmlXPathFunctionLookup ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlXPathFunction XMLCALL
xmlXPathFunctionLookupNS ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathRegisteredFuncsCleanup ( xmlXPathContextPtr ctxt ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathVariableLookup ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathVariableLookupNS ( xmlXPathContextPtr ctxt ,
2001-02-23 17:55:21 +00:00
const xmlChar * name ,
const xmlChar * ns_uri ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathRegisteredVariablesCleanup ( xmlXPathContextPtr ctxt ) ;
2001-02-23 17:55:21 +00:00
/**
2002-03-12 18:46:39 +00:00
* Utilities to extend XPath .
2001-02-23 17:55:21 +00:00
*/
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlXPathParserContextPtr XMLCALL
2001-02-23 17:55:21 +00:00
xmlXPathNewParserContext ( const xmlChar * str ,
xmlXPathContextPtr ctxt ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathFreeParserContext ( xmlXPathParserContextPtr ctxt ) ;
2001-02-23 17:55:21 +00:00
2002-03-12 18:46:39 +00:00
/* TODO: remap to xmlXPathValuePop and Push. */
2003-08-27 08:59:58 +00:00
XMLPUBFUN xmlXPathObjectPtr XMLCALL
valuePop ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN int XMLCALL
valuePush ( xmlXPathParserContextPtr ctxt ,
xmlXPathObjectPtr value ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewString ( const xmlChar * val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewCString ( const char * val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapString ( xmlChar * val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapCString ( char * val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewFloat ( double val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewBoolean ( int val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewNodeSet ( xmlNodePtr val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewValueTree ( xmlNodePtr val ) ;
XMLPUBFUN void XMLCALL
xmlXPathNodeSetAdd ( xmlNodeSetPtr cur ,
2001-02-23 17:55:21 +00:00
xmlNodePtr val ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathNodeSetAddUnique ( xmlNodeSetPtr cur ,
2001-03-24 17:00:36 +00:00
xmlNodePtr val ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathNodeSetAddNs ( xmlNodeSetPtr cur ,
2002-05-14 06:41:32 +00:00
xmlNodePtr node ,
xmlNsPtr ns ) ;
2003-08-27 08:59:58 +00:00
XMLPUBFUN void XMLCALL
xmlXPathNodeSetSort ( xmlNodeSetPtr set ) ;
XMLPUBFUN void XMLCALL
xmlXPathRoot ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL
xmlXPathEvalExpr ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN xmlChar * XMLCALL
xmlXPathParseName ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN xmlChar * XMLCALL
xmlXPathParseNCName ( xmlXPathParserContextPtr ctxt ) ;
2001-02-23 17:55:21 +00:00
/*
2002-03-12 18:46:39 +00:00
* Existing functions .
2001-02-23 17:55:21 +00:00
*/
2003-08-27 08:59:58 +00:00
XMLPUBFUN double XMLCALL
xmlXPathStringEvalNumber ( const xmlChar * str ) ;
XMLPUBFUN int XMLCALL
xmlXPathEvaluatePredicateResult ( xmlXPathParserContextPtr ctxt ,
xmlXPathObjectPtr res ) ;
XMLPUBFUN void XMLCALL
xmlXPathRegisterAllFunctions ( xmlXPathContextPtr ctxt ) ;
XMLPUBFUN xmlNodeSetPtr XMLCALL
xmlXPathNodeSetMerge ( xmlNodeSetPtr val1 ,
xmlNodeSetPtr val2 ) ;
XMLPUBFUN void XMLCALL
xmlXPathNodeSetDel ( xmlNodeSetPtr cur ,
xmlNodePtr val ) ;
XMLPUBFUN void XMLCALL
xmlXPathNodeSetRemove ( xmlNodeSetPtr cur ,
int val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathNewNodeSetList ( xmlNodeSetPtr val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapNodeSet ( xmlNodeSetPtr val ) ;
XMLPUBFUN xmlXPathObjectPtr XMLCALL
xmlXPathWrapExternal ( void * val ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN int XMLCALL xmlXPathEqualValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN int XMLCALL xmlXPathNotEqualValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN int XMLCALL xmlXPathCompareValues ( xmlXPathParserContextPtr ctxt , int inf , int strict ) ;
XMLPUBFUN void XMLCALL xmlXPathValueFlipSign ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL xmlXPathAddValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL xmlXPathSubValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL xmlXPathMultValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL xmlXPathDivValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN void XMLCALL xmlXPathModValues ( xmlXPathParserContextPtr ctxt ) ;
XMLPUBFUN int XMLCALL 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
*/
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
xmlNodePtr cur ) ;
2003-08-25 09:05:12 +00:00
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling ( xmlXPathParserContextPtr ctxt ,
2001-03-24 17:00:36 +00:00
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
*/
2003-08-25 09:05:12 +00:00
XMLPUBFUN void XMLCALL xmlXPathLastFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathPositionFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathCountFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathIdFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathStringFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathConcatFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathContainsFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathSubstringFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathTranslateFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathNotFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathTrueFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathFalseFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathLangFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathNumberFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathSumFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathFloorFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathCeilingFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathRoundFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
XMLPUBFUN void XMLCALL xmlXPathBooleanFunction ( xmlXPathParserContextPtr ctxt , int nargs ) ;
2002-06-04 04:27:06 +00:00
/**
* Really internal functions
*/
2003-08-25 09:05:12 +00:00
XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs ( xmlNsPtr ns ) ;
2002-06-04 04:27:06 +00:00
2001-02-23 17:55:21 +00:00
# ifdef __cplusplus
}
# endif
2004-06-27 12:08:10 +00:00
# endif /* LIBXML_XPATH_ENABLED */
2001-02-23 17:55:21 +00:00
# endif /* ! __XML_XPATH_INTERNALS_H__ */