mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-01 01:13:53 +00:00
Change Layer code not to create superfluous std::optional entries in LayerMap
This commit is contained in:
parent
cb4eecde52
commit
48a4b62125
@ -46,8 +46,14 @@ bool Layer::Exists(const ConfigLocation& location) const
|
|||||||
bool Layer::DeleteKey(const ConfigLocation& location)
|
bool Layer::DeleteKey(const ConfigLocation& location)
|
||||||
{
|
{
|
||||||
m_is_dirty = true;
|
m_is_dirty = true;
|
||||||
bool had_value = m_map[location].has_value();
|
bool had_value = false;
|
||||||
m_map[location].reset();
|
const auto iter = m_map.find(location);
|
||||||
|
if (iter != m_map.end() && iter->second.has_value())
|
||||||
|
{
|
||||||
|
iter->second.reset();
|
||||||
|
had_value = true;
|
||||||
|
}
|
||||||
|
|
||||||
return had_value;
|
return had_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,18 +103,18 @@ public:
|
|||||||
void DeleteAllKeys();
|
void DeleteAllKeys();
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T Get(const ConfigInfo<T>& config_info)
|
T Get(const ConfigInfo<T>& config_info) const
|
||||||
{
|
{
|
||||||
return Get<T>(config_info.location).value_or(config_info.default_value);
|
return Get<T>(config_info.location).value_or(config_info.default_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
std::optional<T> Get(const ConfigLocation& location)
|
std::optional<T> Get(const ConfigLocation& location) const
|
||||||
{
|
{
|
||||||
const std::optional<std::string>& str_value = m_map[location];
|
const auto iter = m_map.find(location);
|
||||||
if (!str_value)
|
if (iter == m_map.end() || !iter->second.has_value())
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
return detail::TryParse<T>(*str_value);
|
return detail::TryParse<T>(*iter->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -129,13 +129,13 @@ public:
|
|||||||
Set(location, ValueToString(value));
|
Set(location, ValueToString(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Set(const ConfigLocation& location, const std::string& new_value)
|
void Set(const ConfigLocation& location, std::string new_value)
|
||||||
{
|
{
|
||||||
std::optional<std::string>& current_value = m_map[location];
|
const auto iter = m_map.find(location);
|
||||||
if (current_value == new_value)
|
if (iter != m_map.end() && iter->second == new_value)
|
||||||
return;
|
return;
|
||||||
m_is_dirty = true;
|
m_is_dirty = true;
|
||||||
current_value = new_value;
|
m_map.insert_or_assign(location, std::move(new_value));
|
||||||
}
|
}
|
||||||
|
|
||||||
Section GetSection(System system, const std::string& section);
|
Section GetSection(System system, const std::string& section);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user