00001 #ifndef IONFLUX_TOOLS_CONFIG_MAP
00002 #define IONFLUX_TOOLS_CONFIG_MAP
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <pcre.h>
00030 #include <string>
00031 #include <iostream>
00032 #include <fstream>
00033 #include <map>
00034 #include <vector>
00035 #include "ionflux/Config.hpp"
00036
00037 namespace Ionflux
00038 {
00039
00040 namespace Tools
00041 {
00042
00048 class ConfigMap
00049 : public Config
00050 {
00051 protected:
00053 std::vector<std::string> configInput;
00055 std::string inputFile;
00057 std::map<std::string, std::string> config;
00059 std::vector<std::string> newKeys;
00061 pcre *configRE;
00063 pcre *commentRE;
00064
00070 virtual void init();
00071
00080 virtual ConfigOption parseConfigLine(const std::string& configLine);
00081
00088 virtual void updateInputData();
00089
00090 public:
00092 static const std::string CONFIG_PATTERN;
00094 static const std::string COMMENT_PATTERN;
00095
00100 ConfigMap();
00101
00106 virtual ~ConfigMap();
00107
00113 virtual void clear();
00114
00122 virtual void readConfig(const std::string& configFile);
00123
00131 virtual void writeConfig(const std::string& configFile);
00132
00138 virtual void writeConfig();
00139
00150 virtual std::string get(const std::string& key);
00151
00159 virtual void set(const std::string& key, const std::string& value);
00160
00161 };
00162
00163 }
00164
00165 }
00166
00170 #endif