35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
|
//----------------------------------------------------------------------------//
|
||
|
// GNU GPL OS/K //
|
||
|
// //
|
||
|
// Authors: spectral` //
|
||
|
// NeoX //
|
||
|
// //
|
||
|
// Desc: Assertions //
|
||
|
//----------------------------------------------------------------------------//
|
||
|
|
||
|
#ifndef __kaleid_assert_h
|
||
|
#define __kaleid_assert_h
|
||
|
|
||
|
#if !defined(NDEBUG)
|
||
|
|
||
|
extern const char *panicstr;
|
||
|
extern void panic(const char *) __dead;
|
||
|
|
||
|
#define assert(x) do{if(!(x))panic(#x);}while(0);
|
||
|
|
||
|
#define assert_never_used(x) do{static bool __anu_##x = FALSE; \
|
||
|
assert(__anu_##x == FALSE); __anu_##x = TRUE;}while(0);
|
||
|
|
||
|
#define assert_used_once(x) do{static bool __anu_##x; assert(__anu_##x == TRUE);} while(0);
|
||
|
|
||
|
#else // NDEBUG
|
||
|
|
||
|
#define assert(x)
|
||
|
#define assert_never_used(x)
|
||
|
#define assert_used_once(x)
|
||
|
|
||
|
#endif // NDEBUG
|
||
|
|
||
|
#endif
|
||
|
|