Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
JPrinter.hh
Go to the documentation of this file.
1#ifndef __JSON__JPRINTER__
2#define __JSON__JPRINTER__
3
4#include <ostream>
5#include <iomanip>
6
7#include "JSon/JSon.hh"
8
9
10/**
11 * \author mdejong
12 */
13
14namespace JSON {}
15namespace JPP { using namespace JSON; }
16
17namespace JSON {
18
19 /**
20 * Auxiliary data structure to print (part of) JSon data.
21 *
22 * The key can be used to specify which part of the JSon data to print.\n
23 * For example:
24 * <pre>
25 * "Error.Code+Message"
26 * </pre>
27 * will print both the error code and message of some specific JSon data.
28 */
29 struct JPrinter {
30
31 char SEPARATOR[2] = { '.', '+' };
32 int WIDTH = 2;
33
34 /**
35 * Defaut constructor.
36 */
38 {}
39
40
41 /**
42 * Auxiliary method to print (part of) JSon data.
43 *
44 * \param out output stream
45 * \param js JSon data
46 * \param key key
47 */
48 inline std::ostream& operator()(std::ostream& out, const JSON::json& js, const std::string& key) const
49 {
50 using namespace std;
51
52 size_t pos = key.find(SEPARATOR[0]);
53
54 if (pos != string::npos) {
55
56 if (js[key.substr(0, pos)].is_array()) {
57
58 for (const auto& element : js[key.substr(0, pos)]) {
59 (*this)(out, element, key.substr(pos + 1));
60 }
61
62 } else {
63
64 (*this)(out, js[key.substr(0, pos)], key.substr(pos + 1));
65 }
66
67 } else if (key != "") {
68
69 pos = key.find(SEPARATOR[1]);
70
71 out << setw(WIDTH) << js[key.substr(0, pos)] << ' ';
72
73 if (pos != string::npos)
74 (*this)(out, js, key.substr(pos + 1));
75 else
76 out << endl;
77
78 } else {
79
80 out << setw(WIDTH) << js << endl;
81 }
82
83 return out;
84 }
85 };
86}
87
88#endif
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for detector calibration.
Auxiliary data structure to print (part of) JSon data.
Definition JPrinter.hh:29
std::ostream & operator()(std::ostream &out, const JSON::json &js, const std::string &key) const
Auxiliary method to print (part of) JSon data.
Definition JPrinter.hh:48
JPrinter()
Defaut constructor.
Definition JPrinter.hh:37
char SEPARATOR[2]
Definition JPrinter.hh:31
Auxiliary data structure for alignment of data.
Definition JManip.hh:231