diff --git a/include/transport/config.h b/include/transport/config.h index 5d61e86b7daec88f57cd47ac83b89e5e33c6314c..2e0e77feed0040530d2c83d379d7c388c3be19b2 100644 --- a/include/transport/config.h +++ b/include/transport/config.h @@ -26,12 +26,28 @@ #include #include +#define CONFIG_STRING(PTR, KEY) (*PTR)[KEY].as() +#define CONFIG_INT(PTR, KEY) (*PTR)[KEY].as() +#define CONFIG_BOOL(PTR, KEY) (*PTR)[KEY].as() +#define CONFIG_LIST(PTR, KEY) (*PTR)[KEY].as >() + namespace Transport { - namespace Config { - typedef boost::program_options::variables_map Variables; - - bool load(const std::string &configfile, Variables &variables, boost::program_options::options_description &opts); - bool load(const std::string &configfile, Variables &variables); - - } + +typedef boost::program_options::variables_map Variables; + +class Config { + public: + Config() {} + virtual ~Config() {} + bool load(const std::string &configfile, boost::program_options::options_description &opts); + bool load(const std::string &configfile); + + const boost::program_options::variable_value &operator[] (const std::string &key) { + return m_variables[key]; + } + + private: + Variables m_variables; +}; + }