#ifndef __PSHAG_CIOWIN_HPP__ #define __PSHAG_CIOWIN_HPP__ #include <string> #include <memory> namespace urde { class CArchitectureMessage; class CArchitectureQueue; class CIOWin { std::string m_name; size_t m_nameHash; public: enum class EMessageReturn { Normal = 0, Exit = 1, RemoveIOWinAndExit = 2, RemoveIOWin = 3 }; virtual ~CIOWin() {} CIOWin(const char* name) : m_name(name) {m_nameHash = std::hash<std::string>()(m_name);} virtual EMessageReturn OnMessage(const CArchitectureMessage&, CArchitectureQueue&)=0; virtual bool GetIsContinueDraw() const {return true;} virtual void Draw() const {} virtual void PreDraw() const {} const std::string& GetName() const {return m_name;} size_t GetNameHash() const {return m_nameHash;} }; static bool operator==(std::shared_ptr<CIOWin> a, std::shared_ptr<CIOWin> b) { return a.get() == b.get(); } } #endif // __PSHAG_CIOWIN_HPP__