Skip to content

Commit

Permalink
Config Param: Simplify code via constexpr if
Browse files Browse the repository at this point in the history
  • Loading branch information
Ghabry committed Dec 1, 2023
1 parent cd7b6b5 commit 018862a
Showing 1 changed file with 13 additions and 25 deletions.
38 changes: 13 additions & 25 deletions src/config_param.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class ConfigParamBase {
}

if (IsValid(value)) {
_value = std::move(value);
_value = value;
return true;
}
return false;
Expand Down Expand Up @@ -181,30 +181,19 @@ class ConfigParamBase {
/** @return human readable representation of the value for the settings scene */
virtual std::string ValueToString() const = 0;

template <typename U = T, typename std::enable_if<std::is_same<U, std::string>::value, int>::type = 0>
bool FromIni(const lcf::INIReader& ini) {
virtual bool FromIni(const lcf::INIReader& ini) {
// FIXME: Migrate IniReader to StringView (or std::string_view with C++17)
if (ini.HasValue(ToString(_config_section), ToString(_config_key))) {
Set(ini.GetString(ToString(_config_section), ToString(_config_key), T()));
return true;
}
return false;
}

template <typename U = T, typename std::enable_if<std::is_same<U, int>::value, int>::type = 0>
bool FromIni(const lcf::INIReader& ini) {
if (ini.HasValue(ToString(_config_section), ToString(_config_key))) {
Set(ini.GetInteger(ToString(_config_section), ToString(_config_key), T()));
return true;
}
return false;
}

template <typename U = T, typename std::enable_if<std::is_same<U, bool>::value, int>::type = 0>
bool FromIni(const lcf::INIReader& ini) {
if (ini.HasValue(ToString(_config_section), ToString(_config_key))) {
Set(ini.GetBoolean(ToString(_config_section), ToString(_config_key), T()));
return true;
if constexpr (std::is_same_v<T, std::string>) {
Set(ini.GetString(ToString(_config_section), ToString(_config_key), T()));
return true;
} else if constexpr (std::is_same_v<T, int>) {
Set(ini.GetInteger(ToString(_config_section), ToString(_config_key), T()));
return true;
} else if constexpr (std::is_same_v<T, bool>) {
Set(ini.GetBoolean(ToString(_config_section), ToString(_config_key), T()));
return true;
}
}
return false;
}
Expand Down Expand Up @@ -405,8 +394,7 @@ class EnumConfigParam : public ConfigParamBase<E> {
return false;
}

template <typename U = E, typename std::enable_if<std::is_same<U, E>::value, int>::type = 0>
bool FromIni(const lcf::INIReader& ini) {
bool FromIni(const lcf::INIReader& ini) override {
if (ini.HasValue(ToString(this->_config_section), ToString(this->_config_key))) {
std::string s = ini.GetString(ToString(this->_config_section), ToString(this->_config_key), std::string());
for (size_t i = 0; i < _tags.size(); ++i) {
Expand Down

0 comments on commit 018862a

Please sign in to comment.