eĿlipsis
a language independent preprocessor
 
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Loading...
Searching...
No Matches
ellipsis-tlist.h
Go to the documentation of this file.
1
8#ifndef ELLIPSIS_TLIST_H
9#define ELLIPSIS_TLIST_H 1
10
11#include "ellipsis-token.h"
13#include <threads.h>
14
15extern thread_local bool volatile ellipsis‿contracts‿ignore‿dynamic;
16extern thread_local bool volatile ellipsis‿contracts‿proceed‿dynamic;
17extern thread_local bool volatile ellipsis‿contracts‿verbose‿dynamic;
18
20
21#include <stdio.h>
22#include <stdlib.h>
23#include <stdint.h>
24
25#define STRINGIFY(...) STRINGIFY_(__VA_ARGS__)
26#define STRINGIFY_(...) #__VA_ARGS__
27
28#define ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR, ...) \
29({\
30 static char const contract_format_ ## COUNT[] = \
31 __FILE__ ":" STRINGIFY(__LINE__) ": violation of " CTYPE " `" CSTR "`" __VA_OPT__(", ") __VA_ARGS__ "\n";\
32 (VERB \
33 ? fputs(contract_format_ ## COUNT, stderr) \
34 : 0);\
35 })
36
37#define ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE, ...) \
38(((false) || (COND)) \
39 ? (void)0 \
40 : (ELLIPSIS_CONTRACT_VIOLATION(COUNT, VERB, CTYPE, CSTR __VA_OPT__(,) __VA_ARGS__) \
41 , ((false) \
42 ? (void)0 \
43 : ACTION())))
44
45#define ELLIPSIS_TO_VOIDS(...) ((void*)((uintptr_t)((__VA_ARGS__)-(__VA_ARGS__))))
46
47#define ELLIPSIS_TEST_ICE(...) (false ? ELLIPSIS_TO_VOIDS(__VA_ARGS__) : (ellipsis‿contracts‿is_ice*)nullptr)
48
49#define ELLIPSIS_CONTRACT_ICE_OR_TRUE(...) \
50 _Generic( \
51 ELLIPSIS_TEST_ICE(__VA_ARGS__), \
52 ellipsis‿contracts‿is_ice*: (__VA_ARGS__), \
53 default: true)
54
55#define ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR, ...) \
56 ({\
57 static_assert(ELLIPSIS_CONTRACT_ICE_OR_TRUE(COND), \
58 "compile time violation of " CTYPE " " CSTR \
59 __VA_OPT__(", ") __VA_ARGS__ );\
60 })
61
62#define ELLIPSIS_CONTRACT(COUNT, COND, ACTION, VERB, CSTR, CTYPE, ...) \
63 \
64 do { \
65 _Generic( \
66 ELLIPSIS_TEST_ICE(COND), \
67 ellipsis‿contracts‿is_ice*: ELLIPSIS_CONTRACT_CHECK_STATIC(CTYPE, COND, CSTR __VA_OPT__(,) __VA_ARGS__), \
68 default: ELLIPSIS_CONTRACT_IMPL(COUNT, COND, ACTION, VERB, CSTR, CTYPE __VA_OPT__(,) __VA_ARGS__));\
69 } while(false)
70
72
92 [[deprecated]] mtx_t mtx;
94 [[deprecated]] cnd_t cnd;
96 [[deprecated]] token* first;
98 [[deprecated]] token* last;
100 [[deprecated]] bool finished;
102};
103
111inline
113 typeof(ellipsis‿token‿list*) DEFER_LOC_ID_0_1;
114 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
115 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿token‿list*)) {};
116 }
117 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
118 [[__maybe_unused__]] register bool defer_return_flag = false;
119 if (false) {
120 DEFER_ID_1_1:
121 goto DEFER_END_ID_1_2;
122 } else {
123 (void)0 ;
124 do {ELLIPSIS_CONTRACT(1, __LOC_ID_0_1, abort, true, "__LOC_ID_0_1", "assertion", "attempt to initialize an invalid token list");} while (false);
125 /* defer */
126 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
127 unsigned (*DEFER_LOC_ID_1_1)[DEFER_LOC_ID_0_2] = {};
128 if (false) {
129 DEFER_ID_1_2: {
130 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
131 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
132 {ELLIPSIS_CONTRACT(2, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), unreachable, false, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assumption", "unable to initialize a token list");}
133 }
134 goto DEFER_ID_1_1;
135 } else
136 (void)0 ;
137 extern typeof(ellipsis‿token‿list‿init) ellipsis‿token‿list‿init‿_Insta;
138 do {
139 /* return mode 2 */
140 defer_return_flag = true;
141 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿init‿_Insta(__LOC_ID_0_1);
142 goto DEFER_ID_1_2;
143 } while(false);
144
145 goto DEFER_ID_1_2;
146 }
147[[__maybe_unused__]] DEFER_END_ID_1_2:;
148 return DEFER_LOC_ID_0_1;
149}
150
156inline
158 typeof(ellipsis‿token‿list*) DEFER_LOC_ID_0_1;
159 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
160 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿token‿list*)) {};
161 }
162 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
163 [[__maybe_unused__]] register bool defer_return_flag = false;
164 if (false) {
165 DEFER_ID_1_3:
166 goto DEFER_END_ID_1_4;
167 } else {
168 (void)0 ;
169 do {ELLIPSIS_CONTRACT(3, __LOC_ID_0_2, abort, true, "__LOC_ID_0_2", "assertion", "attempt to copy an an invalid token list");} while (false);
170 /* defer */
171 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
172 unsigned (*DEFER_LOC_ID_1_2)[DEFER_LOC_ID_0_2] = {};
173 if (false) {
174 DEFER_ID_1_4: {
175 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
176 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
177 {ELLIPSIS_CONTRACT(4, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), unreachable, false, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assumption", "unable to copy a token list");}
178 }
179 goto DEFER_ID_1_3;
180 } else
181 (void)0 ;
182 extern typeof(ellipsis‿token‿list‿cpy) ellipsis‿token‿list‿cpy‿_Insta;
183 do {
184 /* return mode 2 */
185 defer_return_flag = true;
186 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿cpy‿_Insta(__LOC_ID_0_2);
187 goto DEFER_ID_1_4;
188 } while(false);
189
190 goto DEFER_ID_1_4;
191 }
192[[__maybe_unused__]] DEFER_END_ID_1_4:;
193 return DEFER_LOC_ID_0_1;
194}
195
204inline
205ellipsis‿str32* ellipsis‿token‿list‿stringify(ellipsis‿token‿list const __LOC_ID_0_3[static const 1]) {
206 typeof(ellipsis‿str32*) DEFER_LOC_ID_0_1;
207 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
208 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿str32*)) {};
209 }
210 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
211 [[__maybe_unused__]] register bool defer_return_flag = false;
212 if (false) {
213 DEFER_ID_1_5:
214 goto DEFER_END_ID_1_6;
215 } else {
216 (void)0 ;
217 do {ELLIPSIS_CONTRACT(5, __LOC_ID_0_3, abort, true, "__LOC_ID_0_3", "assertion", "attempt to stringify an an invalid token list");} while (false);
218 /* defer */
219 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
220 unsigned (*DEFER_LOC_ID_1_3)[DEFER_LOC_ID_0_2] = {};
221 if (false) {
222 DEFER_ID_1_6: {
223 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
224 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
225 {ELLIPSIS_CONTRACT(6, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), unreachable, false, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assumption", "unable to stringify a token list");}
226 }
227 goto DEFER_ID_1_5;
228 } else
229 (void)0 ;
230 extern typeof(ellipsis‿token‿list‿stringify) ellipsis‿token‿list‿stringify‿_Insta;
231 do {
232 /* return mode 2 */
233 defer_return_flag = true;
234 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿stringify‿_Insta(__LOC_ID_0_3);
235 goto DEFER_ID_1_6;
236 } while(false);
237
238 goto DEFER_ID_1_6;
239 }
240[[__maybe_unused__]] DEFER_END_ID_1_6:;
241 return DEFER_LOC_ID_0_1;
242}
243
244inline
245size_t ellipsis‿token‿list‿scatter(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const** space) {
246 typeof(size_t) DEFER_LOC_ID_0_1;
247 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
248 DEFER_LOC_ID_0_1 = (typeof(size_t)) {};
249 }
250 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
251 [[__maybe_unused__]] register bool defer_return_flag = false;
252 if (false) {
253 DEFER_ID_1_7:
254 goto DEFER_END_ID_1_8;
255 } else {
256 (void)0 ;
257 do {ELLIPSIS_CONTRACT(7, arg, abort, true, "arg", "assertion", "attempt to scatter into an invalid token list");} while (false);
258 do {ELLIPSIS_CONTRACT(8, in, abort, true, "in", "assertion", "attempt to scatter from an invalid token list");} while (false);
260 do {
261 /* return mode 2 */
262 defer_return_flag = true;
263 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿scatter‿_Insta(len, arg, in, var, call, space);
264 goto DEFER_ID_1_7;
265 } while(false);
266
267 goto DEFER_ID_1_7;
268 }
269[[__maybe_unused__]] DEFER_END_ID_1_8:;
270 return DEFER_LOC_ID_0_1;
271}
272
280inline
282 typeof(ellipsis‿token‿list*) DEFER_LOC_ID_0_1;
283 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
284 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿token‿list*)) {};
285 }
286 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
287 [[__maybe_unused__]] register bool defer_return_flag = false;
288 if (false) {
289 DEFER_ID_1_8:
290 goto DEFER_END_ID_1_10;
291 } else {
292 (void)0 ;
293 do {ELLIPSIS_CONTRACT(9, __LOC_ID_0_4, unreachable, false, "__LOC_ID_0_4", "assumption", "attempt to initialize an invalid token list");} while (false);
294 /* defer */
295 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
296 unsigned (*DEFER_LOC_ID_1_4)[DEFER_LOC_ID_0_2] = {};
297 if (false) {
298 DEFER_ID_1_9: {
299 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
300 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
301 {ELLIPSIS_CONTRACT(10, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), abort, true, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assertion", "unable to initialize a token list");}
302 }
303 goto DEFER_ID_1_8;
304 } else
305 (void)0 ;
306 extern typeof(ellipsis‿token‿list‿init‿_Ctra) ellipsis‿token‿list‿init‿_Inner;
307 do {
308 /* return mode 2 */
309 defer_return_flag = true;
310 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿init‿_Inner(__LOC_ID_0_4);
311 goto DEFER_ID_1_9;
312 } while(false);
313
314 goto DEFER_ID_1_9;
315 }
316[[__maybe_unused__]] DEFER_END_ID_1_10:;
317 return DEFER_LOC_ID_0_1;
318}
319
325inline
327 typeof(ellipsis‿token‿list*) DEFER_LOC_ID_0_1;
328 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
329 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿token‿list*)) {};
330 }
331 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
332 [[__maybe_unused__]] register bool defer_return_flag = false;
333 if (false) {
334 DEFER_ID_1_10:
335 goto DEFER_END_ID_1_12;
336 } else {
337 (void)0 ;
338 do {ELLIPSIS_CONTRACT(11, __LOC_ID_0_5, unreachable, false, "__LOC_ID_0_5", "assumption", "attempt to copy an an invalid token list");} while (false);
339 /* defer */
340 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
341 unsigned (*DEFER_LOC_ID_1_5)[DEFER_LOC_ID_0_2] = {};
342 if (false) {
343 DEFER_ID_1_11: {
344 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
345 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
346 {ELLIPSIS_CONTRACT(12, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), abort, true, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assertion", "unable to copy a token list");}
347 }
348 goto DEFER_ID_1_10;
349 } else
350 (void)0 ;
351 extern typeof(ellipsis‿token‿list‿cpy‿_Ctra) ellipsis‿token‿list‿cpy‿_Inner;
352 do {
353 /* return mode 2 */
354 defer_return_flag = true;
355 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿cpy‿_Inner(__LOC_ID_0_5);
356 goto DEFER_ID_1_11;
357 } while(false);
358
359 goto DEFER_ID_1_11;
360 }
361[[__maybe_unused__]] DEFER_END_ID_1_12:;
362 return DEFER_LOC_ID_0_1;
363}
364
373inline
374ellipsis‿str32* ellipsis‿token‿list‿stringify‿_Ctra(ellipsis‿token‿list const __LOC_ID_0_6[static const 1]) {
375 typeof(ellipsis‿str32*) DEFER_LOC_ID_0_1;
376 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
377 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿str32*)) {};
378 }
379 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
380 [[__maybe_unused__]] register bool defer_return_flag = false;
381 if (false) {
382 DEFER_ID_1_12:
383 goto DEFER_END_ID_1_14;
384 } else {
385 (void)0 ;
386 do {ELLIPSIS_CONTRACT(13, __LOC_ID_0_6, unreachable, false, "__LOC_ID_0_6", "assumption", "attempt to stringify an an invalid token list");} while (false);
387 /* defer */
388 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
389 unsigned (*DEFER_LOC_ID_1_6)[DEFER_LOC_ID_0_2] = {};
390 if (false) {
391 DEFER_ID_1_13: {
392 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
393 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
394 {ELLIPSIS_CONTRACT(14, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), abort, true, "((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)", "assertion", "unable to stringify a token list");}
395 }
396 goto DEFER_ID_1_12;
397 } else
398 (void)0 ;
399 extern typeof(ellipsis‿token‿list‿stringify‿_Ctra) ellipsis‿token‿list‿stringify‿_Inner;
400 do {
401 /* return mode 2 */
402 defer_return_flag = true;
403 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿stringify‿_Inner(__LOC_ID_0_6);
404 goto DEFER_ID_1_13;
405 } while(false);
406
407 goto DEFER_ID_1_13;
408 }
409[[__maybe_unused__]] DEFER_END_ID_1_14:;
410 return DEFER_LOC_ID_0_1;
411}
412
413inline
414size_t ellipsis‿token‿list‿scatter‿_Ctra(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const** space) {
415 typeof(size_t) DEFER_LOC_ID_0_1;
416 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
417 DEFER_LOC_ID_0_1 = (typeof(size_t)) {};
418 }
419 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
420 [[__maybe_unused__]] register bool defer_return_flag = false;
421 if (false) {
422 DEFER_ID_1_14:
423 goto DEFER_END_ID_1_16;
424 } else {
425 (void)0 ;
426 do {ELLIPSIS_CONTRACT(15, arg, unreachable, false, "arg", "assumption", "attempt to scatter into an invalid token list");} while (false);
427 do {ELLIPSIS_CONTRACT(16, in, unreachable, false, "in", "assumption", "attempt to scatter from an invalid token list");} while (false);
429 do {
430 /* return mode 2 */
431 defer_return_flag = true;
432 DEFER_LOC_ID_0_1 = ellipsis‿token‿list‿scatter‿_Inner(len, arg, in, var, call, space);
433 goto DEFER_ID_1_14;
434 } while(false);
435
436 goto DEFER_ID_1_14;
437 }
438[[__maybe_unused__]] DEFER_END_ID_1_16:;
439 return DEFER_LOC_ID_0_1;
440}
441
448
455
462
469
478
488
495
501
507inline
509 if (tl) {
511 free(tl);
512 }
513}
514
523inline void ellipsis‿token‿list‿move(ellipsis‿token‿list* __LOC_ID_0_7[restrict static 1], ellipsis‿token‿list**restrict __LOC_ID_0_8) {
524 if (*__LOC_ID_0_7)
525 ellipsis‿token‿list‿delete((void*)*__LOC_ID_0_7);
526 if (__LOC_ID_0_8) {
527 *__LOC_ID_0_7= *__LOC_ID_0_8;
528 *__LOC_ID_0_8= nullptr;
529 } else {
530 *__LOC_ID_0_7= nullptr;
531 }
532
533}
534
541inline
542ellipsis‿token‿list* ellipsis‿token‿list‿new(void) {
543 typeof(ellipsis‿token‿list*) DEFER_LOC_ID_0_1;
544 if (__func__[0] == 'm' && __func__[1] == 'a' && __func__[2] == 'i' && __func__[3] == 'n' && !__func__[4]) {
545 DEFER_LOC_ID_0_1 = (typeof(ellipsis‿token‿list*)) {};
546 }
547 [[__maybe_unused__]] register unsigned DEFER_LOC_ID_0_2 = 1U;
548 [[__maybe_unused__]] register bool defer_return_flag = false;
549 if (false) {
550 DEFER_ID_1_15:
551 goto DEFER_END_ID_1_18;
552 } else {
553 (void)0 ;
554 /* defer */
555 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
556 unsigned (*DEFER_LOC_ID_1_7)[DEFER_LOC_ID_0_2] = {};
557 if (false) {
558 DEFER_ID_1_16: {
559 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
560 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
561 {ELLIPSIS_CONTRACT(17, ((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1), abort, true, "defer_return_value", "postcondition", "unable to allocate token list");}
562 }
563 goto DEFER_ID_1_15;
564 } else
565 (void)0 ;
566 /* defer */
567 [[__maybe_unused__, __deprecated__("dummy variable for better diagnostics")]]
568 unsigned (*DEFER_LOC_ID_1_8)[DEFER_LOC_ID_0_2] = {};
569 if (false) {
570 DEFER_ID_1_17: {
571 [[__maybe_unused__, __deprecated__("invalid termination of a deferred block")]]
572 register bool const defer_return_flag = false, defer_break_flag = false, defer_continue_flag = false;
573 {if (((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1)) ellipsis‿token‿list‿init(((typeof(DEFER_LOC_ID_0_1))DEFER_LOC_ID_0_1));}
574 }
575 goto DEFER_ID_1_16;
576 } else
577 (void)0 ;
578 do {
579 /* return mode 2 */
580 defer_return_flag = true;
581 DEFER_LOC_ID_0_1 = ellipsis‿malloc(sizeof(ellipsis‿token‿list));
582 goto DEFER_ID_1_17;
583 } while(false);
584
585 goto DEFER_ID_1_17;
586 }
587[[__maybe_unused__]] DEFER_END_ID_1_18:;
588 return DEFER_LOC_ID_0_1;
589}
590
599
606
614
621
628
644size_t ellipsis‿token‿list‿collect_call(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, ellipsis‿str32 const* space[static 1]);
645
652
653#endif
#define STDC_ATTR_NODISCARD(...)
Definition ellipsis-error.h:68
struct ellipsis‿contracts‿is_ice ellipsis‿contracts‿is_ice
Definition ellipsis-expression.c:24
ellipsis‿malloc ellipsis‿malloc
Definition ellipsis-malloc.c:10
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿wait(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:600
ELLIPSIS_FA_UNDEPRECATE ellipsis‿token‿list * ellipsis‿token‿list‿cpy‿_Inner(ellipsis‿token‿list tl[static const 1])
Definition ellipsis-tlist.c:89
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿destroy(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:801
ELLIPSIS_FA_UNDEPRECATE ellipsis‿token‿list * ellipsis‿token‿list‿init‿_Inner(ellipsis‿token‿list tl[static const 1])
Definition ellipsis-tlist.c:81
ELLIPSIS_FA_UNDEPRECATE ellipsis‿str32 * ellipsis‿token‿list‿stringify‿_Inner(ellipsis‿token‿list const source[static const 1])
Definition ellipsis-tlist.c:98
ELLIPSIS_FA_UNDEPRECATE bool ellipsis‿token‿list‿is_finished(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:636
ELLIPSIS_FA_UNDEPRECATE token * ellipsis‿token‿list‿all(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:442
ELLIPSIS_FA_UNDEPRECATE size_t ellipsis‿token‿list‿scatter‿_Inner(size_t len, ellipsis‿token‿list arg[static restrict len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const **space)
Definition ellipsis-tlist.c:132
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿open(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:551
token * ellipsis‿token‿list‿last(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:835
token * ellipsis‿token‿list‿first(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:831
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿append(ellipsis‿token‿list tl[static 1], token *to)
Definition ellipsis-tlist.c:515
token const * ellipsis‿token‿list‿top(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:827
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿push(ellipsis‿token‿list target[static 1], ellipsis‿token‿list source[static 1])
Definition ellipsis-tlist.c:738
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿close(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:575
ELLIPSIS_FA_UNDEPRECATE token * ellipsis‿token‿list‿pop(ellipsis‿token‿list tl[static 1])
Definition ellipsis-tlist.c:366
size_t ellipsis‿token‿list‿scatter‿_Insta(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const **space)
Definition ellipsis-tlist.c:337
ELLIPSIS_FA_UNDEPRECATE void ellipsis‿token‿list‿flush(ellipsis‿token‿list target[static 1], ellipsis‿token‿list source[static 1])
Definition ellipsis-tlist.c:675
size_t ellipsis‿token‿list‿scatter‿_Ctra(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const **space)
Definition ellipsis-tlist.h:414
thread_local bool volatile ellipsis‿contracts‿verbose‿dynamic
#define ELLIPSIS_CONTRACT(COUNT, COND, ACTION, VERB, CSTR, CTYPE,...)
Definition ellipsis-tlist.h:62
ellipsis‿token token
Definition ellipsis-tlist.h:71
thread_local bool volatile ellipsis‿contracts‿proceed‿dynamic
size_t ellipsis‿token‿list‿scatter(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, bool call, ellipsis‿str32 const **space)
Definition ellipsis-tlist.h:245
thread_local bool volatile ellipsis‿contracts‿ignore‿dynamic
A structure with a flexible array member of base type ellipsis‿str32‿base.
Definition ellipsis-str32.h:156
A token element as recognized during processing.
Definition ellipsis-token.h:94
a token list
Definition ellipsis-tlist.h:84
ellipsis‿token‿list * ellipsis‿token‿list‿init(ellipsis‿token‿list __LOC_ID_0_1[static const 1])
Initialize a token list.
Definition ellipsis-tlist.h:112
size_t ellipsis‿token‿list‿collect_call(size_t len, ellipsis‿token‿list arg[static len], ellipsis‿token‿list in[restrict static 1], bool var, ellipsis‿str32 const *space[static 1])
collect the arguments for_DEFER_REPLAY_FOR a macro call
bool ellipsis‿token‿list‿equiv(ellipsis‿token‿list *a, ellipsis‿token‿list *b)
Check if two token lists are token equivalent.
void ellipsis‿token‿list‿move(ellipsis‿token‿list *__LOC_ID_0_7[restrict static 1], ellipsis‿token‿list **restrict __LOC_ID_0_8)
Move a ellipsis‿token‿list pointed to by the second parameter to the one pointed to by the first.
Definition ellipsis-tlist.h:523
token * first
Definition ellipsis-tlist.h:96
cnd_t cnd
Definition ellipsis-tlist.h:94
bool finished
Definition ellipsis-tlist.h:100
void ellipsis‿token‿list‿delete(ellipsis‿token‿list *tl)
delete all tokens and free the list itself
Definition ellipsis-tlist.h:508
token * last
Definition ellipsis-tlist.h:98
ellipsis‿token‿list * ellipsis‿token‿list‿cpy(ellipsis‿token‿list __LOC_ID_0_2[static const 1])
create a new token list by deep copying the pointed to token list
Definition ellipsis-tlist.h:157
mtx_t mtx
Definition ellipsis-tlist.h:92
ellipsis‿token‿list * ellipsis‿token‿list‿init‿_Ctra(ellipsis‿token‿list __LOC_ID_0_4[static const 1])
Initialize a token list.
Definition ellipsis-tlist.h:281
ellipsis‿token‿list * ellipsis‿token‿list‿cpy‿_Ctra(ellipsis‿token‿list __LOC_ID_0_5[static const 1])
create a new token list by deep copying the pointed to token list
Definition ellipsis-tlist.h:326