|
@ -3,19 +3,25 @@ |
|
|
#include <iostream> |
|
|
#include <iostream> |
|
|
#include <string> |
|
|
#include <string> |
|
|
|
|
|
|
|
|
struct X { |
|
|
|
|
|
#ifdef LOG_DEBUG |
|
|
|
|
|
X() { if(false) std::cout.setstate(std::ios_base::failbit); } |
|
|
|
|
|
~X() { if(false) { std::cout.clear(); } else { std::cout << std::endl << std::flush; } } |
|
|
|
|
|
#else |
|
|
|
|
|
X() { std::cout.setstate(std::ios_base::failbit); } |
|
|
|
|
|
~X() { std::cout.clear(); } |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
struct print { |
|
|
|
|
|
print() { if(false) std::cout.setstate(std::ios_base::failbit); } |
|
|
|
|
|
~print() { if(false) { std::cout.clear(); } else { std::cout << std::endl << std::flush; } } |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct noprint { |
|
|
|
|
|
noprint() { if(true) std::cout.setstate(std::ios_base::failbit); } |
|
|
|
|
|
~noprint() { if(true) { std::cout.clear(); } else { std::cout << std::endl << std::flush; } } |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DEBUG (X(), std::cout << "DEBUG[" << __FILENAME__ << ":" << __LINE__ << " in " << __func__ << "()]: ") |
|
|
|
|
|
#define WARN (X(), std::cout << "WARN [" << __FILENAME__ << ":" << __LINE__ << " in " << __func__ << "()]: ") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef LOG_DEBUG |
|
|
|
|
|
#define DEBUG (print(), std::cout << "DEBUG[" << __FILENAME__ << ":" << __LINE__ << " in " << __func__ << "()]: ") |
|
|
|
|
|
#define WARN (print(), std::cout << "WARN [" << __FILENAME__ << ":" << __LINE__ << " in " << __func__ << "()]: ") |
|
|
|
|
|
#else |
|
|
|
|
|
#define DEBUG (noprint(), std::cout << "") |
|
|
|
|
|
#define WARN (noprint(), std::cout << "") |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
#ifdef LOG_DEBUG |
|
|
#ifdef LOG_DEBUG |
|
|
#define STEP \ |
|
|
#define STEP \ |
|
|