8 #include "internal_macros.h"
14 typedef void(AbortHandlerT)();
16 inline AbortHandlerT*& GetAbortHandler() {
17 static AbortHandlerT* handler = &std::abort;
21 BENCHMARK_NORETURN
inline void CallAbortHandler() {
31 CheckHandler(
const char* check,
const char* file,
const char* func,
int line)
32 : log_(GetErrorLogInstance()) {
33 log_ << file <<
":" << line <<
": " << func <<
": Check `" << check
37 LogType& GetLog() {
return log_; }
39 #if defined(COMPILER_MSVC)
41 #pragma warning(disable : 4722)
43 BENCHMARK_NORETURN ~
CheckHandler() BENCHMARK_NOEXCEPT_OP(
false) {
47 #if defined(COMPILER_MSVC)
66 (b ? ::benchmark::internal::GetNullLogInstance() \
67 : ::benchmark::internal::CheckHandler(#b, __FILE__, __func__, __LINE__) \
70 #define BM_CHECK(b) ::benchmark::internal::GetNullLogInstance()
75 #define BM_CHECK_EQ(a, b) BM_CHECK((a) == (b))
76 #define BM_CHECK_NE(a, b) BM_CHECK((a) != (b))
77 #define BM_CHECK_GE(a, b) BM_CHECK((a) >= (b))
78 #define BM_CHECK_LE(a, b) BM_CHECK((a) <= (b))
79 #define BM_CHECK_GT(a, b) BM_CHECK((a) > (b))
80 #define BM_CHECK_LT(a, b) BM_CHECK((a) < (b))
82 #define BM_CHECK_FLOAT_EQ(a, b, eps) BM_CHECK(std::fabs((a) - (b)) < (eps))
83 #define BM_CHECK_FLOAT_NE(a, b, eps) BM_CHECK(std::fabs((a) - (b)) >= (eps))
84 #define BM_CHECK_FLOAT_GE(a, b, eps) BM_CHECK((a) - (b) > -(eps))
85 #define BM_CHECK_FLOAT_LE(a, b, eps) BM_CHECK((b) - (a) > -(eps))
86 #define BM_CHECK_FLOAT_GT(a, b, eps) BM_CHECK((a) - (b) > (eps))
87 #define BM_CHECK_FLOAT_LT(a, b, eps) BM_CHECK((b) - (a) > (eps))