Files
2026-06-01 12:46:52 +02:00

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