#ifndef __UTILITY_INI_PARSER_H #define __UTILITY_INI_PARSER_H #pragma once //================================================================================================== // (History) // - 08.04.28, JsCho, Create // - 09.07.12, waverix, code rearrangement // note : »ó´çÈ÷ À§ÇèÇÑ ¹æ½ÄÀ¸·Î ÇÁ·Î±×·¡¹ÖÀÌ µÇ¾î ÀÖ´Ù. // ¹¹... Àû´çÈ÷ ÇØ°áÇÏ°í ³Ñ¾î°¡ÀÚ. // - 09.07.19, waverix, changes = { change interface 'GetData' } #include #include namespace util { // (WAVERIX) (090712) (REMOVED) ÀÌ·± ºñ»ó½ÄÀûÀÎ ÀÏÀ»... namespace ¾È¿¡ include´Â ... //#include //#include // (WAVERIX) (090712) (CHANGES) ÀÚ·áÇü º¯°æ + nested type, (ÀϺΠÀÛ¾÷ ¸ÅÅ©·ÎÁ¦°Å Â÷ º¯°æ) class INIParser { public: typedef std::map KEY_MAP; typedef std::map APP_MAP; static const DWORD INI_DATA_SIZE = 64; static const DWORD OverrunCheckMark = 0xDEADBEEF; enum INIToken { INI_TOKEN_END, INI_APP, INI_KEY, INI_ERROR, INI_SUCCESS }; INIParser(void); ~INIParser(void); bool OpenFile(const char* pszFileName, const char* pszPackFileName = NULL); bool SetBuffer(const char* pszBuffer, DWORD dwSize); bool INILoad(); void Release(); void Display(); // (WAVERIX) (090719) (CHANGES) const char* GetData(const char* pszApp, const char* pszKey) const; //bool GetData(const char* pszApp, const char* pszKey, std::string& OUT strData); private: INIToken GetToken(); char _getchar(); INIToken _skipComment(); INIToken _skipSpace(); void _undo_getchar(); bool _IsSpace(char ch); bool _IsCRLF(char ch); // (Fields) APP_MAP m_mapApp; // (Instant field) ... INIToken m_CurrentToken; char* m_pszBuffer; unsigned int m_dwBufferPos; unsigned int m_dwBufferSize; char m_szFileName[MAX_PATH]; //ÇöÀç ÅäÅ«ÀÇ µ¥ÀÌÅ͸¦ ÀúÀå. À̶ó°í ÇÑ´Ü´Ù... #pragma pack(push, 1) char m_szApp[INI_DATA_SIZE]; const DWORD overrun_checker_00_; char m_szKey[INI_DATA_SIZE]; const DWORD overrun_checker_01_; char m_szValue[INI_DATA_SIZE]; const DWORD overrun_checker_02_; #pragma pack(pop) __DISABLE_COPY(INIParser); }; }; //end of namespace 'util' #endif //__UTILITY_INI_PARSER_H