00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONFIGFILEMANAGER_H
00020 #define CONFIGFILEMANAGER_H
00021
00022 #include <string>
00023 #include "istring.h"
00024 #include <vector>
00025
00026 class INIFile;
00027
00028 class ConfigFileManager
00029 {
00030 public:
00031 ConfigFileManager();
00032 ~ConfigFileManager();
00033
00034 static ConfigFileManager* get_instance() { return configfilemanager; }
00035
00041 bool readConfigFile(std::string fname, Pentagram::istring root,
00042 bool readonly=false);
00043 bool readConfigString(std::string config, Pentagram::istring root,
00044 bool readonly=false);
00045
00048 void write(Pentagram::istring root = c_empty_string);
00049
00051 void clear();
00052
00054 void clearRoot(Pentagram::istring root);
00055
00057 bool exists(Pentagram::istring key);
00058
00060 bool get(Pentagram::istring key,std::string &ret);
00062 bool get(Pentagram::istring key, int &ret);
00064 bool get(Pentagram::istring, bool &ret);
00065
00067 void set(Pentagram::istring key, std::string value);
00069 void set(Pentagram::istring key, const char* value);
00071 void set(Pentagram::istring key, int value);
00073 void set(Pentagram::istring key, bool value);
00074
00076 void unset(Pentagram::istring key);
00077
00083 std::vector<Pentagram::istring> listKeys(Pentagram::istring section,
00084 bool longformat = false);
00085
00090 std::vector<Pentagram::istring> listSections(Pentagram::istring root,
00091 bool longformat = false);
00092
00097 std::map<Pentagram::istring,std::string> listKeyValues(
00098 Pentagram::istring section, bool longformat = false);
00099
00100 private:
00101
00102 INIFile* findKeyINI(Pentagram::istring key);
00103 INIFile* findWriteINI(Pentagram::istring key);
00104
00105 std::vector<INIFile*> inifiles;
00106
00107 static ConfigFileManager* configfilemanager;
00108 };
00109
00110 #endif