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 46 class CParseXML { 47 private: 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; 54 private: 55 DWORD Read (); 56 DWORD SetError (DWORD dw) { m_dwError = dw; return m_dwError; } 57 public: 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 75 typedef struct fifo { 76 CHAR *string; 77 fifo *prev; 78 } FIFO; 79 80 class CLASS_IMPORT_EXPORT CFIFOString { 81 private: 82 FIFO *m_fifoTail; 83 public: 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