MIDAS
Loading...
Searching...
No Matches
test_init.cxx
Go to the documentation of this file.
1#include <iostream>
2#include <initializer_list>
3#include <map>
4#include <string>
5#include <vector>
6
8
9class A {
10
11private:
12 std::vector<std::pair<std::string,A>> _elem;
17 std::string stringmember;
18 std::vector<int> intvec;
19 std::vector<double> doublevec;
20 std::vector<bool> boolvec;
21
22public:
23
24 A(const A& a) : type{a.type} {
29// intvec = a.intvec;
30// doublevec = a.doublevec;
31// boolvec = a.boolvec;
32 }
33
34 A operator=(A&& a) = delete;
35
36 // subdirectory
37 A(std::initializer_list<std::pair<std::string,A>> list):type(DIR){
38 for(auto x : list)
39 _elem.push_back(x);
40 }
41
42 // Array
43 A(std::initializer_list<int> list):type(INT_ARR){
44 for(auto & element : list){
45 intvec.push_back(element);
46 }
47 }
48
49 A(std::initializer_list<double> list):type(DOUBLE_ARR){
50 for(auto & element : list){
51 doublevec.push_back(element);
52 }
53 }
54
55 A(std::initializer_list<bool> list):type(BOOL_ARR){
56 for(auto & element : list){
57 boolvec.push_back(element);
58 }
59 }
60
62 }
64 }
66 }
68 }
69
70 void print(int level = 0){
71 switch(type){
72 case DIR:
73 std::cout << std::endl;
74 for(int i=0 ; i<_elem.size() ; i++){
75 for(int i=0; i < level; i++)
76 std::cout << " ";
77 std::cout << _elem[i].first << ": ";
78 _elem[i].second.print(level+1);
79 }
80 break;
81 case INT:
82 std::cout << intmember << std::endl;
83 break;
84 case DOUBLE:
85 std::cout << doublemember << std::endl;
86 break;
87 case STRING:
88 std::cout << "\"" << stringmember << "\"" << std::endl;
89 break;
90 case BOOL:
91 std::cout << boolmember << std::endl;
92 break;
93 case INT_ARR:
94 for(auto & x : intvec)
95 std::cout << x << " ";
96 std::cout<< std::endl;
97 break;
98 case DOUBLE_ARR:
99 for(auto & x : doublevec)
100 std::cout << x << " ";
101 std::cout<< std::endl;
102 break;
103 case BOOL_ARR:
104 for(auto x : boolvec)
105 std::cout << x << " ";
106 std::cout<< std::endl;
107 break;
108 case UNDEF:
109 break;
110 }
111 };
112};
113
114
115int main(){
116
117 A obj = {
118 {"number", 13},
119 {"value", 17.5},
120 {"string", "Wuzelgemuese"},
121 {"mysubdir", {
122 {"numberinsub",7},
123 {"boolinsub",false},
124 {"arrayinsub", {0.3,0.5,0.7}},
125 {"subsubdir", {
126 {"intinsubsub", 3},
127 {"boolinsubsub", false},
128 {"arrayinsubsub", {0.6,0.7,0.8}},
129 }}
130 }},
131 {"array", {1,2,3,4,5}}
132 };
133
134 obj.print();
135}
Definition test_init.cxx:9
A(std::initializer_list< std::pair< std::string, A > > list)
Definition test_init.cxx:37
int intmember
Definition test_init.cxx:14
A operator=(A &&a)=delete
const datatype type
Definition test_init.cxx:13
std::vector< std::pair< std::string, A > > _elem
Definition test_init.cxx:12
bool boolmember
Definition test_init.cxx:16
A(std::initializer_list< int > list)
Definition test_init.cxx:43
std::vector< bool > boolvec
Definition test_init.cxx:20
std::vector< int > intvec
Definition test_init.cxx:18
A(double leaf)
Definition test_init.cxx:63
A(bool leaf)
Definition test_init.cxx:65
std::vector< double > doublevec
Definition test_init.cxx:19
A(const char *leaf)
Definition test_init.cxx:67
double doublemember
Definition test_init.cxx:15
void print(int level=0)
Definition test_init.cxx:70
A(std::initializer_list< double > list)
Definition test_init.cxx:49
std::string stringmember
Definition test_init.cxx:17
A(const A &a)
Definition test_init.cxx:24
A(int leaf)
Definition test_init.cxx:61
A(std::initializer_list< bool > list)
Definition test_init.cxx:55
INT element
Definition mchart.cxx:40
INT i
Definition mdump.cxx:32
DWORD BOOL
Definition midas.h:105
int INT
Definition midas.h:129
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
datatype
Definition test_init.cxx:7
@ INT_ARR
Definition test_init.cxx:7
@ DOUBLE
Definition test_init.cxx:7
@ DOUBLE_ARR
Definition test_init.cxx:7
@ UNDEF
Definition test_init.cxx:7
@ DIR
Definition test_init.cxx:7
@ BOOL_ARR
Definition test_init.cxx:7
@ BOOL
Definition test_init.cxx:7
@ STRING
Definition test_init.cxx:7
@ INT
Definition test_init.cxx:7
int main()
static te_expr * list(state *s)
Definition tinyexpr.c:567