// -*- mode: c++; c-basic-offset: 2; -*- #ifndef CONFIG_HH #define CONFIG_HH #include class Config { public: virtual ~Config() { } static Config* create(); virtual bool load_name(std::string const& name) = 0; virtual bool load_file(std::string const& filename) = 0; virtual bool good() const = 0; virtual std::string const& last_error() const = 0; virtual std::string const& get(std::string const& key, std::string const& fallback) = 0; virtual char const* get(std::string const& key, char const* fallback) = 0; virtual bool get(std::string const& key, bool fallback) = 0; virtual bool is_set(std::string const& key) = 0; virtual void set(std::string const& key, std::string const& value) = 0; protected: Config() { } Config(Config const&) = delete; }; #endif // CONFIG_HH