diff options
Diffstat (limited to 'src/Common/ConfigManager.h')
-rw-r--r-- | src/Common/ConfigManager.h | 32 |
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> §ion, 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; } }; |