Logging

1

Logging

2
@Add(includes)
#include <iostream>
#include <exception>
@End(includes)
3
@Def(frag prereqs)
#define ASSERT(COND) \
if (! (COND)) { \
@mul(log preamble) \
@mul(log newline) \
@mul(throw) \
}
@End(frag prereqs)
4
@Add(frag prereqs)
#define ASSERT_MSG(COND, MSG) \
if (! (COND)) { \
@mul(log preamble) \
std::cerr << ": " << MSG; \
@mul(log newline) \
@mul(throw) \
}
@End(frag prereqs)
5
@Add(frag prereqs)
#define WARN_MSG(MSG) \
std::cerr << __FILE__ << ':' << \
__LINE__ << ' '; \
std::cerr << MSG; \
@mul(log newline)
@end(frag prereqs)
6
@def(log preamble) \
std::cerr << \
__FILE__ << ':' << __LINE__ << \
' ' << #COND << " FAILED"; \
@end(log preamble)
7
@def(log newline) \
std::cerr << '\n'; \
@end(log newline)
8
@def(throw) \
throw std::exception(); \
@end(throw)