X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3886ef930e3fd54894b8798ab17ef4d3bc0b995a..9d093a68b5f3e5a22e243c92ec2e0bd24b10ea38:/projects/stargazer/plugins/configuration/sgconfig-ng/root_parser.h diff --git a/projects/stargazer/plugins/configuration/sgconfig-ng/root_parser.h b/projects/stargazer/plugins/configuration/sgconfig-ng/root_parser.h new file mode 100644 index 00000000..8d722e87 --- /dev/null +++ b/projects/stargazer/plugins/configuration/sgconfig-ng/root_parser.h @@ -0,0 +1,40 @@ +#ifndef __ROOT_PARSER_H__ +#define __ROOT_PARSER_H__ + +#include +#include + +#include "parser.h" + +class TARIFFS; +class USERS; +class ADMIN; +class SETTINGS; + +class ROOT_PARSER : public PARSER { + public: + ROOT_PARSER(const ADMIN * ca, TARIFFS * t, USERS * u, const SETTINGS * s); + ~ROOT_PARSER(); + + bool StartTag(const char * name, const char ** attr); + bool EndTag(const char * name); + const std::string & GetResult() const { return handlerResult; }; + + private: + TARIFFS * tariffs; + USERS * users; + const ADMIN * currAdmin; + const SETTINGS * settings; + + typedef std::map HMAP; + typedef HMAP::iterator HMAP_ITERATOR; + + HMAP handlers; + PARSER * handler; + int depth; + std::string handlerResult; + + bool Dispatch(const std::string & name); +}; + +#endif