-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathassert.h
37 lines (25 loc) · 1.05 KB
/
assert.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef UTIL_ASSERT_H__
#define UTIL_ASSERT_H__
#include "exceptions.h"
namespace util {
class AssertionFailed : public Exception {};
}
#ifdef NDEBUG
#define UTIL_ASSERT(expr) (void(0))
#define UTIL_ASSERT_REL(left, op, right) (void(0))
#else // DEBUG
#define UTIL_ASSERT(expr) if (!(expr)) { \
UTIL_THROW_EXCEPTION( \
util::AssertionFailed, \
"\"" << #expr << "\" failed in " << \
__func__ << ", " << __FILE__ << ":" << __LINE__); \
}
#define UTIL_ASSERT_REL(left, op, right) if (!(left op right)) { \
UTIL_THROW_EXCEPTION( \
util::AssertionFailed, \
"\"" << #left << " " << #op << " " << #right << "\" ==> " << \
left << " " << #op << " " << right << \
" failed in " << __func__ << ", " << __FILE__ << ":" << __LINE__); \
}
#endif
#endif // UTIL_ASSERT_H__