83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include "KUIWnd.h"
|
|
#include "KTokenParser.h"
|
|
|
|
class KUIWndParseObject;
|
|
class KStream;
|
|
|
|
class KUIParser : public KTokenHandler
|
|
{
|
|
public:
|
|
KUIParser();
|
|
virtual ~KUIParser();
|
|
void Clear();
|
|
|
|
bool DoParsing(KStream& stream);
|
|
|
|
DWORD GetParseObjCount();
|
|
KUIWndParseObject* GetParseObject(DWORD dwIndex);
|
|
|
|
protected:
|
|
/// Called when Parser cannot find Token-match function.
|
|
virtual K_TOKEN_CALL void _OnNoTokenFound(DWORD dwStringPointer, DWORD dwLineCount,DWORD dwReserve1);
|
|
/// Called when Parser find special character. (dwCharType-> (KTOKEN_COMMAN, KTOKEN_ASSIGN, KTOKEN_OBRACKET, KTOKEN_CBRACKET) )
|
|
virtual K_TOKEN_CALL void _OnCharTokenFound(DWORD dwCharType, DWORD dwLineCount, DWORD dwReserve1);
|
|
/// Callend when Parser encounter end of stream.
|
|
virtual K_TOKEN_CALL void _OnTokenEnd();
|
|
virtual void _InitializeTokenMap();
|
|
|
|
K_TOKEN_CALL void _OnBeginToken(DWORD dwTokenID, DWORD dwLineCount,DWORD dwReserve1);
|
|
K_TOKEN_CALL void _OnEndToken(DWORD dwTokenID, DWORD dwLineCount,DWORD dwReserve1);
|
|
K_TOKEN_CALL void _OnPropetyToken(DWORD dwTokenID, DWORD dwLineCount,DWORD dwReserve1);
|
|
K_TOKEN_CALL void _OnGenWndCreate(DWORD dwTokenID, DWORD dwLineCount,DWORD dwReserve1);
|
|
|
|
void _DoAssign(LPCSTR lpszToken, DWORD dwLineCount);
|
|
|
|
void _CheckStageError(int nStage, DWORD dwLineNumber);
|
|
|
|
void _ErrMsgBox(LPCSTR lpszString, ...);
|
|
protected:
|
|
enum KSTAGE
|
|
{
|
|
KSTAGE_CONTROL_START = 0,
|
|
KSTAGE_CONTROL_CREATE = 1,
|
|
KSTAGE_CONTROL_PROPERTY = 2,
|
|
KSTAGE_CONTROL_ASSIGN = 3,
|
|
};
|
|
|
|
bool m_bErrorFound;
|
|
|
|
int m_nStage, m_nSubStage;
|
|
|
|
KUIWndParseObject* m_pParentObj;
|
|
KUIWND_CREATE_ARG m_CurrentArg;
|
|
|
|
std::vector<KUIWndParseObject*> m_vtParseObj;
|
|
|
|
};
|
|
|
|
/// Parse Object
|
|
class KUIWndParseObject
|
|
{
|
|
public:
|
|
KUIWndParseObject();
|
|
virtual ~KUIWndParseObject();
|
|
|
|
DWORD GetChildCount();
|
|
KUIWndParseObject* GetChildParseObj(DWORD dwIndex);
|
|
|
|
KUIWndParseObject* AddChildObj(const KUIWND_CREATE_ARG& arg);
|
|
|
|
const KUIWND_CREATE_ARG& GetCreateArg() const;
|
|
KUIWND_CREATE_ARG& GetCreateArg();
|
|
|
|
void SetCreateArg(const KUIWND_CREATE_ARG& arg);
|
|
protected:
|
|
KUIWND_CREATE_ARG m_CreateArg;
|
|
std::vector<KUIWndParseObject*> m_vtChildParseObj;
|
|
};
|
|
|
|
|
|
|