ValueStorage.h
3.19 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//
// ValueStorage.h
// SteveMaggieCpp
//
// Created by Katarzyna Kalinowska-Górska on 13.06.2017.
//
//
#ifndef ValueStorage_h
#define ValueStorage_h
#include "json/document.h"
#include "SimpleValue.h"
class ValueStorage {
public:
static ValueStorage& getInstance()
{
static ValueStorage instance;
return instance;
};
static const std::string DefaultContainer;
std::string storeValue(const rapidjson::Value& value, const std::string& container = DefaultContainer);
void storeValueWithKey(const rapidjson::Value& value, const std::string& key, const std::string& container = DefaultContainer);
rapidjson::Value* getStoredValue(const std::string& key, const std::string& container = DefaultContainer);
void removeStoredValue(const std::string& key, const std::string& container = DefaultContainer);
void removeAllStoredValues(const std::string& container = "");
std::string storeFunction(std::function<void()> callback, const std::string& container = DefaultContainer);
void storeFunctionWithKey(std::function<void()> callback, const std::string& key, const std::string& container = DefaultContainer);
std::function<void()> getStoredFunction(const std::string& key, const std::string& container = DefaultContainer);
void runStoredFunction(const std::string& key, const std::string& container = DefaultContainer);
void runAndRemoveStoredFunction(const std::string& key, const std::string& container = DefaultContainer);
void removeStoredFunction(const std::string& key, const std::string& container = DefaultContainer);
void removeAllStoredFunctions(const std::string& container = "");
std::string storeSimpleValue(const SimpleValue& value, const std::string& container = DefaultContainer);
void storeSimpleValueWithKey(const SimpleValue& value, const std::string& key, const std::string& container = DefaultContainer);
SimpleValue* getStoredSimpleValue(const std::string& key, const std::string& container = DefaultContainer);
void removeStoredSimpleValue(const std::string&, const std::string& container = DefaultContainer);
void removeAllStoredSimpleValues(const std::string& container = "");
// if no container is provided, data from all containers (including the default container) will be cleared
void clearStoredData(const std::string& container = "");
protected:
ValueStorage()
{
_valueStorage = new rapidjson::Document();
};
~ValueStorage(){
this->clearStoredData();
delete _valueStorage;
};
std::map<std::string, int> _lastStoredKeyNumbers; // per container
const unsigned int _modulus = 10000;
rapidjson::Document* _valueStorage;
std::map<std::string, std::map<std::string, rapidjson::Value*>> _storedValues;
std::map<std::string, std::map<std::string, std::function<void()>>> _storedFunctions;
std::map<std::string, std::map<std::string, SimpleValue*>> _storedSimpleValues;
std::string generateNextKey(const std::string& container);
};
#endif /* ValueStorage_h */