1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #pragma once
- #ifndef BASELIB_ENABLE_ASSERTIONS
- #ifdef NDEBUG
- #define BASELIB_ENABLE_ASSERTIONS 0
- #else
- #define BASELIB_ENABLE_ASSERTIONS 1
- #endif
- #endif
- #include "../C/Baselib_Debug.h"
- #ifdef __cplusplus
- BASELIB_C_INTERFACE
- {
- #endif
- #if COMPILER_CLANG || COMPILER_GCC
- __attribute__((format(printf, 1, 2)))
- #endif
- BASELIB_API void detail_AssertLog(const char* format, ...);
- #define DETAIL__ASSERT_LOG(ASSERT_EXPRESSION_, message, ...) \
- PP_EVAL(PP_IF_ELSE(PP_VARG_IS_NONEMPTY(__VA_ARGS__)) \
- (detail_AssertLog("%s(%d): Assertion failed (%s) - " message "\n", __FILE__, __LINE__, #ASSERT_EXPRESSION_, __VA_ARGS__)) \
- (detail_AssertLog("%s(%d): Assertion failed (%s) - %s\n", __FILE__, __LINE__, #ASSERT_EXPRESSION_, message)) \
- )
- #define BaselibAssert(ASSERT_EXPRESSION_, ...) \
- do { \
- if (BASELIB_ENABLE_ASSERTIONS) \
- { \
- if(!(ASSERT_EXPRESSION_)) \
- { \
- PP_EVAL(PP_IF_ELSE(PP_VARG_IS_NONEMPTY(__VA_ARGS__)) \
- (DETAIL__ASSERT_LOG(ASSERT_EXPRESSION_, __VA_ARGS__)) \
- (detail_AssertLog("%s(%d): Assertion failed (%s)\n", __FILE__, __LINE__, #ASSERT_EXPRESSION_)) \
- ); \
- Baselib_Debug_Break(); \
- } \
- } \
- } while(0)
- #ifdef __cplusplus
- } // BASELIB_C_INTERFACE
- #endif
|