From f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c Mon Sep 17 00:00:00 2001 From: Jude Melton-Houghton Date: Mon, 26 Sep 2022 17:03:43 -0400 Subject: Avoid duplication of mod metadata in memory (#12562) Co-authored-by: sfan5 --- src/database/database-dummy.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/database/database-dummy.cpp') diff --git a/src/database/database-dummy.cpp b/src/database/database-dummy.cpp index a44762d8a..ee88c6684 100644 --- a/src/database/database-dummy.cpp +++ b/src/database/database-dummy.cpp @@ -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 *res) { for (const auto &pair : m_mod_meta_database) { -- cgit v1.2.3