// scriptread.h #ifndef _PROGRAMCOMMON_WZSCRIPTREAD_H_ #define _PROGRAMCOMMON_WZSCRIPTREAD_H_ #include "discaccess.h" enum ENUM_TOKEN_TYPE { TT_ANYTYPE = -1, TT_ERROR = 0, TT_END, TT_NUMBER, TT_STRING, TT_COMMAND = '#', TT_GROUP_BEGIN = '{', TT_GROUP_END = '}', TT_COMMA = ',', TT_SEMICOLON = ';', }; //------------------------------------------------------------------------------ /** @class CScriptRead */ class CScriptRead { public: // »ý¼ºÀÚ/¼Ò¸êÀÚ CScriptRead( void ); ~CScriptRead( void ); // DiscAccess ¼³Á¤ void SetDiscAccess( CDiscAccess* pDiscAccess ); // »ý¼º(ÆÄÀÏ) BOOL Create( const char* lpszFileName ); // »ý¼º(¹öÆÛ·ÎºÎÅÍ) BOOL CreateFromBuffer( const char* pBuffer, int iBufferSize ); // Á¦°Å void Destroy( void ); // ÅäÅ« ¾ò±â(ƯÁ¤ ŸÀÔÀ» ¾ò¾î¾ß ÇÒ °æ¿ì ÀÎÀÚ¸¦ ³Ö´Â´Ù.) ENUM_TOKEN_TYPE GetToken( ENUM_TOKEN_TYPE ettTypeToGet = TT_ANYTYPE ); // ¹®ÀÚ¿­ ÅäÅ« ¾ò±â const char* GetTokenStringPtr( void ) const; // ¼ýÀÚ ÅäÅ« ¾ò±â float GetTokenNumber( void ) const; private: // µ¥ÀÌŸ ÃʱâÈ­ void Clear( void ); // ³»ºÎ DiscAccess »ý¼º/Á¦°Å void CreateDiscAccess( void ); void ReleaseDiscAccess( void ); // ¹ÙÀÌÆ® Çϳª ¾ò±â(´ÙÀ½ À§Ä¡·Î À̵¿) BYTE GetC( void ); // ÇöÀç À§Ä¡ÀÇ ¹ÙÀÌÆ® Çϳª ¾ò±â BYTE GetNext( void ) const; // ÀÌÀü À§Ä¡·Î À̵¿ void UnGet( void ); private: CDiscAccess* m_pDiscAccess; BOOL m_bDiscAccessGenerated; int m_iBufferSize; // ¹öÆÛ Å©±â BYTE* m_pbyBuffer; // ¹öÆÛ int m_iBufferPos; // ¹öÆÛ »óÀÇ À§Ä¡ char m_lpszTokenString[1024]; float m_fTokenNumber; }; //------------------------------------------------------------------------------ /** */ inline const char* CScriptRead::GetTokenStringPtr( void ) const { return m_lpszTokenString; } //------------------------------------------------------------------------------ /** */ inline float CScriptRead::GetTokenNumber( void ) const { return m_fTokenNumber; } //------------------------------------------------------------------------------ /** */ inline BYTE CScriptRead::GetC( void ) { return ( ( m_iBufferPos < m_iBufferSize ) ? m_pbyBuffer[m_iBufferPos++] : 0xFF ); } //------------------------------------------------------------------------------ /** */ inline BYTE CScriptRead::GetNext( void ) const { return ( ( m_iBufferPos < m_iBufferSize ) ? m_pbyBuffer[m_iBufferPos] : 0xFF ); } //------------------------------------------------------------------------------ /** */ inline void CScriptRead::UnGet( void ) { --m_iBufferPos; } #endif // _PROGRAMCOMMON_WZSCRIPTREAD_H_