diff options
Diffstat (limited to 'options')
-rw-r--r-- | options/base-value.cpp | 4 | ||||
-rw-r--r-- | options/bundle.cpp | 19 | ||||
-rw-r--r-- | options/bundle.hpp | 51 | ||||
-rw-r--r-- | options/connector.cpp | 7 | ||||
-rw-r--r-- | options/connector.hpp | 9 | ||||
-rw-r--r-- | options/defs.hpp | 5 | ||||
-rw-r--r-- | options/slider.cpp | 15 | ||||
-rw-r--r-- | options/slider.hpp | 2 | ||||
-rw-r--r-- | options/value-traits.hpp | 7 |
9 files changed, 67 insertions, 52 deletions
diff --git a/options/base-value.cpp b/options/base-value.cpp index dbeabbea..d900ad0f 100644 --- a/options/base-value.cpp +++ b/options/base-value.cpp @@ -26,8 +26,7 @@ void value_::store(const QVariant& datum) b->store_kv(self_name, datum); } -namespace options { -namespace detail { +namespace options::detail { void set_base_value_to_default(value_* val) { @@ -35,5 +34,4 @@ void set_base_value_to_default(value_* val) } } // ns options::detail -} // ns options diff --git a/options/bundle.cpp b/options/bundle.cpp index e0db3fb3..b722338b 100644 --- a/options/bundle.cpp +++ b/options/bundle.cpp @@ -14,10 +14,7 @@ using options::value_; -namespace options -{ - -namespace detail { +namespace options::detail { bundle::bundle(const QString& group_name) : mtx(QMutex::Recursive), @@ -152,7 +149,7 @@ void bundler::after_profile_changed_() void bundler::refresh_all_bundles() { - singleton().after_profile_changed_(); + bundler_singleton().after_profile_changed_(); } bundler::bundler() : implsgl_mtx(QMutex::Recursive) @@ -164,7 +161,7 @@ bundler::~bundler() //qDebug() << "exit: bundle singleton"; } -std::shared_ptr<bundler::v> bundler::make_bundle(const bundler::k& key) +std::shared_ptr<bundler::v> bundler::make_bundle_(const bundler::k& key) { QMutexLocker l(&implsgl_mtx); @@ -193,7 +190,7 @@ std::shared_ptr<bundler::v> bundler::make_bundle(const bundler::k& key) return shr; } -OTR_OPTIONS_EXPORT bundler& singleton() +bundler& bundler::bundler_singleton() { static bundler ret; return ret; @@ -201,14 +198,16 @@ OTR_OPTIONS_EXPORT bundler& singleton() QMutex* bundle::get_mtx() const { return mtx; } -} // end options::detail +} // ns options::detail + +namespace options { OTR_OPTIONS_EXPORT std::shared_ptr<bundle_> make_bundle(const QString& name) { if (name.size()) - return detail::singleton().make_bundle(name); + return detail::bundler::bundler_singleton().make_bundle_(name); else return std::make_shared<bundle_>(QString()); } -} // end options +} // ns options diff --git a/options/bundle.hpp b/options/bundle.hpp index 98e194db..a12a335c 100644 --- a/options/bundle.hpp +++ b/options/bundle.hpp @@ -27,11 +27,17 @@ #include "export.hpp" -namespace options { +namespace options::detail { + class bundle; +} // ns options::detail -namespace detail { +namespace options { + using bundle_ = detail::bundle; + using bundle = std::shared_ptr<bundle_>; + OTR_OPTIONS_EXPORT std::shared_ptr<detail::bundle> make_bundle(const QString& name); +} // ns options -void set_base_value_to_default(value_* val); +namespace options::detail { struct bundler; @@ -52,17 +58,18 @@ private: group saved; group transient; +signals: + void reloading(); + void saving() const; + void changed() const; + +public: bundle(const bundle&) = delete; bundle(bundle&&) = delete; bundle& operator=(bundle&&) = delete; bundle& operator=(const bundle&) = delete; QMutex* get_mtx() const override; -signals: - void reloading(); - void saving() const; - void changed() const; -public: cc_noinline bundle(const QString& group_name); cc_noinline ~bundle() override; QString name() const { return group_name; } @@ -82,32 +89,34 @@ public slots: void set_all_to_default(); }; -OTR_OPTIONS_EXPORT bundler& singleton(); - -struct OTR_OPTIONS_EXPORT bundler +struct OTR_OPTIONS_EXPORT bundler final { -public: using k = QString; using v = bundle; using weak = std::weak_ptr<v>; using shared = std::shared_ptr<v>; + private: QMutex implsgl_mtx; std::map<k, weak> implsgl_data; void after_profile_changed_(); + public: + static void refresh_all_bundles(); + +private: + friend OTR_OPTIONS_EXPORT + std::shared_ptr<v> options::make_bundle(const QString& name); + + std::shared_ptr<v> make_bundle_(const k& key); + + static bundler& bundler_singleton(); + bundler(); ~bundler(); - std::shared_ptr<v> make_bundle(const k& key); - static void refresh_all_bundles(); }; -OTR_OPTIONS_EXPORT bundler& singleton(); -} // ns options::detail - -using bundle_ = detail::bundle; -using bundle = std::shared_ptr<bundle_>; +void set_base_value_to_default(value_* val); -OTR_OPTIONS_EXPORT std::shared_ptr<bundle_> make_bundle(const QString& name); +} // ns options::detail -} // ns options diff --git a/options/connector.cpp b/options/connector.cpp index 2d039ccf..0efac8f1 100644 --- a/options/connector.cpp +++ b/options/connector.cpp @@ -11,8 +11,7 @@ #include <utility> -namespace options { -namespace detail { +namespace options::detail { static bool generic_is_equal(const QVariant& val1, const QVariant& val2) { @@ -129,6 +128,4 @@ connector::connector() { } -} - -} +} // ns options::detail diff --git a/options/connector.hpp b/options/connector.hpp index 68e86096..26812e7f 100644 --- a/options/connector.hpp +++ b/options/connector.hpp @@ -21,10 +21,10 @@ #include "export.hpp" namespace options { + class value_; +} -class value_; - -namespace detail { +namespace options::detail { class OTR_OPTIONS_EXPORT connector { @@ -67,5 +67,4 @@ public: connector& operator=(connector&&) = default; }; -} // ns detail -} // ns options +} // ns options::detail diff --git a/options/defs.hpp b/options/defs.hpp index 58846cc3..2467a7a0 100644 --- a/options/defs.hpp +++ b/options/defs.hpp @@ -24,8 +24,7 @@ #define OPENTRACK_DEFINE_METATYPE(t) OPENTRACK_DEFINE_METATYPE2(t, __COUNTER__) -namespace options { -namespace detail { +namespace options::detail { struct custom_type_initializer final { @@ -39,4 +38,4 @@ struct custom_type_initializer final }; } // ns options::detail -} // ns options + diff --git a/options/slider.cpp b/options/slider.cpp index 4f4124c6..56d9ba16 100644 --- a/options/slider.cpp +++ b/options/slider.cpp @@ -24,8 +24,21 @@ slider_value::slider_value(double cur, double min, double max) : cur_ = min_; } -slider_value::slider_value(const slider_value& v) : slider_value(v.cur(), v.min(), v.max()) +slider_value& slider_value::operator=(const slider_value& v) { + if (this != &v) + { + cur_ = v.cur(); + min_ = v.min(); + max_ = v.max(); + } + + return *this; +} + +slider_value::slider_value(const slider_value& v) +{ + *this = v; } slider_value::slider_value() : slider_value(0, 0, 0) diff --git a/options/slider.hpp b/options/slider.hpp index 6c9c5a23..360c85b8 100644 --- a/options/slider.hpp +++ b/options/slider.hpp @@ -40,6 +40,8 @@ namespace options return t(cur_); } + slider_value& operator=(const slider_value& v); + slider_value(const slider_value& v); slider_value(); bool operator==(const slider_value& v) const; diff --git a/options/value-traits.hpp b/options/value-traits.hpp index 0b30248e..b507874c 100644 --- a/options/value-traits.hpp +++ b/options/value-traits.hpp @@ -8,8 +8,7 @@ #include <type_traits> -namespace options { -namespace detail { +namespace options::detail { template<typename t, typename u = t, typename Enable = void> struct default_value_traits @@ -49,5 +48,5 @@ struct value_traits<float> : public default_value_traits<float, double, void> { }; -} // ns detail -} // ns options +} // ns options::detail + |