X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/df9f528d8ea5b3ba19bebcaf0324c3282edeffcc..c0e423f3a00da01cdcc994e973d0f04c7c956bae:/projects/stargazer/plugins/configuration/sgconfig/parser.h?ds=sidebyside diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser.h b/projects/stargazer/plugins/configuration/sgconfig/parser.h index 0cda75b6..4e4b9417 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser.h +++ b/projects/stargazer/plugins/configuration/sgconfig/parser.h @@ -22,6 +22,7 @@ #define PARSER_H #include +#include class ADMIN; @@ -30,13 +31,15 @@ class BASE_PARSER public: struct FACTORY { - virtual BASE_PARSER * create() = 0; + virtual BASE_PARSER * create(const ADMIN & admin) = 0; }; + typedef std::map REGISTRY; BASE_PARSER(const ADMIN & admin, const std::string & t) : m_currAdmin(admin), m_depth(0), - m_tag(t) + m_tag(t), + m_done(false) {} virtual ~BASE_PARSER() {} virtual int Start(void * data, const char * el, const char ** attr); @@ -47,6 +50,8 @@ class BASE_PARSER std::string GetOpenTag() const { return "<" + m_tag + ">"; } std::string GetCloseTag() const { return ""; } + bool IsDone() const { return m_done; } + protected: BASE_PARSER(const BASE_PARSER & rvalue); BASE_PARSER & operator=(const BASE_PARSER & rvalue); @@ -55,6 +60,7 @@ class BASE_PARSER size_t m_depth; std::string m_answer; std::string m_tag; + bool m_done; private: virtual void CreateAnswer() = 0;