|
|
|
@ -75,7 +75,7 @@ public: |
|
|
|
*/ |
|
|
|
explicit BasicSetting(const Type& default_val, const std::string& name) |
|
|
|
: default_value{default_val}, global{default_val}, label{name} {} |
|
|
|
~BasicSetting() = default; |
|
|
|
virtual ~BasicSetting() = default; |
|
|
|
|
|
|
|
/** |
|
|
|
* Returns a reference to the setting's value. |
|
|
|
@ -161,7 +161,7 @@ public: |
|
|
|
explicit BasicRangedSetting(const Type& default_val, const Type& min_val, const Type& max_val, |
|
|
|
const std::string& name) |
|
|
|
: BasicSetting<Type>{default_val, name}, minimum{min_val}, maximum{max_val} {} |
|
|
|
~BasicRangedSetting() = default; |
|
|
|
virtual ~BasicRangedSetting() = default; |
|
|
|
|
|
|
|
/** |
|
|
|
* Like BasicSetting's SetValue, except value is clamped to the range of the setting. |
|
|
|
@ -208,7 +208,7 @@ public: |
|
|
|
*/ |
|
|
|
explicit Setting(const Type& default_val, const std::string& name) |
|
|
|
: BasicSetting<Type>(default_val, name) {} |
|
|
|
~Setting() = default; |
|
|
|
virtual ~Setting() = default; |
|
|
|
|
|
|
|
/** |
|
|
|
* Tells this setting to represent either the global or custom setting when other member |
|
|
|
@ -237,13 +237,13 @@ public: |
|
|
|
* |
|
|
|
* @returns The required value of the setting |
|
|
|
*/ |
|
|
|
[[nodiscard]] const Type& GetValue() const override { |
|
|
|
[[nodiscard]] virtual const Type& GetValue() const override { |
|
|
|
if (use_global) { |
|
|
|
return this->global; |
|
|
|
} |
|
|
|
return custom; |
|
|
|
} |
|
|
|
[[nodiscard]] const Type& GetValue(bool need_global) const { |
|
|
|
[[nodiscard]] virtual const Type& GetValue(bool need_global) const { |
|
|
|
if (use_global || need_global) { |
|
|
|
return this->global; |
|
|
|
} |
|
|
|
@ -286,7 +286,7 @@ public: |
|
|
|
* |
|
|
|
* @returns A reference to the current setting value |
|
|
|
*/ |
|
|
|
explicit operator const Type&() const override { |
|
|
|
virtual explicit operator const Type&() const override { |
|
|
|
if (use_global) { |
|
|
|
return this->global; |
|
|
|
} |
|
|
|
@ -318,7 +318,22 @@ public: |
|
|
|
: BasicSetting<Type>{default_val, name}, |
|
|
|
BasicRangedSetting<Type>{default_val, min_val, max_val, name}, Setting<Type>{default_val, |
|
|
|
name} {} |
|
|
|
~RangedSetting() = default; |
|
|
|
virtual ~RangedSetting() = default; |
|
|
|
|
|
|
|
// The following are needed to avoid a MSVC bug |
|
|
|
// (source: https://stackoverflow.com/questions/469508) |
|
|
|
[[nodiscard]] const Type& GetValue() const override { |
|
|
|
return Setting<Type>::GetValue(); |
|
|
|
} |
|
|
|
[[nodiscard]] const Type& GetValue(bool need_global) const override { |
|
|
|
return Setting<Type>::GetValue(need_global); |
|
|
|
} |
|
|
|
explicit operator const Type&() const override { |
|
|
|
if (this->use_global) { |
|
|
|
return this->global; |
|
|
|
} |
|
|
|
return this->custom; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Like BasicSetting's SetValue, except value is clamped to the range of the setting. Sets the |
|
|
|
|