X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmetadata.cpp;h=453ac1c9adc905d7193415ce588f321a0fb80fa5;hb=cef016d393959e989df259aeacd055fc702a55ca;hp=833735464a0c66557f98a9726ed6f2181c9732f5;hpb=91a9382c25328075d1a27593b22b0a75863951e1;p=dragonfireclient.git diff --git a/src/metadata.cpp b/src/metadata.cpp index 833735464..453ac1c9a 100644 --- a/src/metadata.cpp +++ b/src/metadata.cpp @@ -18,12 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "metadata.h" -#include "exceptions.h" -#include "gamedef.h" #include "log.h" -#include -#include "constants.h" // MAP_BLOCKSIZE -#include /* Metadata @@ -32,11 +27,12 @@ with this program; if not, write to the Free Software Foundation, Inc., void Metadata::clear() { m_stringvars.clear(); + m_modified = true; } bool Metadata::empty() const { - return m_stringvars.size() == 0; + return m_stringvars.empty(); } size_t Metadata::size() const @@ -54,10 +50,8 @@ bool Metadata::operator==(const Metadata &other) const if (size() != other.size()) return false; - for (StringMap::const_iterator it = m_stringvars.begin(); - it != m_stringvars.end(); ++it) { - if (!other.contains(it->first) || - other.getString(it->first) != it->second) + for (const auto &sv : m_stringvars) { + if (!other.contains(sv.first) || other.getString(sv.first) != sv.second) return false; } @@ -75,6 +69,18 @@ const std::string &Metadata::getString(const std::string &name, u16 recursion) c return resolveString(it->second, recursion); } +bool Metadata::getStringToRef( + const std::string &name, std::string &str, u16 recursion) const +{ + StringMap::const_iterator it = m_stringvars.find(name); + if (it == m_stringvars.end()) { + return false; + } + + str = resolveString(it->second, recursion); + return true; +} + /** * Sets var to name key in the metadata storage * @@ -95,6 +101,7 @@ bool Metadata::setString(const std::string &name, const std::string &var) } m_stringvars[name] = var; + m_modified = true; return true; } @@ -102,7 +109,7 @@ const std::string &Metadata::resolveString(const std::string &str, u16 recursion { if (recursion <= 1 && str.substr(0, 2) == "${" && str[str.length() - 1] == '}') { return getString(str.substr(2, str.length() - 3), recursion + 1); - } else { - return str; } + + return str; }