diff --git a/Source/Core/Core/SysConf.cpp b/Source/Core/Core/SysConf.cpp index babbe1cc67..d9b3bb7907 100644 --- a/Source/Core/Core/SysConf.cpp +++ b/Source/Core/Core/SysConf.cpp @@ -227,29 +227,29 @@ void SysConf::AddEntry(Entry&& entry) m_entries.emplace_back(std::move(entry)); } -SysConf::Entry* SysConf::GetEntry(const std::string& key) +SysConf::Entry* SysConf::GetEntry(std::string_view key) { const auto iterator = std::find_if(m_entries.begin(), m_entries.end(), [&key](const auto& entry) { return entry.name == key; }); return iterator != m_entries.end() ? &*iterator : nullptr; } -const SysConf::Entry* SysConf::GetEntry(const std::string& key) const +const SysConf::Entry* SysConf::GetEntry(std::string_view key) const { const auto iterator = std::find_if(m_entries.begin(), m_entries.end(), [&key](const auto& entry) { return entry.name == key; }); return iterator != m_entries.end() ? &*iterator : nullptr; } -SysConf::Entry* SysConf::GetOrAddEntry(const std::string& key, Entry::Type type) +SysConf::Entry* SysConf::GetOrAddEntry(std::string_view key, Entry::Type type) { if (Entry* entry = GetEntry(key)) return entry; - AddEntry({type, key}); + AddEntry({type, std::string(key)}); return GetEntry(key); } -void SysConf::RemoveEntry(const std::string& key) +void SysConf::RemoveEntry(std::string_view key) { m_entries.erase(std::remove_if(m_entries.begin(), m_entries.end(), [&key](const auto& entry) { return entry.name == key; }), diff --git a/Source/Core/Core/SysConf.h b/Source/Core/Core/SysConf.h index 79de23e5c3..592046a085 100644 --- a/Source/Core/Core/SysConf.h +++ b/Source/Core/Core/SysConf.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "Common/Assert.h" @@ -75,20 +76,20 @@ public: }; void AddEntry(Entry&& entry); - Entry* GetEntry(const std::string& key); - const Entry* GetEntry(const std::string& key) const; - Entry* GetOrAddEntry(const std::string& key, Entry::Type type); - void RemoveEntry(const std::string& key); + Entry* GetEntry(std::string_view key); + const Entry* GetEntry(std::string_view key) const; + Entry* GetOrAddEntry(std::string_view key, Entry::Type type); + void RemoveEntry(std::string_view key); // Intended for use with the non array types. template - T GetData(const std::string& key, T default_value) const + T GetData(std::string_view key, T default_value) const { const Entry* entry = GetEntry(key); return entry ? entry->GetData(default_value) : default_value; } template - void SetData(const std::string& key, Entry::Type type, T value) + void SetData(std::string_view key, Entry::Type type, T value) { GetOrAddEntry(key, type)->SetData(value); }