/* * Copyright (C) 2008-2009 Patrick Ohly */ #ifndef INCL_EVOLUTION_HASH_CONFIG_NODE # define INCL_EVOLUTION_HASH_CONFIG_NODE #include #include #include #include SE_BEGIN_CXX /** * Implements a ConfigNode with an in-memory hash table. */ class HashConfigNode : public ConfigNode { std::map m_props; const std::string m_name; public: /** * @param name a string for debugging and error reporting */ HashConfigNode(const std::string &name = "hash config node") : m_name(name) {} /* keep underlying methods visible; our own setProperty() would hide them */ using ConfigNode::setProperty; virtual string getName() const { return m_name; } virtual void flush() {} virtual string readProperty(const string &property) const { std::map::const_iterator it = m_props.find(property); if (it == m_props.end()) { return ""; } else { return it->second; } } virtual void setProperty(const string &property, const string &value, const string &comment = "", const string *defValue = NULL) { m_props[property] = value; } virtual void readProperties(std::map &props) const { props = m_props; } virtual void writeProperties(const PropsType &props) { m_props.insert(props.begin(), props.end()); } virtual void removeProperty(const std::string &property) { m_props.erase(property); } virtual bool exists() const { return true; } virtual void clear() { m_props.clear(); } }; SE_END_CXX #endif