26 #define STRINGIZE(x) STRINGIZE2(x)
27 #define STRINGIZE2(x) #x
28 #define LINE_STRING STRINGIZE(__LINE__)
34 #define D(x) do { std::cerr << x <<std::endl; } while (0)
46 static string WARN=
" ## WARNING ## ";
47 static string ERR=
" !!! ERROR !!! ";
60 template<
typename T1,
typename T2>
66 template<
typename T1,
typename T2,
typename T3>
67 void LOG(T1 a,T2 b, T3 c){
68 cout<<a<<
""<<b<<
""<<c<<endl;
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;
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;
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;
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;
101 template<
typename T1,
typename T2>
102 void WARNING(T1 a,T2 b){
103 cout<<WARN; LOG(a,b);
106 template<
typename T1,
typename T2,
typename T3>
107 void WARNING(T1 a, T2 b, T3 c){
108 cout<<WARN; LOG(a,b,c);
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);
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);
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);
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);
133 template<
typename T1>
138 template<
typename T1,
typename T2>
139 void ERROR(T1 a,T2 b){
143 template<
typename T1,
typename T2,
typename T3>
144 void ERROR(T1 a, T2 b, T3 c){
145 cout<<ERR; LOG(a,b,c);
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);
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);
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);
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);
181 #define KIMI_LOG_INTERNAL(level,EXPR) \
182 if(kimi::Logger::loggingEnabled(level)) \
184 std::ostringstream os; \
186 kimi::Logger::logMessage(level ,os.str()); \
190 #define KIMI_LOG(THELEVEL,EXPR) \
191 KIMI_LOG_INTERNAL(kimi::Logger::LEVEL_ ## THELEVEL,EXPR)
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)
201 # define KIMI_PRIVATE(EXPR) KIMI_LOG(PRIVATE,EXPR)