simple-tof-analysis
 All Classes Namespaces Functions Variables Groups Pages
MessageMgr.h
1 
15 #ifndef MESSAGEMGR_H_
16 #define MESSAGEMGR_H_
17 
18 #include <iostream>
19 #include <string>
20 
21 
22 using namespace std;
23 
24 
25 
26 #define STRINGIZE(x) STRINGIZE2(x)
27 #define STRINGIZE2(x) #x
28 #define LINE_STRING STRINGIZE(__LINE__)
29 
30 
31 
32 
33 #ifdef DEBUG
34 #define D(x) do { std::cerr << x <<std::endl; } while (0)
35 #else
36 #define D(x)
37 #endif
38 
39 
40 
41 
42 
43 namespace MSG{
44 
45 
46 static string WARN=" ## WARNING ## ";
47 static string ERR=" !!! ERROR !!! ";
48 
49 using std::cout;
50 using std::endl;
51 
52 
53 
54 
55 template<typename T1>
56  void LOG(T1 a){
57  cout<<a<<endl;
58  }
59 
60 template<typename T1,typename T2>
61  void LOG(T1 a,T2 b){
62  cout<<a<<""<<b<<endl;
63  }
64 
65 
66 template<typename T1,typename T2, typename T3>
67  void LOG(T1 a,T2 b, T3 c){
68  cout<<a<<""<<b<<""<<c<<endl;
69  }
70 
71 
72 template<typename T1,typename T2,typename T3, typename T4>
73  void LOG(T1 a,T2 b, T3 c, T4 d){
74  cout<<a<<""<<b<<""<<c<<""<<d<<std::endl;
75  }
76 
77 
78 template<typename T1, typename T2,typename T3, typename T4, typename T5>
79  void LOG(T1 a, T2 b, T3 c, T4 d, T5 e){
80  cout<<a<<""<<b<<""<<c<<""<<d<<""<<e<<endl;
81  }
82 
83 
84 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6>
85  void LOG(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f){
86  cout<<a<<""<<b<<""<<c<<""<<d<<""<<e<<""<<f<<endl;
87  }
88 
89 
90 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6, typename T7>
91  void LOG(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f, T7 g){
92  cout<<a<<""<<b<<""<<c<<""<<d<<""<<e<<""<<f<<""<<g<<endl;
93  }
94 
95 
96 template<typename T1>
97  void WARNING(T1 a){
98  cout<<WARN; LOG(a);
99  }
100 
101 template<typename T1,typename T2>
102  void WARNING(T1 a,T2 b){
103  cout<<WARN; LOG(a,b);
104  }
105 
106 template<typename T1, typename T2,typename T3>
107  void WARNING(T1 a, T2 b, T3 c){
108  cout<<WARN; LOG(a,b,c);
109  }
110 
111 template<typename T1, typename T2,typename T3, typename T4>
112  void WARNING(T1 a, T2 b, T3 c, T4 d){
113  cout<<WARN; LOG(a,b,c,d);
114  }
115 
116 template<typename T1, typename T2,typename T3, typename T4, typename T5>
117  void WARNING(T1 a, T2 b, T3 c, T4 d, T5 e){
118  cout<<WARN; LOG(a,b,c,d,e);
119  }
120 
121 
122 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6>
123  void WARNING(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f){
124  cout<<WARN; LOG(a,b,c,d,e,f);
125  }
126 
127 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6, typename T7>
128  void WARNING(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f, T7 g){
129  cout<<WARN; LOG(a,b,c,d,e,f,g);
130  }
131 
132 
133 template<typename T1>
134  void ERROR(T1 a){
135  cout<<ERR; LOG(a);
136  }
137 
138 template<typename T1,typename T2>
139  void ERROR(T1 a,T2 b){
140  cout<<ERR; LOG(a,b);
141  }
142 
143 template<typename T1, typename T2,typename T3>
144  void ERROR(T1 a, T2 b, T3 c){
145  cout<<ERR; LOG(a,b,c);
146  }
147 
148 template<typename T1, typename T2,typename T3, typename T4>
149  void ERROR(T1 a, T2 b, T3 c, T4 d){
150  cout<<ERR; LOG(a,b,c,d);
151  }
152 
153 template<typename T1, typename T2,typename T3, typename T4, typename T5>
154  void ERROR(T1 a, T2 b, T3 c, T4 d, T5 e){
155  cout<<ERR; LOG(a,b,c,d,e);
156  }
157 
158 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6>
159  void ERROR(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f){
160  cout<<ERR; LOG(a,b,c,d,e,f);
161  }
162 
163 
164 template<typename T1, typename T2,typename T3, typename T4, typename T5, typename T6, typename T7>
165  void ERROR(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f, T7 g){
166  cout<<ERR; LOG(a,b,c,d,e,f,g);
167  }
168 
169 }//MSG
170 
171 
172 //not readable for rootcint
173 // #define MSG_WHERE MSG::LOG(__FILE__,"::",__PRETTY_FUNCTION__," line: ",__LINE__);
174 
175 
176 
177 
178 
179 
180 
181 #define KIMI_LOG_INTERNAL(level,EXPR) \
182  if(kimi::Logger::loggingEnabled(level)) \
183  { \
184  std::ostringstream os; \
185  os << EXPR; \
186  kimi::Logger::logMessage(level ,os.str()); \
187  } \
188  else (void) 0
189 
190 #define KIMI_LOG(THELEVEL,EXPR) \
191  KIMI_LOG_INTERNAL(kimi::Logger::LEVEL_ ## THELEVEL,EXPR)
192 
193 #define KIMI_ERROR(EXPR) KIMI_LOG(ERROR,EXPR)
194 #define KIMI_VERBOSE(EXPR) KIMI_LOG(VERBOSE,EXPR)
195 #define KIMI_TRACE(EXPR) KIMI_LOG(TRACE,EXPR)
196 #define KIMI_INFO(EXPR) KIMI_LOG(INFO,EXPR)
197 #define KIMI_PROFILE(EXPR) KIMI_LOG(TRACE,EXPR)
198 
199 // Use KIMI_PRIVATE for sensitive tracing
200 //#if defined(_DEBUG)
201 # define KIMI_PRIVATE(EXPR) KIMI_LOG(PRIVATE,EXPR)
202 // #else
203 // # define KIMI_PRIVATE(EXPR) (void)0
204 // #endif
205 
206 #endif /* MESSAGEMGR_H_ */