SysConf: Return emplaced reference from AddEntry()

Allows GetOrAddEntry() to be implemented in a manner that doesn't result
in a redundant lookup in the event an addition needs to be made.
This commit is contained in:
Lioncash 2020-12-29 18:24:21 -05:00
parent 74224c94a7
commit 05094ab51f
2 changed files with 5 additions and 5 deletions

View File

@ -222,9 +222,9 @@ SysConf::Entry::Entry(Type type_, const std::string& name_, std::vector<u8> byte
{ {
} }
void SysConf::AddEntry(Entry&& entry) SysConf::Entry& SysConf::AddEntry(Entry&& entry)
{ {
m_entries.emplace_back(std::move(entry)); return m_entries.emplace_back(std::move(entry));
} }
SysConf::Entry* SysConf::GetEntry(std::string_view key) SysConf::Entry* SysConf::GetEntry(std::string_view key)
@ -245,8 +245,8 @@ SysConf::Entry* SysConf::GetOrAddEntry(std::string_view key, Entry::Type type)
{ {
if (Entry* entry = GetEntry(key)) if (Entry* entry = GetEntry(key))
return entry; return entry;
AddEntry({type, std::string(key)});
return GetEntry(key); return &AddEntry({type, std::string(key)});
} }
void SysConf::RemoveEntry(std::string_view key) void SysConf::RemoveEntry(std::string_view key)

View File

@ -75,7 +75,7 @@ public:
std::vector<u8> bytes; std::vector<u8> bytes;
}; };
void AddEntry(Entry&& entry); Entry& AddEntry(Entry&& entry);
Entry* GetEntry(std::string_view key); Entry* GetEntry(std::string_view key);
const Entry* GetEntry(std::string_view key) const; const Entry* GetEntry(std::string_view key) const;
Entry* GetOrAddEntry(std::string_view key, Entry::Type type); Entry* GetOrAddEntry(std::string_view key, Entry::Type type);