4#include_directives <ellipsis-loc.h> __prefix__(bind LOC_NAME ONCE)
6#if __STDC_VERSION_STDLIB_H__ < 202311L
61#define _ONCE_INIT(NAME) NAME ∷_Once∷init
62#define _ONCE_USER(NAME) NAME ∷_Once∷init∷user
63#define _ONCE_CALLBACK(NAME) NAME ∷_Once∷init∷callback
64#define _ONCE_ATEXIT_POINTER(NAME) NAME ∷_Once∷atexit∷pointer
65#define _ONCE_ATEXIT_CALLBACK(NAME) NAME ∷_Once∷atexit∷callback
66#define _ONCE_AT_QUICK_EXIT_POINTER(NAME) NAME ∷_Once∷at_quick_exit∷pointer
67#define _ONCE_AT_QUICK_EXIT_CALLBACK(NAME) NAME ∷_Once∷at_quick_exit∷callback
68#define _ONCE_STRONG_FLAG(NAME) NAME ∷_Once∷strong
70#define _ONCE_DOTTY_ARC(A, B) "ONCE_DEPEND_MARKER: " A " -> " B
71#define _ONCE_DOTTY_NODE(A, ...) "ONCE_DEPEND_MARKER: " A " [" #__VA_ARGS__ "]"
75# define _ONCE_DOTTY_FILE ⸤__FILE__⸥
77# define _ONCE_DOTTY_FILE __FILE__
81#define _ONCE_DECLARE(NAME)
89#define _ONCE_DEPEND_I(NAME, ...)
92 static char const ONCE_NEW[]
100#define _ONCE_DEFINE_I(NAME, ...)
106 static char const ONCE_NEW[]
118 static once_flag ONCE_NEW = ONCE_FLAG_INIT;
126#if __has_c_attribute(__gnu__::__constructor__)
128#define _ONCE_DEPEND_WEAK_I(NAME, ...)
131 static char const ONCE_NEW[]
137#define _ONCE_IS_STRONG
138#define _ONCE_STRONG_INIT = true
142#define _ONCE_DEPEND_WEAK_I(NAME, ...)
145 static char const ONCE_NEW[]
150#define _ONCE_IS_STRONG extern
151#define _ONCE_STRONG_INIT
154#define _ONCE_DEFINE_STRONG(...) _ONCE_DEFINE_STRONG_I(__VA_ARGS__ __VA_OPT__(,) __UNIT__,)
157#define _ONCE_DEFINE_STRONG_I(NAME, ...)
162 static char const ONCE_NEW[]
171 [[__gnu__::__constructor__]]
173 static once_flag ONCE_NEW = ONCE_FLAG_INIT;
182#define _ONCE_ATEXIT_I(NAME, ...)
192#define _ONCE_AT_QUICK_EXIT_I(NAME, ...)
246#define ONCE_DEFINE(...) _ONCE_DEFINE(__VA_ARGS__)
269#define ONCE_ATEXIT(...) _ONCE_ATEXIT(__VA_ARGS__)
292#define ONCE_AT_QUICK_EXIT(...) _ONCE_AT_QUICK_EXIT(__VA_ARGS__)
301#define ONCE_DEPEND_WEAK(...) _ONCE_DEPEND_WEAK(__VA_ARGS__)
307#define ONCE_DEFINE_STRONG(...) _ONCE_DEFINE_STRONG(__VA_ARGS__)
__directive__ define
The define directive as specified by the C standard.
Definition directives.c:33
#define GNU_ATTR_USED
Definition ellipsis-error.h:39
#define __STRINGIFY__(...)
Definition ellipsis-error.h:19
#define _ONCE_USER(NAME)
Definition ellipsis-once.h:62
#define _ONCE_ATEXIT_I(NAME,...)
#define _ONCE_DOTTY_FILE
Definition ellipsis-once.h:77
#define _ONCE_DEFINE(...)
Definition ellipsis-once.h:97
#define _ONCE_IS_STRONG
Definition ellipsis-once.h:150
#define _ONCE_ATEXIT_POINTER(NAME)
Definition ellipsis-once.h:64
#define _ONCE_DECLARE(NAME)
#define _ONCE_AT_QUICK_EXIT_POINTER(NAME)
Definition ellipsis-once.h:66
#define _ONCE_DEFINE_I(NAME,...)
#define _ONCE_AT_QUICK_EXIT(...)
Definition ellipsis-once.h:189
#define _ONCE_DOTTY_ARC(A, B)
Definition ellipsis-once.h:70
#define _ONCE_STRONG_INIT
Definition ellipsis-once.h:151
#define _ONCE_ATEXIT(...)
Definition ellipsis-once.h:179
#define _ONCE_DEPEND_WEAK_I(NAME,...)
#define _ONCE_DEPEND_I(NAME,...)
#define _ONCE_DEPEND(...)
Definition ellipsis-once.h:86
#define _ONCE_ATEXIT_CALLBACK(NAME)
Definition ellipsis-once.h:65
#define _ONCE_STRONG_FLAG(NAME)
Definition ellipsis-once.h:68
#define _ONCE_DOTTY_NODE(A,...)
Definition ellipsis-once.h:71
#define _ONCE_CALLBACK(NAME)
Definition ellipsis-once.h:63
#define _ONCE_DEPEND_WEAK(...)
Definition ellipsis-once.h:124
#define ONCE_DEPEND(...)
Declare that this TU depends on a initialization and cleanup feature named NAME
Definition ellipsis-once.h:220
#define _ONCE_AT_QUICK_EXIT_CALLBACK(NAME)
Definition ellipsis-once.h:67
#define _ONCE_AT_QUICK_EXIT_I(NAME,...)
#define _ONCE_INIT(NAME)
Definition ellipsis-once.h:61
#define __VA_OPT__
A pseudo macro that cannot be redefined.
Definition ellipsis-predefined.dirs:89
#define __UNIT__
A pseudo-macro that resolves to the name associated with the current translation unit,...
Definition ellipsis-predefined.dirs:112