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

📄 exml.h

📁 samba最新软件
💻 H
字号:
/* *	exml.h -- Embedded Xml Parser header * *	Copyright (c) Mbedthis Software, LLC, 2003-2003. All Rights Reserved. -- MOB */ #ifndef _h_EXML#define _h_EXML 1/******************************** Description *********************************/#include	"mpr.h"/********************************** Defines ***********************************/#if BLD_FEATURE_SQUEEZE	#define	EXML_BUFSIZE		512			/* Read buffer size */#else	#define	EXML_BUFSIZE		1024		/* Read buffer size */#endif/* *	XML parser states. The states that are passed to the user handler have *	"U" appended to the comment. The error states (ERR and EOF) must be  *	negative. */ #define EXML_ERR				-1			/* Error */#define EXML_EOF				-2			/* End of input */#define EXML_BEGIN				1			/* Before next tag 				 */#define EXML_AFTER_LS			2			/* Seen "<" 					 */#define EXML_COMMENT			3			/* Seen "<!--" (usr) 		U	 */#define EXML_NEW_ELT			4			/* Seen "<tag" (usr) 		U	 */#define EXML_ATT_NAME			5			/* Seen "<tag att" 				 */#define EXML_ATT_EQ				6			/* Seen "<tag att" = 			 */#define EXML_NEW_ATT			7			/* Seen "<tag att = "val" 	U	 */#define EXML_SOLO_ELT_DEFINED	8			/* Seen "<tag../>" 			U	 */#define EXML_ELT_DEFINED		9			/* Seen "<tag...>" 			U	 */#define EXML_ELT_DATA			10			/* Seen "<tag>....<" 		U	 */#define EXML_END_ELT			11			/* Seen "<tag>....</tag>"	U	 */#define EXML_PI					12			/* Seen "<?processingInst" 	U	 */#define EXML_CDATA				13			/* Seen "<![CDATA["  		U	 *//* *	Lex tokens */ typedef enum ExmlToken {	TOKEN_ERR,	TOKEN_TOO_BIG,						/* Token is too big */	TOKEN_CDATA,	TOKEN_COMMENT,	TOKEN_INSTRUCTIONS,	TOKEN_LS,							/* "<" -- Opening a tag */	TOKEN_LS_SLASH,						/* "</" -- Closing a tag */	TOKEN_GR,							/* ">" -- End of an open tag */	TOKEN_SLASH_GR,						/* "/>" -- End of a solo tag */	TOKEN_TEXT,	TOKEN_EQ,	TOKEN_EOF,	TOKEN_SPACE,} ExmlToken;struct Exml;typedef int (*ExmlHandler)(struct Exml *xp, int state, 	const char *tagName, const char* attName, const char* value);typedef int (*ExmlInputStream)(struct Exml *xp, void *arg, char *buf, int size);/* *	Per XML session structure */ typedef struct Exml {	ExmlHandler		handler;		/* Callback function */	ExmlInputStream	readFn;			/* Read data function */	MprBuf			*inBuf;			/* Input data queue */	MprBuf			*tokBuf;		/* Parsed token buffer */	int				quoteChar;		/* XdbAtt quote char */	int				lineNumber;		/* Current line no for debug */	void 			*parseArg;		/* Arg passed to exmlParse() */	void 			*inputArg;		/* Arg passed to exmlSetInputStream() */	char			*errMsg;		/* Error message text */} Exml;extern Exml			*exmlOpen(MprCtx ctx, int initialSize, int maxSize);extern void			exmlClose(Exml *xp);extern void 		exmlSetParserHandler(Exml *xp, ExmlHandler h);extern void 		exmlSetInputStream(Exml *xp, ExmlInputStream s, void *arg);extern int 			exmlParse(Exml *xp);extern void			exmlSetParseArg(Exml *xp, void *parseArg);extern void			*exmlGetParseArg(Exml *xp);extern const char	*exmlGetErrorMsg(Exml *xp);extern int			exmlGetLineNumber(Exml *xp);/******************************************************************************/#endif /* _h_EXML */

⌨️ 快捷键说明

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