Derive-C
Loading...
Searching...
No Matches
panic.h File Reference
#include <assert.h>
#include <derive-c/core/placeholder.h>
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Macros

#define DC_STATIC_ASSERT   _Static_assert
#define DC_PANIC(...)
#define DC_ASSERT(expr, ...)
#define DC_UNREACHABLE(...)
#define DC_LIKELY(x)
#define DC_WHEN(cond, expr)
#define DC_ASSUME(expr, ...)

Macro Definition Documentation

◆ DC_ASSERT

#define DC_ASSERT ( expr,
... )
Value:
if (!(expr)) { \
DC_PANIC("assertion " #expr " failed: " __VA_ARGS__); \
}
Examples
complex/employees.c, complex/prime_sieve.c, container/arena/basic.c, container/map/decomposed.c, container/vector/dynamic.c, container/vector/static.c, and utils/option.c.

Definition at line 36 of file panic.h.

36 #define DC_ASSERT(expr, ...) \
37 if (!(expr)) { \
38 DC_PANIC("assertion " #expr " failed: " __VA_ARGS__); \
39 }

◆ DC_ASSUME

#define DC_ASSUME ( expr,
... )
Value:
DC_ASSERT(expr, __VA_ARGS__)
#define DC_ASSERT(expr,...)
Definition panic.h:36

Definition at line 56 of file panic.h.

◆ DC_LIKELY

#define DC_LIKELY ( x)
Value:
__builtin_expect(!!(x), 1)

Definition at line 47 of file panic.h.

◆ DC_PANIC

#define DC_PANIC ( ...)
Value:
do { \
fprintf(stderr, __VA_ARGS__); \
abort(); \
} while (0);

Definition at line 28 of file panic.h.

28 #define DC_PANIC(...) \
29 do { \
30 fprintf(stderr, __VA_ARGS__); \
31 abort(); \
32 } while (0);

◆ DC_STATIC_ASSERT

#define DC_STATIC_ASSERT   _Static_assert

Definition at line 21 of file panic.h.

◆ DC_UNREACHABLE

#define DC_UNREACHABLE ( ...)
Value:
DC_PANIC("unreachable: " __VA_ARGS__ "\n");
#define DC_PANIC(...)
Definition panic.h:28

Definition at line 43 of file panic.h.

◆ DC_WHEN

#define DC_WHEN ( cond,
expr )
Value:
((cond) ? (expr) : true)

Definition at line 51 of file panic.h.