// vim:fileencoding=utf-8:foldmethod=marker #ifndef WAPP_ASSERT_H #define WAPP_ASSERT_H #include "../aliases/aliases.h" #include "../platform/platform.h" #include #include #include #ifdef WAPP_PLATFORM_CPP BEGIN_C_LINKAGE #endif // !WAPP_PLATFORM_CPP #define wapp_static_assert(EXPR, MSG) extern char ASSERTION_FAILED[EXPR ? 1 : -1] #define wapp_runtime_assert(EXPR, MSG) __wapp_runtime_assert(EXPR, MSG) #ifdef WAPP_DEBUG_ASSERT #define wapp_debug_assert(EXPR, MSG) wapp_runtime_assert(EXPR, MSG) #else #define wapp_debug_assert(EXPR, MSG) #endif #define __wapp_runtime_assert(EXPR, MSG) do { \ if (!(EXPR)) { \ fprintf( \ stderr, \ "%s:%d (In function `%s`): Assertion failed (%" PRIu32 ")\nDiagnostic: %s\n\n", \ __FILE__, __LINE__, __func__, \ EXPR, MSG \ ); \ abort(); \ } \ } while(false) #ifdef WAPP_PLATFORM_CPP END_C_LINKAGE #endif // !WAPP_PLATFORM_CPP #endif // !WAPP_ASSERT_H