Loading...
Searching...
No Matches
Go to the documentation of this file.
12#if !defined DC_PLACEHOLDERS
13 #if defined DC_PANIC_HEADER
14 #include DC_PANIC_HEADER
18#if !defined DC_STATIC_ASSERT
19 #if defined DC_STATIC_ASSERT_SUPPORTED
20 #define DC_STATIC_ASSERT _Static_assert
22 #define DC_STATIC_ASSERT static_assert
29 #define DC_PANIC(str, ...) \
31 fprintf(stderr, "[%s:%d] " str, __FILE__, __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
37 #define DC_ASSERT(expr, ...) \
39 DC_PANIC("assertion " #expr " failed: " __VA_ARGS__); \
43#if !defined DC_UNREACHABLE
44 #define DC_UNREACHABLE(...) DC_PANIC("unreachable: " __VA_ARGS__ "\n");
48 #define DC_LIKELY(x) __builtin_expect(!!(x), 1)
52 #define DC_WHEN(cond, expr) ((cond) ? (expr) : true)
57 #define DC_ASSUME(expr, ...) DC_ASSERT(expr, __VA_ARGS__)
59 #if defined(__clang__)
60 #define DC_ASSUME(expr, ...) __builtin_assume(expr)
61 #elif defined(__GNUC__)
63 #define DC_ASSUME(expr, ...) \
66 __builtin_unreachable(); \
69 #define DC_ASSUME(expr, ...) ((void)0)
76#if !defined DC_DEBUG_ASSERT
78 #define DC_DEBUG_ASSERT DC_ASSERT
80 #define DC_DEBUG_ASSERT(expr, ...) (void)(expr)