1#unit ellipsis∷contracts
6extern thread_local bool volatile ¤∷⸤ignore⸥∷⸤dynamic⸥;
7extern thread_local bool volatile ¤∷⸤proceed⸥∷⸤dynamic⸥;
8extern thread_local bool volatile ¤∷⸤verbose⸥∷⸤dynamic⸥;
10typedef struct ellipsis∷contracts∷is_ice ellipsis∷contracts∷is_ice;
18#include_directives <ellipsis-contracts-macros.h>
26#define ELLIPSIS_CONTRACT_ASSERT_IMPL(CTYPE, COND, CSTR, ...) \
27 ELLIPSIS_CONTRACT(__COUNTER__, COND, abort, true, CSTR, CTYPE __VA_OPT__(,) __VA_ARGS__)
36#define ELLIPSIS_CONTRACT_ASSUME_IMPL(CTYPE, COND, CSTR, ...) \
37 ELLIPSIS_CONTRACT(__COUNTER__, COND, unreachable, false, CSTR, CTYPE __VA_OPT__(,) __VA_ARGS__)
39#ifndef DOXYGEN_SPECIAL
46 static char const contract_format_ ## COUNT[] = \
47 ⸤__FILE__⸥
":" ⸤STRINGIFY⸥(⸤__LINE__⸥)
": violation of " CTYPE
" `" CSTR
"`" __VA_OPT__(
", ") __VA_ARGS__
"\n"; \
49 ? fputs(contract_format_ ## COUNT, stderr) \
54((ellipsis_contracts_ignore() ∨ (COND)) \
57 , (ellipsis_contracts_proceed() \
77 ellipsis∷contracts∷is_ice*: (__VA_ARGS__), \
85 "compile time violation of " CTYPE
" " CSTR \
__directive__ define
The define directive as specified by the C standard.
Definition directives.c:33
__directive__ include
The include directive as specified by the C standard plus extensions.
Definition directives.c:67
#define true
The constant true made accessible to the preprocessor.
Definition ellipsis-builtins.dirs:32
#define false
The constant false made accessible to the preprocessor.
Definition ellipsis-builtins.dirs:33
#define ELLIPSIS_MARK_LINE
A hook to add code that puts line number information into the output stream.
Definition ellipsis-environment.dirs:64
#define ELLIPSIS_CONTRACT(COUNT, COND, ACTION, VERB, CSTR, CTYPE,...)
Definition ellipsis-expression.c:67
#define ELLIPSIS_TEST_ICE(...)
Definition ellipsis-expression.c:52
#define ELLIPSIS_CONTRACT_ICE_OR_TRUE(...)
Definition ellipsis-expression.c:54
#define STRINGIFY(...)
Definition ellipsis-expression.c:30
#define ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR,...)
Definition ellipsis-expression.c:33
#define ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR,...)
Definition ellipsis-expression.c:60
#define STRINGIFY_(...)
Definition ellipsis-expression.c:31
#define ELLIPSIS_TO_VOIDS(...)
Definition ellipsis-expression.c:50
#define ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE,...)
Definition ellipsis-expression.c:42
#define __VA_OPT__
A pseudo macro that cannot be redefined.
Definition ellipsis-predefined.dirs:89