DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
utlCoreMacro.h
Go to the documentation of this file.
1 
18 #ifndef __utlCoreMacro_h
19 #define __utlCoreMacro_h
20 
23 // Detect/configure OS variables.
24 //
25 // Define 'UTL_OS' to: '0' for an unknown OS (will try to minize library dependencies).
26 // '1' for a Unix-like OS (Linux, Solaris, BSD, MacOSX, Irix, ...).
27 // '2' for Microsoft Windows.
28 // (auto-detection is performed if 'UTL_OS' is not set by the user).
29 #ifndef UTL_OS
30 #if defined(unix) || defined(__unix) || defined(__unix__) \
31  || defined(linux) || defined(__linux) || defined(__linux__) \
32  || defined(sun) || defined(__sun) \
33  || defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) \
34  || defined(__FreeBSD__) || defined __DragonFly__ \
35  || defined(sgi) || defined(__sgi) \
36  || defined(__MACOSX__) || defined(__APPLE__) \
37  || defined(__CYGWIN__)
38 #define UTL_OS 1
39 #elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \
40  || defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
41 #define UTL_OS 2
42 #else
43 #define UTL_OS 0
44 #endif
45 #elif !(UTL_OS==0 || UTL_OS==1 || UTL_OS==2)
46 #error UTL: Invalid configuration variable 'UTL_OS'.
47 #error (correct values are '0 = unknown OS', '1 = Unix-like OS', '2 = Microsoft Windows').
48 #endif
49 
50 #define UTL_COMMA ,
51 
52 
53 #ifndef M_EPS
54 #define M_EPS 1e-9
55 #endif
56 #ifndef M_PI
57 #define M_PI 3.14159265358979323846264338328
58 #endif
59 
60 
62 #ifndef ONE_OVER_4_PI_2
63 #define ONE_OVER_4_PI_2 0.025330295910584442860969865802431910
64 #endif
65 
66 #if defined(__BORLANDC__)
67  #define __utl_LOCATION__ __FUNC__
68 #elif defined(_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(CSWIG)
69  #define __utl_LOCATION__ __FUNCSIG__
70 #elif defined(__GNUC__)
71  #define __utl_LOCATION__ __PRETTY_FUNCTION__
72 #else
73  #define __utl_LOCATION__ __FUNCTION__
74 #endif
75 
76 #define UTL_ALWAYS_INLINE inline __attribute__((always_inline))
77 
78 #include <cassert>
79 #include <cstdio>
80 #include <cstdlib>
81 #include <iostream>
82 #include <string>
83 
84 #if UTL_OS==1
85 #include <unistd.h>
86 #endif
87 
88 #include "utlSTDHeaders.h"
89 
90 // #include "utlSmartAssert.h"
91 
92 enum {
103 };
104 
105 enum {
108 };
109 
110 namespace utl
111 {
112 
113 inline std::string
114 GetColoredString(const std::string& str, const int color)
115 {
116 #if UTL_OS==1
117  static const std::string t_normal("\033[0;0;0m");
118  static const std::string t_black("\033[0;30;59m");
119  static const std::string t_white("\033[0;37;59m");
120  static const std::string t_bold("\033[1m");
121  static const std::string t_red("\033[1;31;59m");
122  static const std::string t_green("\033[0;32;59m");
123  static const std::string t_yellow("\033[0;33;59m");
124  static const std::string t_blue("\033[0;34;59m");
125  static const std::string t_purple("\033[0;35;59m");
126  static const std::string t_cyan("\033[0;36;59m");
127  bool isTerminal = isatty(fileno(stdout)) != 0;
128 #else
129  static const bool isTerminal = false;
130 #endif
131 
132  if (!isTerminal)
133  return str;
134 
135  switch ( color )
136  {
137  case COLOR_RED : return t_red+str+t_normal;
138  case COLOR_BOLD : return t_bold+str+t_normal;
139  case COLOR_PURPLE : return t_purple+str+t_normal;
140  case COLOR_GREEN : return t_green+str+t_normal;
141  case COLOR_YELLOW : return t_yellow+str+t_normal;
142  case COLOR_CYAN : return t_cyan+str+t_normal;
143  case COLOR_BLUE : return t_blue+str+t_normal;
144  case COLOR_BLACK : return t_black+str+t_normal;
145  case COLOR_WHITE : return t_white+str+t_normal;
146  default : return t_normal+str+t_normal;
147  }
148 }
149 
150 }
151 
152 
153 #if UTL_OS==1
154 
155 #define __UTL_FATAL_STRING utl::GetColoredString("Fatal", COLOR_RED)
156 #define __UTL_ERROR_STRING utl::GetColoredString("Error", COLOR_RED)
157 #define __UTL_WARNING_STRING utl::GetColoredString("Warning", COLOR_RED)
158 #define __UTL_DEBUG_STRING utl::GetColoredString("Debug", COLOR_CYAN)
159 #define __UTL_LOG_STRING utl::GetColoredString("Log", COLOR_BOLD)
160 #define __UTL_BOLD(str) utl::GetColoredString(str, COLOR_BOLD)
161 #define __UTL_EXPSTR(str) utl::GetColoredString(str, COLOR_GREEN)
162 
163 // #define __UTL_FATAL_STRING "\033[1;31;59mFatal\033[0;0;0m"
164 // #define __UTL_ERROR_STRING "\033[1;31;59mError\033[0;0;0m"
165 // #define __UTL_WARNING_STRING "\033[1;31;59mWarning\033[0;0;0m"
166 // #define __UTL_DEBUG_STRING "\033[0;36;59mDebug\033[0;0;0m"
167 // #define __UTL_LOG_STRING "\033[0;36;59mLog\033[0;0;0m"
168 // #define __UTL_BOLD(str) std::string("\033[1m").append(str).append("\033[0;0;0m")
169 // #define __UTL_EXPSTR(str) std::string("\033[0;32;59m").append(str).append("\033[0;0;0m")
170 
171 #else
172 
173 #define __UTL_FATAL_STRING "Fatal"
174 #define __UTL_ERROR_STRING "Error"
175 #define __UTL_WARNING_STRING "Warning"
176 #define __UTL_DEBUG_STRING "Debug"
177 #define __UTL_LOG_STRING "Log"
178 #define __UTL_BOLD(str) str
179 #define __UTL_EXPSTR(str) str
180 
181 #endif
182 
183 
184 #define __UTL_Print_LOCATION "In "<< __UTL_BOLD("File") << ": " <<__FILE__<< ", "<<__UTL_BOLD("Line")<<": " << __LINE__ << ", "<<__UTL_BOLD("Function")<<": " << __utl_LOCATION__ << "\n"
185 
186 
187 enum{
197  LOG_ALL=100000000
198 };
199 
200 namespace utl
201 {
203 static int LogLevel=LOG_NORMAL;
204 
205 inline bool IsLogMute(const int level=utl::LogLevel)
206  {
207  return level<=LOG_MUTE;
208  }
209 inline bool IsLogNormal(const int level=utl::LogLevel)
210  {
211  return LOG_NORMAL<=level;
212  }
213 inline bool IsLogDebug(const int level=utl::LogLevel)
214  {
215  return LOG_DEBUG<=level;
216  }
217 inline bool IsLogLarge(const int level=utl::LogLevel)
218  {
219  return LOG_LARGE<=level;
220  }
221 inline bool IsLogAll(const int level=utl::LogLevel)
222  {
223  return LOG_ALL<=level;
224  }
225 }
226 
227 
228 #if __cplusplus >= 201103L
229 
230 #include "utlCore11.h"
231 
232 // namespace utl
233 // {
234 // template<typename... Args>
235 // auto GetNumberOfArgs(Args... args) -> decltype(sizeof... (args));
236 // }
237 
238 #define utlNumberOfArgs(...) utl::GetNumberOfArgs(__VA_ARGS__)
239 
240 
242 #define PrintVar(cond, os, ...) \
243 do \
244 { if ((cond)) \
245  { \
246  if (utlNumberOfArgs(__VA_ARGS__)>1) \
247  { os << "(" << #__VA_ARGS__ << ") = "; utl::PrintOS(os, __VA_ARGS__); } \
248  else \
249  { os << #__VA_ARGS__ << " = "; utl::PrintOS(os, __VA_ARGS__); } \
250  } \
251 } while(0)
252 
253 
254 #define utlVLogOS_IF(cond, level, os) \
255 do \
256  { \
257  if ((level<=utl::LogLevel) && (cond)) \
258  { os << std::endl << std::flush; } \
259  } while (0)
260 
261 
262 #define utlVLogOS(level, os) utlVLogOS_IF(true, level, os)
263 #define utlVLog_IF(cond, level, expr) utlVLogOS_IF(cond, level, std::cout << expr)
264 #define utlVLog(level, expr) utlVLogOS_IF(true, level, std::cout << expr)
265 
266 #define utlLogOS_IF(cond, os) utlVLogOS_IF(cond, 0, os)
267 #define utlLogOS(os) utlVLogOS_IF(true, 0, os)
268 #define utlLog_IF(cond, expr) utlVLogOS_IF(cond, 0, std::cout << expr)
269 #define utlLog(expr) utlVLogOS_IF(true, 0, std::cout << expr)
270 
271 
272 #define utlVLogOSVar_IF(cond, level, os, ...) \
273 do \
274 { if ( level<=utl::LogLevel ) \
275  { PrintVar(cond, os, __VA_ARGS__); } \
276 } while(0)
277 
278 
279 #define utlVLogOSVar(level, os, ...) utlVLogOSVar_IF(true, level, os, __VA_ARGS__)
280 #define utlVLogVar_IF(cond, level, ...) utlVLogOSVar_IF(cond, level, std::cout, __VA_ARGS__)
281 #define utlVLogVar(level, ...) utlVLogOSVar_IF(true, level, std::cout, __VA_ARGS__)
282 
283 
284 #define utlLogOSVar_IF(cond, os, ...) utlVLogOSVar_IF(cond, 0, os, __VA_ARGS__)
285 #define utlLogOSVar(os, ...) utlVLogOSVar_IF(true, 0, os, __VA_ARGS__)
286 #define utlLogVar_IF(cond, ...) utlVLogOSVar_IF(cond, 0, std::cout, __VA_ARGS__)
287 #define utlLogVar(...) utlVLogOSVar_IF(true, 0, std::cout, __VA_ARGS__)
288 
289 
290 
291 #define utlVLogOSPosition_IF(cond,level, os) \
292 do \
293 { if ((level<=utl::LogLevel) && (cond)) \
294  { os << "\n"<<__UTL_BOLD("Work Flow")<<": "<< __UTL_Print_LOCATION << std::flush; \
295  } \
296 } while(0)
297 
298 #define utlVLogPosition(level) utlVLogOSPosition_IF(true, level, std::cout)
299 
300 
301 #if UTL_VERBOSITY>0
302 
303 #define utlOSPrintVar(cond, os, ...) PrintVar(cond, os, __VA_ARGS__)
304 #define utlPrintVar(cond, ...) PrintVar(cond, std::cout, __VA_ARGS__)
305 
306 #else
307 
308 #define utlOSPrintVar(cond, os, ...)
309 #define utlPrintVar(cond, ...)
310 
311 
312 #endif
313 
314 
315 #endif
316 
317 
318 template <typename T, size_t N>
319 char(&__utlArraySizeHelper(T(&array)[N]))[N];
320 #ifndef COMPILER_MSVC
321 template <typename T, size_t N>
322 char(&__utlArraySizeHelper(const T(&array)[N]))[N];
323 #endif
324 #define utlArraySize(array) (sizeof(__utlArraySizeHelper(array)))
325 
326 
327 // #define utlArraySize(arr) (sizeof(arr)/sizeof(*(arr)))
328 
329 
334 #ifdef MATLAB_MEX_FILE
335 #include <mex.h>
336 #define utlAbort(expout) do { mexErrMsgTxt(expout); } while(0)
337 #else
338 #define utlAbort(expout) do { std::cerr << expout <<"\n" << std::flush; abort(); } while(0)
339 #endif
340 
345 #define __utlConditionFailPrint(cond) __UTL_Print_LOCATION <<__UTL_BOLD("Expression")<<": '" << __UTL_EXPSTR(#cond) << "' failed. " << "\n"
346 #define __utlConditionSucceedPrint(cond) __UTL_Print_LOCATION <<__UTL_BOLD("Expression")<<": '" << __UTL_EXPSTR(#cond) << "' satisfied. " << "\n"
347 
348 #define utlSASetLog(log) Assert::set_log(log)
349 
350 #define utlSAGlobalPrintIf(expr) \
351  if ( !(expr) ) ; \
352  else ::smart_assert::make_assert(#expr).log().print_context( __FILE__, __LINE__,__SMART_ASSERT_LOCATION__, ::smart_assert::lvl_condition_exception).SMART_ASSERT_A
353 
354 
355 #define utlSAGlobalPrint utlSAGlobalPrintIf("")
356 
357 #define utlSAGlobalWarning(expr) \
358  if ( !(expr) ) ; \
359  else ::smart_assert::make_assert(#expr).warn().print_context( __FILE__, __LINE__,__SMART_ASSERT_LOCATION__, ::smart_assert::lvl_condition_exception).SMART_ASSERT_A
360 
361 
362 #define utlSAGlobalException(expr) \
363  if ( !(expr) ) ; \
364  else ::smart_assert::make_assert(#expr).error().print_context( __FILE__, __LINE__,__SMART_ASSERT_LOCATION__, ::smart_assert::lvl_condition_exception).SMART_ASSERT_A
365 
366 
367 #define utlSAGlobalAssert(expr) \
368  if ( (expr) ) ; \
369  else ::smart_assert::make_assert(#expr).error().print_context( __FILE__, __LINE__,__SMART_ASSERT_LOCATION__, ::smart_assert::lvl_condition_assert).SMART_ASSERT_A
370 
371 
372 #define utlGlobalException(cond,expout) \
373 do \
374 { \
375  if ((cond)) \
376  { std::cerr << "\n"<<__UTL_ERROR_STRING<<": " << __utlConditionSucceedPrint(cond) << __UTL_BOLD("msg")<<": '"<<expout << "'\n" << std::flush; \
377  utlAbort(""); } \
378 } while (0)
379 
380 
381 #define utlGlobalAssert(cond,expout) \
382 do \
383 { \
384  if (!(cond)) \
385  { std::cerr << "\n"<<__UTL_ERROR_STRING<<": " << __utlConditionFailPrint(cond) << __UTL_BOLD("msg")<<": '"<<expout << "\n" << std::flush; \
386  utlAbort(""); } \
387 } while (0)
388 
389 
390 #define utlOSGlobalWarning(cond,expout,os) \
391 do \
392 { if ((cond)) \
393  { os << "\n"<<__UTL_WARNING_STRING<<": "<< __utlConditionSucceedPrint(cond) << __UTL_BOLD("msg")<<": '"<<expout << "\n" << std::flush; } \
394 } while(0)
395 
396 
397 #define utlGlobalWarning(cond,expout) utlOSGlobalWarning(cond,expout,std::cout)
398 
399 
400 #define PrintEnum1(cond,var,val1,os) \
401 do \
402 { if ((cond) && ((var)==(val1))) \
403  { os << #var <<" = " << #val1 << std::endl << std::flush; } \
404 } while(0)
405 
406 
407 #define PrintEnum2(cond,var,val1,val2,os) \
408 do \
409 { PrintEnum1(cond,var,val1,os); \
410  if ((cond) && ((var)==(val2))) \
411  { os << #var <<" = " << #val2 << std::endl << std::flush; } \
412 } while(0)
413 
414 
415 #define PrintEnum3(cond,var,val1,val2,val3,os) \
416 do \
417 { PrintEnum2(cond,var,val1,val2,os); \
418  if ((cond) && ((var)==(val3))) \
419  { os << #var <<" = " << #val3 << std::endl << std::flush; } \
420 } while(0)
421 
422 
423 #define PrintEnum4(cond,var,val1,val2,val3,val4,os) \
424 do \
425 { PrintEnum3(cond,var,val1,val2,val3,os); \
426  if ((cond) && ((var)==(val4))) \
427  { os << #var <<" = " << #val4 << std::endl << std::flush; } \
428 } while(0)
429 
430 
431 #define PrintEnum5(cond,var,val1,val2,val3,val4,val5,os) \
432 do \
433 { PrintEnum4(cond,var,val1,val2,val3,val4,os); \
434  if ((cond) && ((var)==(val5))) \
435  { os << #var <<" = " << #val5 << std::endl << std::flush; } \
436 } while(0)
437 
438 
439 #define PrintEnum6(cond,var,val1,val2,val3,val4,val5,val6,os) \
440 do \
441 { PrintEnum5(cond,var,val1,val2,val3,val4,val5,os); \
442  if ((cond) && ((var)==(val6))) \
443  { os << #var <<" = " << #val6 << std::endl << std::flush; } \
444 } while(0)
445 
446 
447 #define PrintVar1(cond,var,os) \
448 do \
449 { if ((cond)) \
450  { os << std::boolalpha << #var <<" = " << (var) << std::endl << std::flush << std::noboolalpha; } \
451 } while(0)
452 
453 
454 #define PrintVar2(cond,var1,var2,os) \
455 do \
456 { if ((cond)) \
457  { os << std::boolalpha << "("<<#var1<<", "<< #var2<<") = (" << (var1) << ", " << (var2) << ")" \
458  << std::endl << std::flush << std::noboolalpha; } \
459 } while(0)
460 
461 
462 #define PrintVar3(cond,var1,var2,var3,os) \
463 do \
464 { if ((cond)) \
465  { os << std::boolalpha << "("<<#var1<<", "<<#var2<<", "<<#var3<<") = (" \
466  << (var1) << ", " << (var2) << ", " << (var3) << ")" << std::endl << std::flush << std::noboolalpha; } \
467 } while(0)
468 
469 
470 #define PrintVar4(cond,var1,var2,var3,var4,os) \
471 do \
472 { if ((cond)) \
473  { os << std::boolalpha << "("<<#var1<<", "<<#var2<<", "<<#var3<<", "<<#var4<<") = (" \
474  << (var1) << ", " << (var2) << ", " << (var3) << ", " << (var4) << ")" << std::endl << std::flush << std::noboolalpha; } \
475 } while(0)
476 
477 
478 #define PrintVar5(cond,var1,var2,var3,var4,var5,os) \
479 do \
480 { if ((cond)) \
481  { os << std::boolalpha << "("<<#var1<<", "<<#var2<<", "<<#var3<<", "<<#var4<<", "<<#var5<<") = (" \
482  << (var1) << ", " << (var2) << ", " << (var3) << ", " << (var4) << ", " << (var5) <<")" \
483  << std::endl << std::flush << std::noboolalpha; } \
484 } while(0)
485 
486 
487 #define PrintVar6(cond,var1,var2,var3,var4,var5,var6,os) \
488 do \
489 { if ((cond)) \
490  { os << std::boolalpha << "("<<#var1<<", "<<#var2<<", "<<#var3<<", "<<#var4<<", "<<#var5<<", "<<#var6<<") = (" \
491  << (var1) << ", " << (var2) << ", " << (var3) << ", " << (var4) << ", " << (var5) <<", " << (var6) <<")" \
492  << std::endl << std::flush << std::noboolalpha; } \
493 } while(0)
494 
495 
496 
497 #if UTL_VERBOSITY>0
498 
499 #define utlSAPrintIf(expr) utlSAGlobalPrintIf(expr)
500 #define utlSAPrint utlSAGlobalPrint
501 #define utlSAWarning(expr) utlSAGlobalWarning(expr)
502 #define utlSAException(expr) utlSAGlobalException(expr)
503 #define utlSAAssert(expr) utlSAGlobalAssert(expr)
504 
505 // #define utlSAShowPosition(expr) if (!(expr)) ; else utlSAPrint
506 
507 #define utlException(cond,expout) utlGlobalException(cond,expout)
508 #define utlAssert(cond,expout) utlGlobalAssert(cond,expout)
509 #define utlOSWarning(cond,expout,os) utlOSGlobalWarning(cond,expout,os)
510 #define utlWarning(cond,expout) utlGlobalWarning(cond,expout)
511 
512 
513 #define utlDebug(cond,expout) \
514 do \
515 { if ((cond)) \
516  { std::cerr << "\n"<<__UTL_DEBUG_STRING<<": " << __utlConditionSucceedPrint(cond) << __UTL_BOLD("msg")<<": '"<<expout << "\n" << std::flush; } \
517 } while(0)
518 
519 
520 #define utlOSShowPosition(cond,os) utlVLogOSPosition_IF(cond, 0, os)
521 
522 #define utlShowPosition(cond) utlOSShowPosition(cond,std::cout)
523 
524 #define utlPrintVar1(cond,var) PrintVar1(cond,var,std::cout)
525 #define utlPrintVar2(cond,var1,var2) PrintVar2(cond,var1,var2,std::cout)
526 #define utlPrintVar3(cond,var1,var2,var3) PrintVar3(cond,var1,var2,var3,std::cout)
527 #define utlPrintVar4(cond,var1,var2,var3,var4) PrintVar4(cond,var1,var2,var3,var4,std::cout)
528 #define utlPrintVar5(cond,var1,var2,var3,var4,var5) PrintVar5(cond,var1,var2,var3,var4,var5,std::cout)
529 #define utlPrintVar6(cond,var1,var2,var3,var4,var5,var6) PrintVar6(cond,var1,var2,var3,var4,var5,var6,std::cout)
530 
531 #define utlOSPrintVar1(cond,var,os) PrintVar1(cond,var,os)
532 #define utlOSPrintVar2(cond,var1,var2,os) PrintVar2(cond,var1,var2,os)
533 #define utlOSPrintVar3(cond,var1,var2,var3,os) PrintVar3(cond,var1,var2,var3,os)
534 #define utlOSPrintVar4(cond,var1,var2,var3,var4,os) PrintVar4(cond,var1,var2,var3,var4,os)
535 #define utlOSPrintVar5(cond,var1,var2,var3,var4,var5,os) PrintVar5(cond,var1,var2,var3,var4,var5,os)
536 #define utlOSPrintVar6(cond,var1,var2,var3,var4,var5,var6,os) PrintVar6(cond,var1,var2,var3,var4,var5,var6,os)
537 
538 #else
539 
540 #define utlSAPrintIf(expr) utlSAGlobalPrintIf(false)
541 #define utlSAPrint utlSAPrintIf("")
542 #define utlSAWarning(expr) utlSAGlobalWarning(false)
543 #define utlSAException(expr) utlSAGlobalException(false)
544 #define utlSAAssert(expr) utlSAGlobalAssert(true)
545 
546 // #define utlSAShowPosition(expr) if (true) ; else utlSAPrint
547 
548 #define utlException(cond,expout)
549 #define utlDebug(cond,expout)
550 #define utlAssert(cond,expout)
551 #define utlOSWarning(cond,expout,os)
552 #define utlWarning(cond,expout)
553 #define utlOSShowPosition(cond,os)
554 #define utlShowPosition(cond)
555 
556 #define utlPrintVar1(cond,var)
557 #define utlPrintVar2(cond,var1,var2)
558 #define utlPrintVar3(cond,var1,var2,var3)
559 #define utlPrintVar4(cond,var1,var2,var3,var4)
560 #define utlPrintVar5(cond,var1,var2,var3,var4, var5)
561 #define utlPrintVar6(cond,var1,var2,var3,var4, var5, var6)
562 
563 #define utlOSPrintVar1(cond,var)
564 #define utlOSPrintVar2(cond,var1,var2)
565 #define utlOSPrintVar3(cond,var1,var2,var3)
566 #define utlOSPrintVar4(cond,var1,var2,var3,var4)
567 #define utlOSPrintVar5(cond,var1,var2,var3,var4, var5)
568 #define utlOSPrintVar6(cond,var1,var2,var3,var4, var5, var6)
569 
570 #endif
571 
572 #define utlSetMacro(name, type) \
573  virtual void Set##name (const type _arg) \
574  { \
575  if ( this->m_##name != _arg ) \
576  { \
577  this->m_##name = _arg; \
578  } \
579  }
580 
581 
582 #define utlGetMacro(name, type) \
583  virtual type Get##name () const \
584  { \
585  return this->m_##name; \
586  }
587 
588 
589 #define utlSetGetMacro(name, type) \
590  utlSetMacro(name, type); \
591  utlGetMacro(name, type);
592 
595 #endif
char(& __utlArraySizeHelper(T(&array)[N]))[N]
bool IsLogLarge(const int level=utl::LogLevel)
Definition: utlCoreMacro.h:217
used for debug information. this->GetDebug()
Definition: utlCoreMacro.h:193
normal log
Definition: utlCoreMacro.h:191
log for large matrix or vectors.
Definition: utlCoreMacro.h:195
bool IsLogDebug(const int level=utl::LogLevel)
Definition: utlCoreMacro.h:213
bool IsLogNormal(const int level=utl::LogLevel)
Definition: utlCoreMacro.h:209
Definition: utl.h:90
static int LogLevel
Definition: utlCoreMacro.h:203
utl functions using c++11 Created "07-02-2016
bool IsLogMute(const int level=utl::LogLevel)
Definition: utlCoreMacro.h:205
std::string GetColoredString(const std::string &str, const int color)
Definition: utlCoreMacro.h:114
no log
Definition: utlCoreMacro.h:189
bool IsLogAll(const int level=utl::LogLevel)
Definition: utlCoreMacro.h:221
for all possible logs.
Definition: utlCoreMacro.h:197