| 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 |