#ifndef CONFIGCONTAINER_H_ #define CONFIGCONTAINER_H_ #include namespace newsbeuter { struct configdata { enum configdata_type { INVALID, BOOL, INT, STR, PATH }; configdata(const std::string& v = "", configdata_type t = INVALID, bool m = false) : value(v), default_value(v), type(t), multi_option(m) { } std::string value; std::string default_value; configdata_type type; bool multi_option; }; class configcontainer : public config_action_handler { public: configcontainer(); virtual ~configcontainer(); void register_commands(configparser& cfgparser); virtual void handle_action(const std::string& action, const std::vector& params); virtual void dump_config(std::vector& config_output); bool get_configvalue_as_bool(const std::string& key); int get_configvalue_as_int(const std::string& key); std::string get_configvalue(const std::string& key); void set_configvalue(const std::string& key, const std::string& value); void reset_to_default(const std::string& key); void toggle(const std::string& key); std::vector get_suggestions(const std::string& fragment); private: std::map config_data; bool is_bool(const std::string& s); bool is_int(const std::string& s); }; } #endif /*CONFIGCONTAINER_H_*/