factor/vm/debug.hpp

33 lines
1.1 KiB
C++

namespace factor {
extern bool factor_print_p;
#ifdef FACTOR_DEBUG
// To chop the directory path of the __FILE__ macro.
inline const char* abbrev_path(const char* path) {
const char* p1 = strrchr(path, '\\');
const char* p2 = strrchr(path, '/');
return (p1 > p2 ? p1 : p2) + 1;
}
#define FACTOR_PRINT(x) \
do { \
if (factor_print_p) { \
std::cerr \
<< std::setw(16) << std::left << abbrev_path(__FILE__) \
<< " " << std::setw(4) << std::right << __LINE__ \
<< " " << std::setw(20) << std::left << __FUNCTION__ \
<< " " << x \
<< std::endl; \
} \
} while (0)
#define FACTOR_PRINT_MARK FACTOR_PRINT("")
#else
#define FACTOR_PRINT(fmt, ...) ((void)0)
#define FACTOR_PRINT_MARK ((void)0)
#endif
}