aboutsummaryrefslogtreecommitdiff
path: root/src/content/mods.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/mods.cpp')
-rw-r--r--src/content/mods.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/content/mods.cpp b/src/content/mods.cpp
index cec6fc2cd..ef268055f 100644
--- a/src/content/mods.cpp
+++ b/src/content/mods.cpp
@@ -220,26 +220,34 @@ std::vector<ModSpec> flattenMods(const std::map<std::string, ModSpec> &mods)
ModMetadata::ModMetadata(const std::string &mod_name, ModMetadataDatabase *database):
m_mod_name(mod_name), m_database(database)
{
- m_database->getModEntries(m_mod_name, &m_stringvars);
}
void ModMetadata::clear()
{
- for (const auto &pair : m_stringvars) {
- m_database->removeModEntry(m_mod_name, pair.first);
- }
- Metadata::clear();
+ m_database->removeModEntries(m_mod_name);
+}
+
+bool ModMetadata::contains(const std::string &name) const
+{
+ return m_database->hasModEntry(m_mod_name, name);
}
bool ModMetadata::setString(const std::string &name, const std::string &var)
{
- if (Metadata::setString(name, var)) {
- if (var.empty()) {
- m_database->removeModEntry(m_mod_name, name);
- } else {
- m_database->setModEntry(m_mod_name, name, var);
- }
- return true;
- }
- return false;
+ if (var.empty())
+ return m_database->removeModEntry(m_mod_name, name);
+ else
+ return m_database->setModEntry(m_mod_name, name, var);
+}
+
+const StringMap &ModMetadata::getStrings(StringMap *place) const
+{
+ place->clear();
+ m_database->getModEntries(m_mod_name, place);
+ return *place;
+}
+
+const std::string *ModMetadata::getStringRaw(const std::string &name, std::string *place) const
+{
+ return m_database->getModEntry(m_mod_name, name, place) ? place : nullptr;
}