00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _ConfigParser_incl_
00020 #define _ConfigParser_incl_
00021
00022 #include <rel/VMap.h>
00023
00024 #include <iostream>
00025
00026
00027
00028
00029 extern "C"
00030 rel::OpaqueValue readFromFile(const rel::TypeStream *);
00031
00032
00033 namespace rel
00034 {
00035 class ConfigParserLexer;
00036
00037 class ConfigParser
00038 {
00039 public:
00040 ConfigParser(const SmartPtr<istream> &input);
00041 ConfigParser(const SmartPtr<istream> &input,
00042 ConfigParserLexer *lexer);
00043 virtual ~ConfigParser();
00044
00045 static VMapPtr readFromFile(const string &filePath);
00046
00047 VMapPtr parseStream();
00048
00049 VMapPtr getCurrentDir();
00050 void setCurrentDir(const VMapPtr &dir);
00051
00052
00053 virtual VMapPtr createNewDir();
00054
00055
00056 int lex(const char *&stringResult);
00057
00058 private:
00059 struct ConfigParserImpl *impl;
00060 };
00061
00062 }
00063
00064 #endif
00065