PDFxTMDLib  1.0.0
KeyValueStore.h
Go to the documentation of this file.
1 #pragma once
2 #include <map>
3 #include <optional>
4 #include <string>
5 #include <variant>
6 
7 namespace PDFxTMD
8 {
9 enum class Types
10 {
11  Int,
12  Float,
13  String
14 };
15 using StandardType = std::variant<int, float, std::string>;
16 using StandardTypeMap = std::map<std::string, StandardType>;
18 {
19  public:
20  void set(const std::string &key, const StandardType &value)
21  {
22  m_data[key] = value;
23  }
24  std::optional<StandardType> get(const std::string &key) const
25  {
26  if (!contains(key))
27  return std::nullopt;
28  return m_data.at(key);
29  }
30  bool contains(const std::string &key) const
31  {
32  auto foundKeyItr = m_data.find(key);
33  if (foundKeyItr == m_data.end())
34  return false;
35  return true;
36  }
37 
38  private:
39  StandardTypeMap m_data;
40 };
41 } // namespace PDFxTMD
Definition: KeyValueStore.h:18
std::optional< StandardType > get(const std::string &key) const
Definition: KeyValueStore.h:24
bool contains(const std::string &key) const
Definition: KeyValueStore.h:30
void set(const std::string &key, const StandardType &value)
Definition: KeyValueStore.h:20
Definition: AllFlavorsShape.h:14
std::map< std::string, StandardType > StandardTypeMap
Definition: KeyValueStore.h:16
std::variant< int, float, std::string > StandardType
Definition: KeyValueStore.h:15
Types
Definition: KeyValueStore.h:10