xref: /third_party/musl/include/assert.h (revision 570af302)
1#include <features.h>
2
3#undef assert
4#ifndef MUSL_ASSERT_H
5#define MUSL_ASSERT_H
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10typedef enum Assert_Status {
11    ASSERT_ABORT,
12    ASSERT_RETRY,
13    ASSERT_IGNORE
14}Assert_Status;
15
16typedef struct AssertFailureInfo {
17    char *expression;
18    char *file;
19    char *function;
20    int line;
21}AssertFailureInfo;
22
23typedef Assert_Status(*assert_call)(AssertFailureInfo assert_fail);
24void set_assert_callback(assert_call cb);
25
26#ifdef __cplusplus
27}
28#endif
29#endif
30
31#ifdef NDEBUG
32#define	assert(x) (void)0
33#else
34#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0)))
35#endif
36
37#if __STDC_VERSION__ >= 201112L && !defined(__cplusplus)
38#define static_assert _Static_assert
39#endif
40
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45void __assert_fail (const char *, const char *, int, const char *);
46
47#ifdef __cplusplus
48}
49#endif
50