mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-14 15:51:29 +02:00
Config: Allow passing a DefaultState object to Set functions to delete keys.
This commit is contained in:
parent
137d1375d4
commit
ba1bf6959e
@ -100,32 +100,32 @@ LayerType GetActiveLayerForConfig(const Info<T>& info)
|
||||
return GetActiveLayerForConfig(info.GetLocation());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void Set(LayerType layer, const Info<T>& info, const std::common_type_t<T>& value)
|
||||
template <typename InfoT, typename ValueT>
|
||||
void Set(LayerType layer, const InfoT& info, const ValueT& value)
|
||||
{
|
||||
if (GetLayer(layer)->Set(info, value))
|
||||
OnConfigChanged();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SetBase(const Info<T>& info, const std::common_type_t<T>& value)
|
||||
template <typename InfoT, typename ValueT>
|
||||
void SetBase(const Info<InfoT>& info, const ValueT& value)
|
||||
{
|
||||
Set<T>(LayerType::Base, info, value);
|
||||
Set(LayerType::Base, info, value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SetCurrent(const Info<T>& info, const std::common_type_t<T>& value)
|
||||
template <typename InfoT, typename ValueT>
|
||||
void SetCurrent(const Info<InfoT>& info, const ValueT& value)
|
||||
{
|
||||
Set<T>(LayerType::CurrentRun, info, value);
|
||||
Set(LayerType::CurrentRun, info, value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SetBaseOrCurrent(const Info<T>& info, const std::common_type_t<T>& value)
|
||||
template <typename InfoT, typename ValueT>
|
||||
void SetBaseOrCurrent(const Info<InfoT>& info, const ValueT& value)
|
||||
{
|
||||
if (GetActiveLayerForConfig(info) == LayerType::Base)
|
||||
Set<T>(LayerType::Base, info, value);
|
||||
Set(LayerType::Base, info, value);
|
||||
else
|
||||
Set<T>(LayerType::CurrentRun, info, value);
|
||||
Set(LayerType::CurrentRun, info, value);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <vector>
|
||||
|
||||
#include "Common/Config/ConfigInfo.h"
|
||||
#include "Common/Config/Enums.h"
|
||||
@ -16,6 +15,12 @@
|
||||
|
||||
namespace Config
|
||||
{
|
||||
// Setting a key to an object of this type will delete the key.
|
||||
struct DefaultState
|
||||
{
|
||||
friend constexpr bool operator==(DefaultState, DefaultState) { return true; };
|
||||
};
|
||||
|
||||
namespace detail
|
||||
{
|
||||
template <typename T, std::enable_if_t<!std::is_enum<T>::value>* = nullptr>
|
||||
@ -116,12 +121,20 @@ public:
|
||||
return detail::TryParse<T>(*iter->second);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool Set(const Info<T>& config_info, DefaultState)
|
||||
{
|
||||
return DeleteKey(config_info.GetLocation());
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
bool Set(const Info<T>& config_info, const std::common_type_t<T>& value)
|
||||
{
|
||||
return Set(config_info.GetLocation(), value);
|
||||
}
|
||||
|
||||
bool Set(const Location& location, DefaultState) { return DeleteKey(location); }
|
||||
|
||||
template <typename T>
|
||||
bool Set(const Location& location, const T& value)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user