00001 #ifndef DOMAIN_PARSER_H 00002 #define DOMAIN_PARSER_H 00003 00004 #include <QStringList> 00005 #include <string> 00006 #include <deque> 00007 using std::deque; 00008 00009 class DomainParser 00010 { 00011 public: 00012 DomainParser(); 00013 ~DomainParser(); 00014 00015 bool parse(const std::string & filename); 00016 00018 std::string getName() const { return _name; } 00019 00020 void dumpTree() const; 00021 00022 protected: 00024 00028 struct TreeItem { 00029 deque<TreeItem> items; 00030 std::string content; 00031 }; 00032 00034 TreeItem parseTreeItem(QStringList & tokens); 00035 00036 void parseContent(); 00037 00038 void dumpItem(const TreeItem & it, unsigned int indent) const; 00039 00040 protected: 00041 std::string _name; 00042 00043 TreeItem _parseTreeRoot; 00044 }; 00045 00046 #endif 00047