1/** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6#ifndef _PARSER_H 7#define _PARSER_H 8 9#include <winapifamily.h> 10 11#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 12#include <stdio.h> 13 14#undef CLASS_IMPORT_EXPORT 15#ifdef HHCTRL 16#define CLASS_IMPORT_EXPORT 17#elif defined (HHSETUP) 18#define CLASS_IMPORT_EXPORT __declspec (dllexport) 19#else 20#define CLASS_IMPORT_EXPORT __declspec (dllimport) 21#endif 22 23#define PARSER_API_INLINE 24#define MAX_LINE_LEN 1024 25 26#define F_OK 0 27#define F_NOFILE 1 28#define F_READ 2 29#define F_WRITE 3 30#define F_MEMORY 4 31#define F_EOF 5 32#define F_END 6 33#define F_TAGMISSMATCH 7 34#define F_MISSINGENDTAG 8 35#define F_NOTFOUND 9 36#define F_NOPARENT 10 37#define F_NULL 11 38#define F_NOTITLE 12 39#define F_LOCATION 13 40#define F_REFERENCED 14 41#define F_DUPLICATE 15 42#define F_DELETE 16 43#define F_CLOSE 17 44#define F_EXISTCHECK 19 45 46class CParseXML { 47private: 48 CHAR m_cCurToken[MAX_LINE_LEN]; 49 CHAR m_cCurWord[MAX_LINE_LEN]; 50 CHAR m_cCurBuffer[MAX_LINE_LEN]; 51 FILE *m_fh; 52 CHAR *m_pCurrentIndex; 53 DWORD m_dwError; 54private: 55 DWORD Read (); 56 DWORD SetError (DWORD dw) { m_dwError = dw; return m_dwError; } 57public: 58 CParseXML () { 59 m_fh = NULL; 60 m_cCurBuffer[0] = '\0'; 61 m_pCurrentIndex = NULL; 62 m_dwError = F_OK; 63 } 64 ~CParseXML () { 65 End (); 66 } 67 CHAR *GetFirstWord (CHAR *); 68 CHAR *GetValue (CHAR *); 69 DWORD Start (const CHAR *szFile); 70 void End (); 71 CHAR *GetToken (); 72 DWORD GetError () { return m_dwError; } 73}; 74 75typedef struct fifo { 76 CHAR *string; 77 fifo *prev; 78} FIFO; 79 80class CLASS_IMPORT_EXPORT CFIFOString { 81private: 82 FIFO *m_fifoTail; 83public: 84 CFIFOString () { m_fifoTail = NULL; } 85 ~CFIFOString (); 86 void RemoveAll (); 87 DWORD AddTail (CHAR *sz); 88 DWORD GetTail (PZPSTR sz); 89}; 90#endif 91 92#endif 93