34 lines
No EOL
798 B
C++
34 lines
No EOL
798 B
C++
|
|
#pragma once
|
|
|
|
#include "Environment.hpp"
|
|
|
|
namespace tp {
|
|
void _assert_(const char* exp, const char* file, int line);
|
|
void terminate(tp::alni code = 0);
|
|
};
|
|
|
|
#define FAIL(exp) tp::_assert_(#exp, __FILE__, __LINE__);
|
|
#define ASSERT(exp) if (!(exp)) { FAIL(exp) }
|
|
|
|
#undef assert
|
|
#ifdef ENV_BUILD_DEBUG
|
|
#define DEBUG_ASSERT(exp) ASSERT(exp)
|
|
#else
|
|
#define DEBUG_ASSERT(exp) {}
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(ENV_OS_WINDOWS)
|
|
#define DEBUG_BREAK(expr) if (expr) { __debugbreak(); }
|
|
#elif defined(ENV_OS_ANDROID)
|
|
#define DEBUG_BREAK(expr) if (expr) { __builtin_debugtrap(); }
|
|
#elif defined(ENV_OS_LINUX)
|
|
#define DEBUG_BREAK(expr) if (expr) { __builtin_trap(); }
|
|
#else
|
|
#define DEBUG_BREAK(expr) ()
|
|
#endif
|
|
|
|
|
|
#define SWITCH_NO_DEF default : { FAIL("No Default Case Possible"); } |