23 #include <unordered_map>
63 ConfigItem(
const std::string& k,
const std::any& v,
ConfigType t,
bool req =
false,
const std::string& desc =
"")
71 std::function<void(
const std::string& key,
const std::any& old_value,
const std::any& new_value)>;
81 virtual std::any
get(
const std::string& key)
const = 0;
82 virtual std::any
get(
const std::string& key,
const std::any& default_value)
const = 0;
83 virtual bool has(
const std::string& key)
const = 0;
87 virtual bool remove(
const std::string& key) = 0;
108 virtual std::vector<std::string>
get_keys()
const = 0;
virtual bool load_from_file(const std::string &filepath)=0
virtual void register_validator(const std::string &key, std::function< ValidationResult(const std::any &)> validator)=0
virtual ~ConfigManagerInterface()=default
virtual ValidationResult validate() const =0
virtual void on_change(const std::string &key, ConfigChangeCallback callback)=0
virtual void remove_change_callback(const std::string &key)=0
virtual ValidationResult validate(const std::string &key) const =0
virtual std::any get(const std::string &key) const =0
virtual ValidationResult set(const std::string &key, const std::any &value)=0
virtual ConfigType get_type(const std::string &key) const =0
virtual bool has(const std::string &key) const =0
virtual bool is_required(const std::string &key) const =0
virtual std::any get(const std::string &key, const std::any &default_value) const =0
virtual std::vector< std::string > get_keys() const =0
virtual std::string get_description(const std::string &key) const =0
virtual bool remove(const std::string &key)=0
virtual void register_item(const ConfigItem &item)=0
virtual bool save_to_file(const std::string &filepath) const =0
std::function< void(const std::string &key, const std::any &old_value, const std::any &new_value)> ConfigChangeCallback
std::function< ValidationResult(const std::any &)> validator
ConfigItem(const std::string &k, const std::any &v, ConfigType t, bool req=false, const std::string &desc="")
static ValidationResult success()
std::string error_message
ValidationResult(bool valid=true, const std::string &error="")
static ValidationResult error(const std::string &msg)