lib_config
Configuration.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <map>
6 #include <memory>
7 #include <iostream>
8 
9 namespace libConfig
10 {
11 
13 {
14 public:
15  enum Type {
19  };
20 
21  virtual bool merge(std::shared_ptr<ConfigValue> other) = 0;
22 
23  const std::string &getName() const;
24  const Type &getType() const;
25 
26  void setName(const std::string &name);
27  void setCxxTypeName(const std::string &name);
28  const std::string &getCxxTypeName();
29 
30  virtual void print(std::ostream &stream, int level = 0) const = 0;
31 
32  virtual ~ConfigValue();
33 protected:
34  enum Type type;
35  std::string name;
36  //C++ type representation name
37  std::string cxxTypeName;
38  ConfigValue(enum Type);
39 };
40 
42 {
43 public:
44  SimpleConfigValue(const std::string &value);
45  virtual ~SimpleConfigValue();
46  virtual void print(std::ostream &stream, int level = 0) const;
47  virtual bool merge(std::shared_ptr<ConfigValue> other);
48 
49  const std::string &getValue() const;
50 private:
51  std::string value;
52 };
53 
55 {
56 public:
58  virtual ~ComplexConfigValue();
59  virtual void print(std::ostream &stream, int level = 0) const;
60  virtual bool merge(std::shared_ptr<ConfigValue> other);
61  const std::map<std::string, std::shared_ptr<ConfigValue>> &getValues() const;
62  void addValue(const std::string &name, std::shared_ptr<ConfigValue> value);
63 private:
64  std::map<std::string, std::shared_ptr<ConfigValue>> values;
65 };
66 
68 {
69 public:
71  virtual ~ArrayConfigValue();
72  virtual void print(std::ostream &stream, int level = 0) const;
73  virtual bool merge(std::shared_ptr<ConfigValue> other);
74  const std::vector<std::shared_ptr<ConfigValue> > getValues() const;
75  void addValue(std::shared_ptr<ConfigValue> value);
76 private:
77  std::vector<std::shared_ptr<ConfigValue> > values;
78 };
79 
81 {
82 public:
83  Configuration(const std::string &name);
84  ~Configuration();
85 
86  void print(std::ostream &stream = std::cout) const;
87  bool fillFromYaml(const std::string &yml);
88  bool merge(const Configuration &other);
89 
90  const std::string &getName() const;
91  const std::map<std::string, std::shared_ptr<ConfigValue> > &getValues() const;
92  void addValue(const std::string &name, std::shared_ptr<ConfigValue> value);
93 private:
94  std::string name;
95  std::map<std::string, std::shared_ptr<ConfigValue> > values;
96 };
97 
98 std::ostream& operator <<(std::ostream& stream, const Configuration &conf);
99 
100 }
Definition: Configuration.hpp:67
Type
Definition: Configuration.hpp:15
Definition: Configuration.hpp:16
Definition: Configuration.hpp:54
const std::string & getCxxTypeName()
Definition: Configuration.cpp:197
void setName(const std::string &name)
Definition: Configuration.cpp:187
ConfigValue(enum Type)
Definition: Configuration.cpp:167
const Type & getType() const
Definition: Configuration.cpp:177
Definition: Configuration.hpp:80
Definition: Configuration.hpp:17
virtual ~ConfigValue()
Definition: Configuration.cpp:172
std::ostream & operator<<(std::ostream &stream, const Configuration &conf)
Definition: Configuration.cpp:202
Definition: Configuration.hpp:41
Definition: Configuration.hpp:18
void setCxxTypeName(const std::string &name)
Definition: Configuration.cpp:192
std::string cxxTypeName
Definition: Configuration.hpp:37
virtual bool merge(std::shared_ptr< ConfigValue > other)=0
std::string getValue(const Typelib::Value &value)
Definition: TypelibConfiguration.cpp:46
virtual void print(std::ostream &stream, int level=0) const =0
std::string name
Definition: Configuration.hpp:35
const std::string & getName() const
Definition: Configuration.cpp:182
Definition: Bundle.hpp:7
Definition: Configuration.hpp:12
enum Type type
Definition: Configuration.hpp:34