summaryrefslogtreecommitdiffstats
path: root/src/Common/ConfigManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/ConfigManager.h')
-rw-r--r--src/Common/ConfigManager.h32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/Common/ConfigManager.h b/src/Common/ConfigManager.h
index 8bb4c87..7fa781e 100644
--- a/src/Common/ConfigManager.h
+++ b/src/Common/ConfigManager.h
@@ -20,37 +20,41 @@
#ifndef MAD_COMMON_CONFIGMANAGER_H_
#define MAD_COMMON_CONFIGMANAGER_H_
+#include <set>
#include <string>
#include <vector>
-#include <memory>
namespace Mad {
namespace Common {
+class Configurable;
+
class ConfigManager {
private:
- static std::auto_ptr<ConfigManager> configManager;
+ static ConfigManager configManager;
- protected:
- ConfigManager() {
- initBackends();
- }
+ std::set<Configurable*> configurables;
+ bool finished;
- static void setConfigManager(std::auto_ptr<ConfigManager> configManager0) {
- configManager = configManager0;
- }
+ ConfigManager() : finished(false) {}
+
+ void handleConfigEntry(const std::vector<std::string>&, const std::vector<std::vector<std::string> >&);
- virtual bool parseLine(const std::vector<std::string> &section, const std::string &key, const std::string &value = std::string()) = 0;
+ public:
+ bool loadFile(const std::string &filename, bool finish = true);
- bool loadFile(const std::string &filename);
+ void registerConfigurable(Configurable *c) {
+ configurables.insert(c);
+ }
- void initBackends();
+ void unregisterConfigurable(Configurable *c) {
+ configurables.erase(c);
+ }
- public:
virtual ~ConfigManager() {}
static ConfigManager *getConfigManager() {
- return configManager.get();
+ return &configManager;
}
};