📄 solarfilereader.h
字号:
#ifndef __SOLAR_FILE_READER_H__
#define __SOLAR_FILE_READER_H__
//=============================================================================================================================
/// 阿辆 胶农赋飘 颇老(txt)佬扁 困茄 parser : SolarFileReader class
/**
@author Kim Min Wook < taiyo@webzen.co.kr >
@since 2005. 1. 31
@remarks
- 扁粮狼 scriptRead狼 扁瓷 俺急魄
@note
- open mode : SEPERATOR_WHITESPACE
备盒磊绰 white space父 捞促.
- open mode : SEPERATOR_QUOTATIONMARKFORSTR
备盒磊绰 white space捞绊 巩磊凯篮 '"'蝶咳钎肺 钎矫茄促.
- 货肺款 窃荐 力累 : 蜡历 祈狼甫 困秦辑 : 2005.3.29
char * GetNextString();
float GetNextNumber();
@todo
- 决拜茄 巩过 坷幅 眉农, 粱歹 沥犬茄 鸥涝眉农啊 鞘夸 ex) 0.0.4(X), 0.f04(X)
- white space => 1003 0巩磊老鳖 34 5 7 : 老锭 '0巩磊老鳖'阑 箭磊肺 焊绰 滚弊!
@history
- 2005.2.24 : EOF狼 滚弊 荐沥
- 2005.4.12 : number狼 datatype float -> double
- string, number 备盒绝捞 肺流俊辑 舅酒辑 备盒秦辑 荤侩窍绰 葛靛 眠啊
- 2005.5.11 : case '+': 亲格 眠啊
- 2005.8.22 : Reset()窃荐 眠啊, 促矫 霉 困摹何磐 佬扁 困秦
- 2005.9.23 : CPackFile阑 捞侩秦 File阑 阂矾坷扁 困秦 OpenFileFromPack() 窃荐 眠啊
- 2005.9.26 : 坷流 俺青巩磊父 盒府磊肺 牢侥窍绰 SEPERATOR_ONLY_NEWLINE 鸥涝苞 _getNextTokenType_newline() 窃荐 眠啊
- 2005.9.27 : 后傍埃阑 盒府磊肺 荤侩窍绊 葛电 配奴阑 巩磊凯肺父 牢侥窍绰 SEPERATOR_WHITESPACE_ONLY_STRING 鸥涝苞 _getNextTokenType_whitespace_onlystring() 窃荐 眠啊
@usage
- 规过1
SolarFileReader sr;
sr.OpenFile( pszCalcCharFileName, SEPERATOR_QUOTATIONMARKFORSTR );
while( TOKEN_END != sr.GetNextTokenType() )
{
int iGetNumber = sr.GetTokenNumber();
sr.GetNextTokenType( TOKEN_STRING );
strncpy( pszCharName, sr.GetTokenString(), MAX_CHARNAME_LENGTH );
}
sr.CloseFile();
- 规过2
SolarFileReader sr;
sr.OpenFile( pszCalcCharFileName, SEPERATOR_QUOTATIONMARKFORSTR );
while( !sr.IsEOF() )
{
int iGetNumber = sr.GetNextNumber();
strncpy( pszCharName, sr.GetNextString(), MAX_CHARNAME_LENGTH );
}
sr.CloseFile();
*/
//=============================================================================================================================
#pragma once
enum eTOKEN_TYPE
{
TOKEN_ANYTYPE = -1,
TOKEN_ERROR = 0,
TOKEN_END,
TOKEN_NUMBER,
TOKEN_STRING,
TOKEN_EXTRA,
TOKEN_SLASH = '/',
TOKEN_ASTERISK = '*',
// white-space
TOKEN_SPACE = ' ',
TOKEN_NEWLINE = '\n',
TOKEN_CARRIAGERETURN = '\r',
TOKEN_TAB = '\t',
};
enum eSEPERATOR_MODE
{
SEPERATOR_ERROR = 0x00,
SEPERATOR_WHITESPACE = 0x01,
SEPERATOR_QUOTATIONMARKFORSTR = 0x02,
SEPERATOR_ONLY_NEWLINE = 0x03, // 箭磊, 巩磊, 傍归俊 包拌绝捞 公炼扒 new line 父阑 盒府磊肺 牢侥
SEPERATOR_WHITESPACE_ONLY_STRING = 0x04 // 傍归栏肺 盒府登绰 葛电 配奴篮 公炼扒 巩磊烙
};
namespace util
{
class SolarFileReader
{
enum
{
MAX_TOKEN_BUFFER_SIZE = 1024,
};
public:
SolarFileReader();
~SolarFileReader();
BOOL OpenFile( char * pszFileName, eSEPERATOR_MODE mode = SEPERATOR_WHITESPACE );
BOOL OpenFileFromPack( char * pszPackFileName, char * pszFileName, eSEPERATOR_MODE mode = SEPERATOR_WHITESPACE );
BOOL OpenBuffer( BYTE * pMemoryBuffer, DWORD dwBufferSize, eSEPERATOR_MODE mode = SEPERATOR_WHITESPACE );
VOID CloseBuffer();
VOID CloseFile();
eTOKEN_TYPE GetNextTokenType( eTOKEN_TYPE desireTokenType = TOKEN_ANYTYPE );
char * GetTokenString() { return m_pszTokenString; }
double GetTokenNumber() { return m_dTokenNumber; }
BOOL IsEOF();
char * GetNextString( eTOKEN_TYPE desireTokenType = TOKEN_STRING );
double GetNextNumber( eTOKEN_TYPE desireTokenType = TOKEN_NUMBER );
VOID Reset();
private:
VOID _clear();
char _getchar( DWORD * pPos = NULL );
char _getcurchar( DWORD * pPos = NULL );
VOID _rewind( int i , DWORD * pPos = NULL );
int _isspace( char c );
int _isnewline( char c );
BOOL _isnumber( char c );
eTOKEN_TYPE _getNextTokenType_whitespace( eTOKEN_TYPE desireTokenType );
eTOKEN_TYPE _getNextTokenType_quotationForStr( eTOKEN_TYPE desireTokenType );
eTOKEN_TYPE _getNextTokenType_newline( eTOKEN_TYPE desireTokenType );
eTOKEN_TYPE _getNextTokenType_whitespace_onlystring( eTOKEN_TYPE desireTokenType );
double m_dTokenNumber;
char m_pszTokenString[MAX_TOKEN_BUFFER_SIZE];
DWORD m_dwBufferPos;
DWORD m_dwBufferSize;
char * m_pszBuffer;
eSEPERATOR_MODE m_Mode;
};
} /// namespace util
//=======================================================================================================
class BaseParser
{
public :
BaseParser();
virtual ~BaseParser();
void SetPackFileName( char * pszPackFileName );
protected :
BOOL OpenFile( util::SolarFileReader & sr, char * pszFileName, eSEPERATOR_MODE mode );
private :
char m_pszPackFileName[MAX_PATH];
};
#endif // __SOLAR_FILE_READER_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -