2
3
4
5
9
10
11
12
13
14
18#define _ae2f_gnuc(a) a
22#define N_ae2f_gnuc(a) a
26
27
28
29
30
31
35#define _ae2f_msvc(a) a
39#define N_ae2f_msvc(a) a
43
44
45
48#define ae2f_ccpure __attribute__((pure))
49#elif __ae2f_stdcheck_C(202300L
) && ae2f_stdcc_v
50#define ae2f_ccpure [[pure]]
57
58
59
62#define ae2f_ccconst __attribute__((const))
63#elif __ae2f_stdcheck_C(202300L
) && ae2f_stdcc_v
64#define ae2f_ccconst [[const]]
70
71
72
75#define ae2f_restrict __restrict
77#define ae2f_restrict __restrict
78#elif __ae2f_stdcheck_C(199900L
) && ae2f_stdcc_v
79#define ae2f_restrict restrict
85
86
87
90#define ae2f_retnew __declspec(restrict)
92#define ae2f_retnew __attribute__((malloc))
98
99
100
103#define ae2f_decl __declspec(dllimport)
109
110
111
114#define ae2f_impl __attribute__((visibility("default")))
116#define ae2f_impl __declspec(dllexport)
122
123
124
127#define ae2f_noexcept __attribute__((nothrow))
129#define ae2f_noexcept __declspec(nothrow)
130#elif ae2f_stdcc_v >= 201100L
131#define ae2f_noexcept noexcept
138
139
140
143#define ae2f_inline __inline__
145#define ae2f_inline __inline
146#elif ae2f_stdc_v >= 199900L
|| ae2f_stdcc_v
147#define ae2f_inline inline
153
154
155
156#undef ae2f_fallthrough
158#define ae2f_fallthrough __attribute__((fallthrough))
159#elif _ae2f_msvc(!)0
&& _MSC_VER >= 1934
160#define ae2f_fallthrough [[fallthrough]]
161#elif ae2f_stdc_v >= 202300L
|| ae2f_stdcc_v
162#define ae2f_fallthrough [[fallthrough]]
164#define ae2f_fallthrough
169
170
171
172
173
174
176#undef ae2f_expected_not
178#define ae2f_expected(a) (__builtin_expect(!!(a), 1
))
179#define ae2f_expected_not(a) (__builtin_expect(!!(a), 0
))
180#elif _ae2f_msvc(!)0
&& _MSVC_LANG >= 202002L
|| ae2f_stdcc_v >= 202002L
181#define ae2f_expected(a) (a) [[likely]]
182#define ae2f_expected_not(a) (a) [[unlikely]]
184#define ae2f_expected(a) a
185#define ae2f_expected_not(a) a
188#undef ae2f_unexpected
191#undef ae2f_unexpected_but_if
194#undef ae2f_expected_if
197#undef ae2f_unexpected_else
200#undef ae2f_expected_but_else
204
205
206
207#undef ae2f_unreachable
209#define ae2f_unreachable() __builtin_unreachable()
211#define ae2f_unreachable() __assume(0
)
213#define ae2f_unreachable()
217
218
219
220
221
224#define ae2f_assume(a) __attribute__((__assume__(a)))
226#define ae2f_assume(a) __assume(a)
#define ae2f_assume(a)
tells the compiler that value if a is false, below this keyword is not expected to be reached.
#define ae2f_ccpure
Keyword as [[pure]] on C23.
#define ae2f_ccconst
Keyword as [[const]] on C23..
#define ae2f_noexcept
marker that this function does not throw something.
#define ae2f_restrict
Keyword as restrict on C99.
#define ae2f_expected_not(a)
expectes a as false.
#define ae2f_unreachable()
tells the compiler that below this keyword is not expected to be reached.
#define _ae2f_msvc(a)
Available when compiled with msvc.
#define _ae2f_gnuc(a)
Available when compiled with gcc compiler.
#define ae2f_inline
inline
#define ae2f_expected(a)
expectes a as true.