--- a/src/settings.h Mon Jun 20 02:04:51 2022 +0300 +++ b/src/settings.h Mon Jun 20 16:43:56 2022 +0300 @@ -5,16 +5,11 @@ #include "libraries.h" #include "gl/common.h" -// SettingType - get type of setting by enumerator -template<typename> -struct SettingId{}; - -template<SettingId> +template<class> struct SettingInfo{}; #define SETTING(NAME, DEFVALUE) \ - namespace SettingIdTypes { class NAME; } \ - namespace Setting { constexpr SettingId<class NAME##_SettingType> NAME; } \ + namespace Setting { class NAME; } \ template<> \ struct SettingInfo<Setting::NAME> \ { \ @@ -51,21 +46,21 @@ // ----------------------------------------------------------------------------- #undef SETTING -template<SettingId X> +template<class X> using SettingType_t = typename SettingInfo<X>::type; static_assert(std::is_same_v<SettingType_t<Setting::DrawAxes>, bool>); -template<SettingId X> +template<class X> const char* settingName = SettingInfo<X>::name; -template<SettingId X> +template<class X> inline auto settingDefaultValue() { return SettingInfo<X>::defaultValue(); } // get() - get setting by enumerator -template<SettingId X> +template<class X> inline SettingType_t<X> setting() { static const QVariant defvariant = QVariant::fromValue(settingDefaultValue<X>()); @@ -74,7 +69,7 @@ } // setSetting() - set value of setting -template<SettingId X> +template<class X> inline void setSetting(const SettingType_t<X>& value) { if (value == settingDefaultValue<X>()) {