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:
parent
74224c94a7
commit
05094ab51f
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue