Derive-C
Loading...
Searching...
No Matches
panic.h File Reference
#include <assert.h>
#include <derive-c/core/placeholder.h>
#include <derive-c/core/compiler.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(str, ...)
#define DC_ASSERT(expr, ...)
#define DC_UNREACHABLE(...)
#define DC_LIKELY(x)
#define DC_WHEN(cond, expr)
#define DC_ASSUME(expr, ...)
#define DC_DEBUG_ASSERT   DC_ASSERT

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/map.c, container/set.c, container/vector.c, utils/option.c, and utils/result.c.

Definition at line 37 of file panic.h.

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

◆ DC_ASSUME

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

Definition at line 57 of file panic.h.

◆ DC_DEBUG_ASSERT

#define DC_DEBUG_ASSERT   DC_ASSERT

Definition at line 78 of file panic.h.

◆ DC_LIKELY

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

Definition at line 48 of file panic.h.

◆ DC_PANIC

#define DC_PANIC ( str,
... )
Value:
do { \
fprintf(stderr, "[%s:%d] " str, __FILE__, __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
abort(); \
} while (0);

Definition at line 29 of file panic.h.

29 #define DC_PANIC(str, ...) \
30 do { \
31 fprintf(stderr, "[%s:%d] " str, __FILE__, __LINE__ __VA_OPT__(, ) __VA_ARGS__); \
32 abort(); \
33 } while (0);

◆ DC_STATIC_ASSERT

#define DC_STATIC_ASSERT   static_assert
Examples
container/arena.c.

Definition at line 22 of file panic.h.

◆ DC_UNREACHABLE

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

Definition at line 44 of file panic.h.

◆ DC_WHEN

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

Definition at line 52 of file panic.h.