⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpathinternals.h.svn-base

📁 这是一个用于解析xml文件的类库。使用这个类库
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
/* * 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 * * Copy: See Copyright for the status of this software. * * Author: Daniel Veillard */#ifndef __XML_XPATH_INTERNALS_H__#define __XML_XPATH_INTERNALS_H__#include <libxml/xmlversion.h>#include <libxml/xpath.h>#ifdef __cplusplusextern "C" {#endif/************************************************************************ *									* *			Helpers						* *									* ************************************************************************//* * Many of these macros may later turn into functions. They * shouldn't be used in #ifdef's preprocessor instructions. *//** * 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); }/** * xmlXPathSetArityError: * @ctxt:  an XPath parser context * * Raises an XPATH_INVALID_ARITY error. */#define xmlXPathSetArityError(ctxt)					\    xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)/** * xmlXPathSetTypeError: * @ctxt:  an XPath parser context * * Raises an XPATH_INVALID_TYPE error. */#define xmlXPathSetTypeError(ctxt)					\    xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)/** * xmlXPathGetError: * @ctxt:  an XPath parser context * * Get the error code of an XPath context. * * Returns the context error. */#define xmlXPathGetError(ctxt)	  ((ctxt)->error)/** * xmlXPathCheckError: * @ctxt:  an XPath parser context * * Check if an XPath error was raised. * * Returns true if an error has been raised, false otherwise. */#define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)/** * xmlXPathGetDocument: * @ctxt:  an XPath parser context * * Get the document of an XPath context. * * Returns the context document. */#define xmlXPathGetDocument(ctxt)	((ctxt)->context->doc)/** * xmlXPathGetContextNode: * @ctxt: an XPath parser context * * Get the context node of an XPath context. * * Returns the context node. */#define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)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);/** * xmlXPathReturnBoolean: * @ctxt:  an XPath parser context * @val:  a boolean * * Pushes the boolean @val on the context stack. */#define xmlXPathReturnBoolean(ctxt, val)				\    valuePush((ctxt), xmlXPathNewBoolean(val))/** * xmlXPathReturnTrue: * @ctxt:  an XPath parser context * * Pushes true on the context stack. */#define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)/** * xmlXPathReturnFalse: * @ctxt:  an XPath parser context * * Pushes false on the context stack. */#define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)/** * xmlXPathReturnNumber: * @ctxt:  an XPath parser context * @val:  a double * * Pushes the double @val on the context stack. */#define xmlXPathReturnNumber(ctxt, val)					\    valuePush((ctxt), xmlXPathNewFloat(val))/** * xmlXPathReturnString: * @ctxt:  an XPath parser context * @str:  a string * * Pushes the string @str on the context stack. */#define xmlXPathReturnString(ctxt, str)					\    valuePush((ctxt), xmlXPathWrapString(str))/** * xmlXPathReturnEmptyString: * @ctxt:  an XPath parser context * * Pushes an empty string on the stack. */#define xmlXPathReturnEmptyString(ctxt)					\    valuePush((ctxt), xmlXPathNewCString(""))/** * xmlXPathReturnNodeSet: * @ctxt:  an XPath parser context * @ns:  a node-set * * Pushes the node-set @ns on the context stack. */#define xmlXPathReturnNodeSet(ctxt, ns)					\    valuePush((ctxt), xmlXPathWrapNodeSet(ns))/** * xmlXPathReturnEmptyNodeSet: * @ctxt:  an XPath parser context * * Pushes an empty node-set on the context stack. */#define xmlXPathReturnEmptyNodeSet(ctxt)				\    valuePush((ctxt), xmlXPathNewNodeSet(NULL))/** * xmlXPathReturnExternal: * @ctxt:  an XPath parser context * @val:  user data * * Pushes user data on the context stack. */#define xmlXPathReturnExternal(ctxt, val)				\    valuePush((ctxt), xmlXPathWrapExternal(val))/** * xmlXPathStackIsNodeSet: * @ctxt: an XPath parser context * * Check if the current value on the XPath stack is a node set or * an XSLT value tree. * * Returns true if the current object on the stack is a node-set. */#define xmlXPathStackIsNodeSet(ctxt)					\    (((ctxt)->value != NULL)						\     && (((ctxt)->value->type == XPATH_NODESET)				\         || ((ctxt)->value->type == XPATH_XSLT_TREE)))/** * 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 * object. */#define xmlXPathStackIsExternal(ctxt)					\	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))/** * xmlXPathEmptyNodeSet: * @ns:  a node-set * * Empties a node-set. */#define xmlXPathEmptyNodeSet(ns)					\    { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }/** * CHECK_ERROR: * * Macro to return from the function if an XPath error was detected. */#define CHECK_ERROR							\    if (ctxt->error != XPATH_EXPRESSION_OK) return/** * CHECK_ERROR0: * * Macro to return 0 from the function if an XPath error was detected. */#define CHECK_ERROR0							\    if (ctxt->error != XPATH_EXPRESSION_OK) return(0)/** * XP_ERROR: * @X:  the error code * * Macro to raise an XPath error and return. */#define XP_ERROR(X)							\    { xmlXPathErr(ctxt, X); return; }/** * XP_ERROR0: * @X:  the error code * * Macro to raise an XPath error and return 0. */#define XP_ERROR0(X)							\    { xmlXPathErr(ctxt, X); return(0); }/** * CHECK_TYPE: * @typeval:  the XPath type * * Macro to check that the value on top of the XPath stack is of a given * type. */#define CHECK_TYPE(typeval)						\    if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\        XP_ERROR(XPATH_INVALID_TYPE)/** * CHECK_TYPE0: * @typeval:  the XPath type * * Macro to check that the value on top of the XPath stack is of a given * type. Return(0) in case of failure */#define CHECK_TYPE0(typeval)						\    if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\        XP_ERROR0(XPATH_INVALID_TYPE)/** * CHECK_ARITY: * @x:  the number of expected args * * Macro to check that the number of args passed to an XPath function matches. */#define CHECK_ARITY(x)							\    if (nargs != (x))							\        XP_ERROR(XPATH_INVALID_ARITY);/** * CAST_TO_STRING: * * Macro to try to cast the value on the top of the XPath stack to a string. */#define CAST_TO_STRING							\    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\        xmlXPathStringFunction(ctxt, 1);/** * CAST_TO_NUMBER: * * Macro to try to cast the value on the top of the XPath stack to a number. */#define CAST_TO_NUMBER							\    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\        xmlXPathNumberFunction(ctxt, 1);/** * CAST_TO_BOOLEAN: * * Macro to try to cast the value on the top of the XPath stack to a boolean. */#define CAST_TO_BOOLEAN							\    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\        xmlXPathBooleanFunction(ctxt, 1);/* * Variable Lookup forwarding. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -