1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Avoid duplication of mod metadata in memory (#12562)

Co-authored-by: sfan5 <sfan5@live.de>
This commit is contained in:
Jude Melton-Houghton 2022-09-26 17:03:43 -04:00 committed by GitHub
parent 03428d9825
commit f4a01f3a5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 527 additions and 272 deletions

View file

@ -92,6 +92,32 @@ bool Database_Dummy::getModEntries(const std::string &modname, StringMap *storag
return true;
}
bool Database_Dummy::getModEntry(const std::string &modname,
const std::string &key, std::string *value)
{
auto mod_pair = m_mod_meta_database.find(modname);
if (mod_pair == m_mod_meta_database.end())
return false;
const StringMap &meta = mod_pair->second;
auto pair = meta.find(key);
if (pair != meta.end()) {
*value = pair->second;
return true;
}
return false;
}
bool Database_Dummy::hasModEntry(const std::string &modname, const std::string &key)
{
auto mod_pair = m_mod_meta_database.find(modname);
if (mod_pair == m_mod_meta_database.end())
return false;
const StringMap &meta = mod_pair->second;
return meta.find(key) != meta.cend();
}
bool Database_Dummy::setModEntry(const std::string &modname,
const std::string &key, const std::string &value)
{
@ -112,6 +138,16 @@ bool Database_Dummy::removeModEntry(const std::string &modname, const std::strin
return false;
}
bool Database_Dummy::removeModEntries(const std::string &modname)
{
auto mod_pair = m_mod_meta_database.find(modname);
if (mod_pair != m_mod_meta_database.end() && !mod_pair->second.empty()) {
mod_pair->second.clear();
return true;
}
return false;
}
void Database_Dummy::listMods(std::vector<std::string> *res)
{
for (const auto &pair : m_mod_meta_database) {