tue_config
test.cpp
Go to the documentation of this file.
1 #include <tue/config/reader.h>
2 #include <tue/config/writer.h>
3 #include <tue/config/data.h>
4 
6 
9 
11 
12 #include <iostream>
13 #include <sstream>
14 
15 // ----------------------------------------------------------------------------------------------------
16 
17 void test1()
18 {
19 }
20 
21 // ----------------------------------------------------------------------------------------------------
22 
24 {
25  double y;
26  if (config.value("y", y))
27  std::cout << "y = " << y << std::endl;
28 
29  // Try to move out of scope. This should not affect the caller.
30  config.endGroup();
31  config.endGroup();
32  config.endGroup();
33 }
34 
36 {
37  std::cout << "----- test2_foo -----" << std::endl;
39 
40  if (config.readGroup("parameters"))
41  {
43  config.endGroup();
44  }
45 
46  int v;
47  if (config.value("abc", v))
48  std::cout << "abc = " << v << std::endl;
49 
50  // Open it again accidentally, but forget to close
51  if (config.readGroup("parameters"))
52  std::cout << "Succesfully opened" << std::endl;
53 
55 
56  std::cout << "---------------------" << std::endl;
57 }
58 
59 void test2()
60 {
61  // Writing a config
63  config.setValue("main_value", 10);
64 
65  config.writeGroup("group1");
66 
67  config.setValue("abc", 123);
68  config.setValue("def", "bla");
69 
70  config.writeGroup("parameters");
71  config.setValue("x", 0.1);
72  config.setValue("y", 0.2);
73  config.setValue("z", 0.3);
74  config.endGroup();
75 
76  config.endGroup();
77 
79 
80  // Reading
81  if (config.readGroup("group1"))
82  {
84  config.endGroup();
85  }
86 
87  int main_value;
88  if (config.value("main_value", main_value))
89  std::cout << "main_value = " << main_value << std::endl;
90 }
91 
92 // ----------------------------------------------------------------------------------------------------
93 
94 void test3()
95 {
97  config.setValue("bla", 10);
98  config.writeArray("array");
99 
101  config.setValue("x", 1.2);
102  config.setValue("y", 3.4);
104 
106  config.setValue("foo", "abc");
107  config.setValue("bar", "def");
109 
110  config.endArray();
111 
112  std::cout << config << std::endl;
113 
114  config.readArray("array");
115  if (config.nextArrayItem())
116  std::cout << config << std::endl;
117  config.endArray();
118 
119  std::cout << config << std::endl;
120 }
121 
122 // ----------------------------------------------------------------------------------------------------
123 
124 void test4()
125 {
127  tue::config::Writer c1(cfg1);
128  c1.setValue("x", 1.2);
129  c1.setValue("y", 2.7);
130  c1.writeGroup("group1");
131  c1.writeGroup("group2");
132  c1.writeGroup("group3");
133  c1.endGroup(); // group 3
134 
135  c1.writeArray("array1");
136 
137  c1.addArrayItem();
138  c1.setValue("foo", 10);
139  c1.setValue("bar", "test");
140  c1.endArrayItem();
141 
142  c1.endArray();
143 
144  c1.writeArray("array2");
145  c1.addArrayItem();
146  c1.setValue("a", 1);
147  c1.setValue("b", 2);
148  c1.endArrayItem();
149  c1.endArray();
150 
151  c1.setValue("boo", "baa");
152  c1.endGroup(); // group 2
153  c1.endGroup(); // group 1
154 
155  std::cout << cfg1 << std::endl;
156 
157  // ---
158 
160  tue::config::Writer c2(cfg2);
161  c2.setValue("z", 4);
162  c2.writeGroup("group1");
163  c2.writeGroup("group2");
164  c2.writeGroup("group3");
165  c2.setValue("test", 123);
166  c2.endGroup();
167 
168  c2.writeArray("array1");
169  c2.addArrayItem();
170  c2.setValue("e", 7);
171  c2.setValue("f", 7);
172  c2.endArrayItem();
173 
174  c2.addArrayItem();
175  c2.setValue("L", 1);
176  c2.setValue("S", 2);
177  c2.endArrayItem();
178  c2.endArray();
179 
180  c2.endGroup();
181 
182  c2.endGroup();
183 
184  // ---
185 
186  std::cout << "-----" << std::endl;
187  std::cout << cfg2 << std::endl;
188 
189  cfg1.add(cfg2);
190 
191  std::cout << cfg1 << std::endl;
192 }
193 
194 // ----------------------------------------------------------------------------------------------------
195 
196 int main()
197 {
199  tue::config::Writer writer(cfg);
200 
201  std::cout << "Empty: " << cfg.empty() << std::endl;
202 
203  writer.setValue("x", 3.1);
204 
205  std::cout << "Empty: " << cfg.empty() << std::endl;
206 
207  writer.setValue("y", 4);
208 
209  writer.writeGroup("foo");
210  writer.setValue("bar", 5);
211  writer.setValue("bla", 7);
212 
213  writer.writeArray("array");
214 
215  writer.addArrayItem();
216  writer.setValue("x", 123);
217  writer.setValue("y", 567);
218  writer.endArrayItem();
219 
220  writer.addArrayItem();
221  writer.setValue("x", 456);
222  writer.setValue("y", 567);
223 
224  writer.writeArray("array2");
225 
226  writer.addArrayItem();
227  writer.setValue("foo", 1);
228  writer.setValue("bar", 2);
229  writer.endArrayItem();
230 
231  writer.endArray(); // end array2
232 
233  writer.endArrayItem();
234 
235  writer.endArray(); // end array
236 
237  writer.endGroup(); // end foo
238 
239 
240  // TODO: "z" is still not placed right!
241 
242  writer.setValue("z", 99);
243 
244  std::cout << "--------------------------------------------------" << std::endl;
245 
246  tue::config::YAMLEmitter emitter;
248  emitter.emit(cfg, ss);
249  std::cout << ss.str() << std::endl;
250 
251  std::cout << "--------------------------------------------------" << std::endl;
252 
253  {
254  tue::config::Reader reader(cfg);
255 
256  float x, y, z;
257  if (reader.value("x", x) && reader.value("y", y) && reader.value("z", z))
258  std::cout << "x = " << x << ", y = " << y << ", z = " << z << std::endl;
259 
260  reader.readGroup("foo");
261 
262  int bla;
263  reader.value("bla", bla);
264  std::cout << "bla = " << bla << std::endl;
265 
266  reader.readArray("array");
267  while(reader.nextArrayItem())
268  {
269  int x;
270  if (reader.value("x", x))
271  std::cout << " - x = " << x << std::endl;
272 
273  if (reader.readArray("array2"))
274  {
275  while(reader.nextArrayItem())
276  {
277  int bar;
278  if (reader.value("bar", bar))
279  std::cout << " array2.bar = " << bar << std::endl;
280  }
281  reader.endArray();
282  }
283  }
284 
285  reader.endArray();
286 
287  reader.value("bla", bla);
288  std::cout << "bla = " << bla << std::endl;
289 
290  if (reader.value("x", x) && reader.value("y", y) && reader.value("z", z))
291  std::cout << "x = " << x << ", y = " << y << ", z = " << z << std::endl;
292  }
293 
294  std::cout << "---------------------- TEST 2 ----------------------" << std::endl;
295  test2();
296  std::cout << "----------------------------------------------------" << std::endl;
297 
298  std::cout << "---------------------- TEST 3 ----------------------" << std::endl;
299  test3();
300  std::cout << "----------------------------------------------------" << std::endl;
301 
302  std::cout << "---------------------- TEST 4 ----------------------" << std::endl;
303  test4();
304  std::cout << "----------------------------------------------------" << std::endl;
305 
306 // tue::config::Configuration cfg2;
307 // tue::config::Writer bw(cfg2);
308 
310 
311  std::cout << "Begin" << std::endl;
312  bw.writeGroup("mesh");
313 
314  bw.writeArray("vertices");
315 
316  for(unsigned int i = 0; i < 10; ++i)
317  {
318  bw.nextArrayItem();
319  bw.setValue("x", 6);
320  bw.setValue("y", 5);
321  bw.setValue("z", 4);
322  }
323 
324  bw.end();
325  bw.end();
326 
327  std::cout << "Writing done" << std::endl;
328 
329 
330 // bw.print();
331 
332 
333  std::cout << bw.byte_size() << std::endl;
334 
336  br.read("mesh");
337  br.read("vertices");
338 
339  int i = 0;
340  while(br.next())
341  {
342  ++i;
343  int x, y, z;
344  if (br.value("x", y) && br.value("y", x) && br.value("z", z))
345  std::cout << i << ": " << x << ", " << y << ", " << z << std::endl;
346  }
347 
348  br.end();
349  br.end();
350 
351  std::cout << "Reading done" << std::endl;
352 
353  return 0;
354 }
sstream
tue::config::BinaryWriter::nextArrayItem
void nextArrayItem()
Definition: binary_writer.cpp:38
tue::config::Writer
Definition: writer.h:12
tue::config::Reader::nextArrayItem
bool nextArrayItem()
nextArrayItem go to the next item in the array, wrapping next() for readbility
Definition: reader.h:81
tue::config::BinaryWriter::setValue
void setValue(const std::string &name, int value)
Definition: binary_writer.cpp:50
tue::config::BinaryReader
Definition: binary_reader.h:12
tue::config::ReaderWriter::endArrayItem
bool endArrayItem()
endArrayItem go back to the array level
Definition: reader_writer.cpp:245
tue::config::Reader::value
bool value(const std::string &name, T &value, const RequiredOrOptional=REQUIRED) const
value read value of child with key 'name'
Definition: reader.h:33
test2
void test2()
Definition: test.cpp:59
binary_reader.h
tue::config::BinaryReader::value
bool value(const std::string &name, int &value)
Definition: binary_reader.cpp:70
tue::config::YAMLEmitter
Definition: yaml_emitter.h:16
tue::config::DataPointer
Definition: data_pointer.h:17
std::stringstream
tue::config::ReaderWriter::writeArray
bool writeArray(const std::string &name)
writeArray starts writing an array. Or start extending it, if it already exists.
Definition: reader_writer.cpp:202
iostream
tue::config::Writer::endArrayItem
bool endArrayItem()
endArrayItem go back to the array level
Definition: writer.h:87
tue::config::ReaderWriter::writeGroup
bool writeGroup(const std::string &name)
writeGroup starts writing a group. Or start extending it, if it already exists.
Definition: reader_writer.cpp:181
tue::config::ReaderWriter::addArrayItem
bool addArrayItem()
addArrayItem create a new item in the array
Definition: reader_writer.cpp:223
tue::config::ReaderWriter::readArray
bool readArray(const std::string &name, const RequiredOrOptional opt=OPTIONAL)
readArray read the child with key 'name', which should be an array
Definition: reader_writer.h:84
std::cout
tue::config::ReaderWriter
Definition: reader_writer.h:26
test3
void test3()
Definition: test.cpp:94
tue::config::Reader::readGroup
bool readGroup(const std::string &name, const RequiredOrOptional opt=OPTIONAL)
readGroup read the child with key 'name', which should be a group
Definition: reader.h:63
test1
void test1()
Definition: test.cpp:17
tue::config::ReaderWriter::toYAMLString
std::string toYAMLString() const
toYAMLString convert data (from current reading/writing point) to yaml string
Definition: reader_writer.cpp:257
tue::config::BinaryWriter::byte_size
unsigned int byte_size() const
Definition: binary_writer.h:31
tue::config::Reader
Definition: reader.h:16
tue::config::Writer::endGroup
bool endGroup()
endGroup go to the parrent of current group, wrapping end() for readbility
Definition: writer.h:81
main
int main()
Definition: test.cpp:196
tue::config::ReaderWriter::endGroup
bool endGroup()
endGroup go to the parrent of current group, wrapping end() for readbility
Definition: reader_writer.h:104
reader.h
tue::config::BinaryReader::end
bool end()
Definition: binary_reader.cpp:42
tue::config::BinaryWriter::dataPointer
const char * dataPointer() const
Definition: binary_writer.h:35
test2_foo
void test2_foo(tue::Configuration config)
Definition: test.cpp:35
tue::config::BinaryReader::next
bool next()
Definition: binary_reader.cpp:56
tue::config::ReaderWriter::endArray
bool endArray()
endArray go to parrent of current array, wrapping end() for readibility
Definition: reader_writer.h:98
tue::config::Writer::writeGroup
bool writeGroup(const std::string &name)
writeGroup starts writing a group. Or start extending it, if it already exists.
Definition: writer.cpp:40
tue::config::BinaryReader::read
bool read(const std::string &name)
Definition: binary_reader.cpp:23
tue::config::ReaderWriter::value
bool value(const std::string &name, T &value, RequiredOrOptional opt=REQUIRED)
value read value of child with key 'name'
Definition: reader_writer.h:47
tue::config::ReaderWriter::setValue
void setValue(const std::string &name, const T &value)
setValue set child value with key 'name' and value 'value'
Definition: reader_writer.h:155
tue::config::BinaryWriter::writeGroup
void writeGroup(const std::string &name)
Definition: binary_writer.cpp:24
std::endl
T endl(T... args)
tue::config::ReaderWriter::limitScope
ReaderWriter limitScope() const
limitScope Limit the data to the current position. All parents and siblings incl. their child aren't ...
Definition: reader_writer.cpp:113
tue::config::Writer::writeArray
bool writeArray(const std::string &name)
writeArray starts writing an array. Or start extending it, if it already exists.
Definition: writer.cpp:61
tue::config::YAMLEmitter::emit
void emit(const tue::config::DataConstPointer &cfg, std::ostream &out, const std::string &indent="")
Definition: yaml_emitter.cpp:64
data.h
tue::config::DataPointer::add
bool add(const DataConstPointer &ptr)
Definition: data_pointer.cpp:71
tue::config::ReaderWriter::readGroup
bool readGroup(const std::string &name, const RequiredOrOptional opt=OPTIONAL)
readGroup read the child with key 'name', which should be a group
Definition: reader_writer.h:92
configuration.h
tue::config::DataPointer::empty
bool empty() const
Definition: data_pointer.cpp:110
std::stringstream::str
T str(T... args)
tue::config::Reader::readArray
bool readArray(const std::string &name, const RequiredOrOptional opt=OPTIONAL)
readArray read the child with key 'name', which should be an array
Definition: reader.h:55
tue::config::Writer::endArray
bool endArray()
endArray go to parrent of current array, wrapping end() for readibility
Definition: writer.h:75
test2_bar
void test2_bar(tue::Configuration config)
Definition: test.cpp:23
tue::config::BinaryWriter::writeArray
void writeArray(const std::string &name)
Definition: binary_writer.cpp:31
tue::config::Writer::addArrayItem
bool addArrayItem()
addArrayItem create a new item in the array
Definition: writer.cpp:82
test4
void test4()
Definition: test.cpp:124
binary_writer.h
tue::config::BinaryWriter
Definition: binary_writer.h:12
tue::config::Reader::endArray
bool endArray()
endArray go to parrent of current array, wrapping end() for readibility
Definition: reader.h:69
tue::config::ReaderWriter::nextArrayItem
bool nextArrayItem()
nextArrayItem go to the next item in the array, wrapping next() for readbility
Definition: reader_writer.h:110
tue::config::Writer::setValue
void setValue(const std::string &name, const T &value)
setValue set child value with key 'name' and value 'value'
Definition: writer.h:49
tue::config::BinaryWriter::end
void end()
Definition: binary_writer.cpp:44
writer.h
config
tue::config::ReaderWriter config
Definition: sdf_gtest.cpp:9
yaml_emitter.h