* Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
*/
-#ifndef PARSER_H
-#define PARSER_H
+#pragma once
#include <string>
#include <map>
-class ADMIN;
+namespace STG
+{
+struct Admin;
+}
class BASE_PARSER
{
public:
struct FACTORY
{
- virtual BASE_PARSER * create(const ADMIN & admin) = 0;
+ virtual ~FACTORY() {}
+ virtual BASE_PARSER * create(const STG::Admin & admin) = 0;
};
typedef std::map<std::string, FACTORY *> REGISTRY;
- BASE_PARSER(const ADMIN & admin, const std::string & t)
+ BASE_PARSER(const STG::Admin & admin, const std::string & t)
: m_currAdmin(admin),
m_depth(0),
- m_tag(t),
- m_done(false)
+ m_tag(t)
{}
virtual ~BASE_PARSER() {}
virtual int Start(void * data, const char * el, const char ** attr);
std::string GetOpenTag() const { return "<" + m_tag + ">"; }
std::string GetCloseTag() const { return "</" + m_tag + ">"; }
- bool IsDone() const { return m_done; }
-
protected:
BASE_PARSER(const BASE_PARSER & rvalue);
BASE_PARSER & operator=(const BASE_PARSER & rvalue);
- const ADMIN & m_currAdmin;
+ const STG::Admin & m_currAdmin;
size_t m_depth;
std::string m_answer;
std::string m_tag;
- bool m_done;
private:
virtual void CreateAnswer() = 0;
};
-
-#endif //PARSER_H