//********************************************************************************************************************************************* // // File: Parser.h // Author: Donald Drake // Purpose: Defines classes to support parsing tokens from a xml file #ifndef _PARSER_H #define _PARSER_H #include #undef CLASS_IMPORT_EXPORT #ifdef HHCTRL // define this only when building the HHCtrl DLL #define CLASS_IMPORT_EXPORT /**/ #else #ifdef HHSETUP // define this only when building the HHSetup DLL #define CLASS_IMPORT_EXPORT __declspec( dllexport ) #else #define CLASS_IMPORT_EXPORT __declspec( dllimport ) #endif #endif #define MAX_LINE_LEN 1024 #define F_OK 0 #define F_NOFILE 1 #define F_READ 2 #define F_WRITE 3 #define F_MEMORY 4 #define F_EOF 5 #define F_END 6 #define F_TAGMISSMATCH 7 #define F_MISSINGENDTAG 8 #define F_NOTFOUND 9 #define F_NOPARENT 10 #define F_NULL 11 #define F_NOTITLE 12 #define F_LOCATION 13 #define F_REFERENCED 14 #define F_DUPLICATE 15 #define F_DELETE 16 #define F_CLOSE 17 #define F_EXISTCHECK 19 class CParseXML { private: // data CHAR m_cCurToken[MAX_LINE_LEN]; CHAR m_cCurWord[MAX_LINE_LEN]; CHAR m_cCurBuffer[MAX_LINE_LEN]; FILE *m_fh; CHAR * m_pCurrentIndex; DWORD m_dwError; private: // functions DWORD Read(); DWORD SetError(DWORD dw) { m_dwError = dw; return m_dwError; } public: CParseXML() { m_fh = NULL; m_cCurBuffer[0] = '\0'; m_pCurrentIndex = NULL; m_dwError = F_OK; } ~CParseXML() { End(); } CHAR * GetFirstWord(CHAR *); CHAR * GetValue(CHAR *); DWORD Start(const CHAR *szFile); void End(); CHAR *GetToken(); DWORD GetError() { return m_dwError; } }; // class to support a FIFO queue of strings typedef struct fifo { CHAR *string; fifo *prev; } FIFO; class CLASS_IMPORT_EXPORT CFIFOString { private: FIFO *m_fifoTail; public: CFIFOString() { m_fifoTail = NULL; } ~CFIFOString(); void RemoveAll(); DWORD AddTail(CHAR *sz); DWORD GetTail(CHAR **sz); }; #endif