blob: eb731ce0a1bd988172e86b56fdf7b4ccc45ad80d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/*
* Copyright (C) 2008-2009 Patrick Ohly <patrick.ohly@gmx.de>
*/
#ifndef INCL_EVOLUTION_HASH_CONFIG_NODE
# define INCL_EVOLUTION_HASH_CONFIG_NODE
#include <syncevo/ConfigNode.h>
#include <string>
#include <map>
#include <syncevo/declarations.h>
SE_BEGIN_CXX
/**
* 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 = nullptr) { m_props[property] = value; }
virtual void readProperties(std::map<std::string, std::string> &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
|