Config: Keep track of deleted keys

This allows deleted keys to be deleted from INIs properly.
This commit is contained in:
Léo Lam 2017-02-15 16:25:37 +01:00
parent b51c6023ba
commit 9c3265f1ef
2 changed files with 4 additions and 0 deletions

View File

@ -120,6 +120,8 @@ bool Section::Delete(const std::string& key)
return false; return false;
m_values.erase(it); m_values.erase(it);
m_deleted_keys.push_back(key);
m_dirty = true; m_dirty = true;
return true; return true;
} }

View File

@ -98,6 +98,7 @@ public:
virtual bool HasLines() const { return m_lines.size() > 0; } virtual bool HasLines() const { return m_lines.size() > 0; }
const std::string& GetName() const { return m_name; } const std::string& GetName() const { return m_name; }
const SectionValueMap& GetValues() const { return m_values; } const SectionValueMap& GetValues() const { return m_values; }
const std::vector<std::string>& GetDeletedKeys() const { return m_deleted_keys; }
bool IsDirty() const { return m_dirty; } bool IsDirty() const { return m_dirty; }
void ClearDirty() { m_dirty = false; } void ClearDirty() { m_dirty = false; }
protected: protected:
@ -109,6 +110,7 @@ protected:
static const std::string& NULL_STRING; static const std::string& NULL_STRING;
SectionValueMap m_values; SectionValueMap m_values;
std::vector<std::string> m_deleted_keys;
std::vector<std::string> m_lines; std::vector<std::string> m_lines;
}; };