48 lines
No EOL
954 B
C++
48 lines
No EOL
954 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"); \
|
|
} |