1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-27 15:04:36 +00:00

Tweak CachedSettingValue

* Add another constructor to save a call to proxyFunc when its not needed
  note that this call is a virtual function call
* Pass in proxyFunc by const reference
* Move get methods together
This commit is contained in:
Chocobo1 2017-05-14 15:21:43 +08:00
parent a2d5d48aff
commit 3fb8ff281f

View File

@ -40,8 +40,15 @@ class CachedSettingValue
using ProxyFunc = std::function<T (const T&)>;
public:
explicit CachedSettingValue(const char *keyName, const T &defaultValue = T()
, ProxyFunc proxyFunc = [](const T &value) { return value; })
explicit CachedSettingValue(const char *keyName, const T &defaultValue = T())
: m_keyName(QLatin1String(keyName))
, m_value(SettingsStorage::instance()->loadValue(
m_keyName, defaultValue).template value<T>())
{
}
explicit CachedSettingValue(const char *keyName, const T &defaultValue
, const ProxyFunc &proxyFunc)
: m_keyName(QLatin1String(keyName))
, m_value(proxyFunc(SettingsStorage::instance()->loadValue(
m_keyName, defaultValue).template value<T>()))
@ -53,6 +60,11 @@ public:
return m_value;
}
operator T() const
{
return value();
}
CachedSettingValue<T> &operator=(const T &newValue)
{
m_value = newValue;
@ -60,11 +72,6 @@ public:
return *this;
}
operator T() const
{
return value();
}
private:
const QString m_keyName;
T m_value;