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
37 changed files with 527 additions and 272 deletions

View File

@@ -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()
{
}