syncevolution/src/syncevo/HashConfigNode.h
2009-09-23 07:35:24 +02:00

50 lines
1.5 KiB
C++

/*
* Copyright (C) 2008-2009 Patrick Ohly <patrick.ohly@gmx.de>
*/
#ifndef INCL_EVOLUTION_HASH_CONFIG_NODE
# define INCL_EVOLUTION_HASH_CONFIG_NODE
#include "ConfigNode.h"
#include <string>
#include <map>
/**
* Implements a ConfigNode with an in-memory hash table.
*/
class HashConfigNode : public ConfigNode {
std::map<std::string, std::string> 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<std::string, std::string>::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<std::string, std::string> &props) const { props = m_props; }
virtual void removeProperty(const std::string &property) { m_props.erase(property); }
virtual bool exists() const { return true; }
};
#endif