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-files.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/database/database-files.cpp') diff --git a/src/database/database-files.cpp b/src/database/database-files.cpp index 00bc6d765..eff08de12 100644 --- a/src/database/database-files.cpp +++ b/src/database/database-files.cpp @@ -396,6 +396,26 @@ bool ModMetadataDatabaseFiles::getModEntries(const std::string &modname, StringM return true; } +bool ModMetadataDatabaseFiles::getModEntry(const std::string &modname, + const std::string &key, std::string *value) +{ + Json::Value *meta = getOrCreateJson(modname); + if (!meta) + return false; + + if (meta->isMember(key)) { + *value = (*meta)[key].asString(); + return true; + } + return false; +} + +bool ModMetadataDatabaseFiles::hasModEntry(const std::string &modname, const std::string &key) +{ + Json::Value *meta = getOrCreateJson(modname); + return meta && meta->isMember(key); +} + bool ModMetadataDatabaseFiles::setModEntry(const std::string &modname, const std::string &key, const std::string &value) { @@ -424,6 +444,17 @@ bool ModMetadataDatabaseFiles::removeModEntry(const std::string &modname, return false; } +bool ModMetadataDatabaseFiles::removeModEntries(const std::string &modname) +{ + Json::Value *meta = getOrCreateJson(modname); + if (!meta || meta->empty()) + return false; + + meta->clear(); + m_modified.insert(modname); + return true; +} + void ModMetadataDatabaseFiles::beginSave() { } -- cgit v1.2.3