ed
data_writer.h
Go to the documentation of this file.
1 #ifndef ERA_TUE_CONFIGURATION_WRITER_H_
2 #define ERA_TUE_CONFIGURATION_WRITER_H_
3 
4 #include "ed/io/data.h"
5 
6 #include <iostream>
7 
8 namespace ed
9 {
10 
11 namespace io
12 {
13 
15 {
16 
17 public:
18 
19  DataWriter(Data& cfg, const Node& n = Node()) : data_(cfg), n_current_(n)
20  {
21  if (data_.maps.empty())
22  {
25  n_current_.idx = 0;
27  }
28  }
29 
30  void setValue(const std::string& key, const Variant& value)
31  {
32  data_.values.push_back(value);
33  data_.maps[n_current_.idx][key] = Node(data_.values.size() - 1, VALUE);
34  }
35 
36  void writeGroup(const std::string& key)
37  {
40 
41  data_.maps[n_current_.idx][key] = Node(data_.maps.size() - 1, MAP);
42 
43  // Change current node to new group
44  n_current_.idx = data_.maps.size() - 1;
46  }
47 
48  void endGroup()
49  {
52  }
53 
54  void writeArray(const std::string& key)
55  {
56  data_.arrays.push_back(std::vector<Node>());
58 
59  data_.maps[n_current_.idx][key] = Node(data_.arrays.size() - 1, ARRAY);
60 
61  // Change current node to new array
62  n_current_.idx = data_.arrays.size() - 1;
64  }
65 
66  void endArray()
67  {
70  }
71 
72  bool addArrayItem()
73  {
74  if (n_current_.type != ARRAY)
75  return false;
76 
78 
81 
82  array.push_back(Node(data_.maps.size() - 1, MAP));
83 
84  n_current_.idx = data_.maps.size() - 1;
86  return true;
87  }
88 
89  bool endArrayItem()
90  {
93 
94  return true;
95  }
96 
97 private:
98 
101 
102 };
103 
104 }
105 
106 }
107 
108 #endif
std::string
ed::io::Data::array_parents
std::vector< unsigned int > array_parents
Definition: data.h:41
ed::io::ARRAY
@ ARRAY
Definition: data.h:20
ed::io::Data::map_parents
std::vector< unsigned int > map_parents
Definition: data.h:44
std::vector
ed::io::Data::values
std::vector< Variant > values
Definition: data.h:46
ed::io::DataWriter::endArray
void endArray()
Definition: data_writer.h:66
ed::io::VALUE
@ VALUE
Definition: data.h:22
ed::io::DataWriter::writeGroup
void writeGroup(const std::string &key)
Definition: data_writer.h:36
ed::io::MAP
@ MAP
Definition: data.h:21
ed::io::DataWriter::endArrayItem
bool endArrayItem()
Definition: data_writer.h:89
iostream
std::vector::push_back
T push_back(T... args)
ed::io::DataWriter::addArrayItem
bool addArrayItem()
Definition: data_writer.h:72
std::map
ed::io::Data::arrays
std::vector< std::vector< Node > > arrays
Definition: data.h:40
ed::io::Node::idx
unsigned int idx
Definition: data.h:32
ed::io::Node
Definition: data.h:27
ed::io::Variant
Definition: io/variant.h:15
ed::io::Data
Definition: data.h:38
ed::io::DataWriter::DataWriter
DataWriter(Data &cfg, const Node &n=Node())
Definition: data_writer.h:19
ed::io::Data::maps
std::vector< std::map< std::string, Node > > maps
Definition: data.h:43
ed::io::Node::type
NodeType type
Definition: data.h:33
data.h
ed::io::DataWriter::endGroup
void endGroup()
Definition: data_writer.h:48
ed::io::DataWriter::writeArray
void writeArray(const std::string &key)
Definition: data_writer.h:54
ed
Definition: convex_hull.h:8
ed::io::DataWriter::data_
Data & data_
Definition: data_writer.h:99
ed::io::DataWriter::setValue
void setValue(const std::string &key, const Variant &value)
Definition: data_writer.h:30
ed::io::DataWriter
Definition: data_writer.h:14
ed::io::DataWriter::n_current_
Node n_current_
Definition: data_writer.h:100