list_u.hd
1 #REM
2 #REM
3 #REM
4 #OUTPUT_PERHAPS(Global_list_u.ErwinHExt)
5 #DATE
6
7
8
9 #ifdef ERWIN_DEBUG_INCLUDE
10 #warning "Including Global_list_u.h"
11 #endif
12
13 #ifndef Global_ERWIN_LIST_U_ErwinHExt
14 #define Global_ERWIN_LIST_U_ErwinHExt
15
16 #ifdef ERWIN_DEBUG_INCLUDE
17 #warning "First inclusion of Global_list_u.h"
18 #endif
19
20
21
22 #endif
23 #REM
24 #OUTPUT_PERHAPS(List_u.ErwinHExt)
25
26 #DATE
27
28
29 #ifdef ERWIN_DEBUG_INCLUDE
30 #warning "First inclusion of List_u.ErwinHExt"
31 #endif
32
33 #ifndef ERWIN_List_U_ErwinHExt
34 #define ERWIN_List_U_ErwinHExt
35
36 #ifdef ERWIN_DEBUG_INCLUDE
37 #warning "First inclusion of List_u.ErwinHExt"
38 #endif
39
40 #include "#Global_list_u.ErwinHExt"
41
42
43
44 #endif
45 #REM
46 #OUTPUT(List_d.ErwinHExt)
47
48 #DATE
49
50 #ifdef ERWIN_DEBUG_INCLUDE
51 #warning "Including List_d.h"
52 #endif
53
54 #ifndef ERWIN_List_D_ErwinHExt
55 #define ERWIN_List_D_ErwinHExt
56
57 #ifdef ERWIN_DEBUG_INCLUDE
58 #warning "First inclusion of List_d.ErwinHExt"
59 #endif
60
61 #include "#Global_list_u.ErwinHExt"
62 #include "#List_u.ErwinHExt"
63
64 ErwinUserInclude
65
66
67 #IF(oType == void)
68 # define List_INDEX_IS_VOID 1
69 #ELSE
70 # define List_INDEX_IS_VOID 0
71 #ENDIF
72 #IF(oType == int)
73 # define List_INDEX_IS_INT 1
74 #ELSE
75 # define List_INDEX_IS_INT 0
76 #ENDIF
77 #IF(isChar == 1)
78 # define List_INDEX_IS_CHAR 1
79 #ELSE
80 # define List_INDEX_IS_CHAR 0
81 #ENDIF
82
83
84 #if List_INDEX_IS_VOID
85 # undef List_CONSTANT_ZERO
86 # define List_CONSTANT_ZERO 1
87 # undef List_DYN_ZERO
88 #elif defined(List_CONSTANT_ZERO)
89 # if ERWIN_BOOL_VALUE(List_CONSTANT_ZERO)
90 # undef List_CONSTANT_ZERO
91 # define List_CONSTANT_ZERO 1
92 # else
93 # undef List_CONSTANT_ZERO
94 # define List_CONSTANT_ZERO 0
95 # endif
96 #elif defined(List_DYN_ZERO)
97 # if !ERWIN_BOOL_VALUE(List_DYN_ZERO)
98 # define List_CONSTANT_ZERO 1
99 # else
100 # define List_CONSTANT_ZERO 0
101 # endif
102 #elif defined(Global_oType_HAS_CONSTANT_ZERO)
103 # if ERWIN_BOOL_VALUE(Global_oType_HAS_CONSTANT_ZERO)
104 # define List_CONSTANT_ZERO 1
105 # else
106 # define List_CONSTANT_ZERO 0
107 # endif
108 #elif defined(Global_LIST_CONSTANT_ZERO)
109 # if ERWIN_BOOL_VALUE(Global_LIST_CONSTANT_ZERO)
110 # define List_CONSTANT_ZERO 1
111 # else
112 # define List_CONSTANT_ZERO 0
113 # endif
114 #elif defined(Global_LIST_DYN_ZERO)
115 # if !ERWIN_BOOL_VALUE(Global_LIST_DYN_ZERO)
116 # define List_CONSTANT_ZERO 1
117 # else
118 # define List_CONSTANT_ZERO 0
119 # endif
120 #elif defined(Global_ERWIN_CONSTANT_ZERO)
121 # if ERWIN_BOOL_VALUE(Global_ERWIN_CONSTANT_ZERO)
122 # define List_CONSTANT_ZERO 1
123 # else
124 # define List_CONSTANT_ZERO 0
125 # endif
126 #elif defined(Global_ERWIN_DYN_ZERO)
127 # if !ERWIN_BOOL_VALUE(Global_ERWIN_DYN_ZERO)
128 # define List_CONSTANT_ZERO 1
129 # else
130 # define List_CONSTANT_ZERO 0
131 # endif
132 #elif defined(ALL_ERWIN_CONSTANT_ZERO)
133 # if ERWIN_BOOL_VALUE(ALL_ERWIN_CONSTANT_ZERO)
134 # define List_CONSTANT_ZERO 1
135 # else
136 # define List_CONSTANT_ZERO 0
137 # endif
138 #elif !defined(ALL_ERWIN_DYN_ZERO)
139 # define List_CONSTANT_ZERO 0
140 #elif !ERWIN_BOOL_VALUE(ALL_ERWIN_DYN_ZERO)
141 # define List_CONSTANT_ZERO 1
142 #else
143 # define List_CONSTANT_ZERO 0
144 #endif
145 #if !defined(List_DYN_ZERO)
146 #elif List_CONSTANT_ZERO == ERWIN_BOOL_VALUE(List_DYN_ZERO)
147 # error "Inconsistency: List_CONSTANT_ZERO == List_DYN_ZERO"
148 #endif
149 #if ERWIN_BOOL_VALUE(List_CONSTANT_ZERO)
150 # define List_DYN_ZERO 0
151 #else
152 # define List_DYN_ZERO 1
153 #endif
154
155
156 #if !defined(__cplusplus)
157 # undef List_USE_DEFAULT_ARGS
158 # define List_USE_DEFAULT_ARGS 0
159 # undef List_NO_DEFAULT_ARGS
160 #elif defined(List_USE_DEFAULT_ARGS)
161 # if ERWIN_BOOL_VALUE(List_USE_DEFAULT_ARGS)
162 # undef List_USE_DEFAULT_ARGS
163 # define List_USE_DEFAULT_ARGS 1
164 # else
165 # undef List_USE_DEFAULT_ARGS
166 # define List_USE_DEFAULT_ARGS 0
167 # endif
168 #elif defined(List_NO_DEFAULT_ARGS)
169 # if !ERWIN_BOOL_VALUE(List_NO_DEFAULT_ARGS)
170 # define List_USE_DEFAULT_ARGS 1
171 # else
172 # define List_USE_DEFAULT_ARGS 0
173 # endif
174 #elif defined(Global_LIST_USE_DEFAULT_ARGS)
175 # if ERWIN_BOOL_VALUE(Global_LIST_USE_DEFAULT_ARGS)
176 # define List_USE_DEFAULT_ARGS 1
177 # else
178 # define List_USE_DEFAULT_ARGS 0
179 # endif
180 #elif defined(Global_LIST_NO_DEFAULT_ARGS)
181 # if !ERWIN_BOOL_VALUE(Global_LIST_NO_DEFAULT_ARGS)
182 # define List_USE_DEFAULT_ARGS 1
183 # else
184 # define List_USE_DEFAULT_ARGS 0
185 # endif
186 #elif defined(Global_ERWIN_USE_DEFAULT_ARGS)
187 # if ERWIN_BOOL_VALUE(Global_ERWIN_USE_DEFAULT_ARGS)
188 # define List_USE_DEFAULT_ARGS 1
189 # else
190 # define List_USE_DEFAULT_ARGS 0
191 # endif
192 #elif defined(Global_ERWIN_NO_DEFAULT_ARGS)
193 # if !ERWIN_BOOL_VALUE(Global_ERWIN_NO_DEFAULT_ARGS)
194 # define List_USE_DEFAULT_ARGS 1
195 # else
196 # define List_USE_DEFAULT_ARGS 0
197 # endif
198 #elif defined(ALL_ERWIN_USE_DEFAULT_ARGS)
199 # if ERWIN_BOOL_VALUE(ALL_ERWIN_USE_DEFAULT_ARGS)
200 # define List_USE_DEFAULT_ARGS 1
201 # else
202 # define List_USE_DEFAULT_ARGS 0
203 # endif
204 #elif !defined(ALL_ERWIN_NO_DEFAULT_ARGS)
205 # define List_USE_DEFAULT_ARGS 1
206 #elif !ERWIN_BOOL_VALUE(ALL_ERWIN_NO_DEFAULT_ARGS)
207 # define List_USE_DEFAULT_ARGS 1
208 #else
209 # define List_USE_DEFAULT_ARGS 0
210 #endif
211 #if !defined(List_NO_DEFAULT_ARGS)
212 #elif List_USE_DEFAULT_ARGS == ERWIN_BOOL_VALUE(List_NO_DEFAULT_ARGS)
213 # error "Inconsistency: List_USE_DEFAULT_ARGS == List_NO_DEFAULT_ARGS"
214 #endif
215 #if ERWIN_BOOL_VALUE(List_USE_DEFAULT_ARGS)
216 # define List_NO_DEFAULT_ARGS 0
217 #else
218 # define List_NO_DEFAULT_ARGS 1
219 #endif
220 #if defined(List_USE_DEFAULT_ARGS) && List_USE_DEFAULT_ARGS
221 # define List_DEFAULT_ARG(X) = X
222 #else
223 # define List_DEFAULT_ARG(X)
224 #endif
225
226
227 #if !defined(__cplusplus)
228 #elif defined(List_SUPER_CLASS)
229 #elif defined(Global_LIST_SUPER_CLASS)
230 # define List_SUPER_CLASS Global_LIST_SUPER_CLASS
231 #elif defined(Global_ERWIN_SUPER_CLASS)
232 # define List_SUPER_CLASS Global_ERWIN_SUPER_CLASS
233 #elif defined(ALL_ERWIN_SUPER_CLASS)
234 # define List_SUPER_CLASS ALL_ERWIN_SUPER_CLASS
235 #endif
236
237
238 #if !defined(__cplusplus)
239 #elif defined(List_SUPER_CLASS_ACCESS)
240 #elif defined(Global_LIST_SUPER_CLASS_ACCESS)
241 # define List_SUPER_CLASS_ACCESS Global_LIST_SUPER_CLASS_ACCESS
242 #elif defined(Global_ERWIN_SUPER_CLASS_ACCESS)
243 # define List_SUPER_CLASS_ACCESS Global_ERWIN_SUPER_CLASS_ACCESS
244 #elif defined(ALL_ERWIN_SUPER_CLASS_ACCESS)
245 # define List_SUPER_CLASS_ACCESS ALL_ERWIN_SUPER_CLASS_ACCESS
246 #else
247 # define List_SUPER_CLASS_ACCESS private
248 #endif
249
250
251 #if defined(List_TYPE_INFO_STD_MEMBERS)
252 #elif defined(List_t_TYPE_INFO_STD_MEMBERS)
253 # define List_TYPE_INFO_STD_MEMBERS List_t_TYPE_INFO_STD_MEMBERS
254 #endif
255 #if defined(List_STD_MEMBERS)
256 #elif defined(Global_LIST_STD_MEMBERS)
257 # define List_STD_MEMBERS(CLASS_NAME) Global_LIST_STD_MEMBERS(CLASS_NAME)
258 # define List_TYPE_INFO_STD_MEMBERS Global_LIST_TYPE_INFO_STD_MEMBERS
259 #elif defined(Global_ERWIN_STD_MEMBERS)
260 # define List_STD_MEMBERS(CLASS_NAME) Global_ERWIN_STD_MEMBERS(CLASS_NAME)
261 # define List_TYPE_INFO_STD_MEMBERS Global_ERWIN_TYPE_INFO_STD_MEMBERS
262 #elif defined(ALL_ERWIN_STD_MEMBERS)
263 # define List_STD_MEMBERS(CLASS_NAME) ALL_ERWIN_STD_MEMBERS(CLASS_NAME)
264 # define List_TYPE_INFO_STD_MEMBERS ALL_ERWIN_TYPE_INFO_STD_MEMBERS
265 #else
266 # define List_STD_MEMBERS(CLASS_NAME)
267 # define List_TYPE_INFO_STD_MEMBERS
268 #endif
269
270
271 #if defined(List_HAVE_SIG)
272 # if ERWIN_BOOL_VALUE(List_HAVE_SIG)
273 # undef List_HAVE_SIG
274 # define List_HAVE_SIG 1
275 # else
276 # undef List_HAVE_SIG
277 # define List_HAVE_SIG 0
278 # endif
279 #elif defined(List_NO_SIG)
280 # if !ERWIN_BOOL_VALUE(List_NO_SIG)
281 # define List_HAVE_SIG 1
282 # else
283 # define List_HAVE_SIG 0
284 # endif
285 #elif defined(List_FORCE_SIG)
286 # if ERWIN_BOOL_VALUE(List_FORCE_SIG)
287 # define List_HAVE_SIG 1
288 # else
289 # define List_HAVE_SIG 0
290 # endif
291 #elif defined(Global_LIST_HAVE_SIG)
292 # if ERWIN_BOOL_VALUE(Global_LIST_HAVE_SIG)
293 # define List_HAVE_SIG 1
294 # else
295 # define List_HAVE_SIG 0
296 # endif
297 #elif defined(Global_LIST_NO_SIG)
298 # if !ERWIN_BOOL_VALUE(Global_LIST_NO_SIG)
299 # define List_HAVE_SIG 1
300 # else
301 # define List_HAVE_SIG 0
302 # endif
303 #elif defined(Global_LIST_FORCE_SIG)
304 # if ERWIN_BOOL_VALUE(Global_LIST_FORCE_SIG)
305 # define List_HAVE_SIG 1
306 # else
307 # define List_HAVE_SIG 0
308 # endif
309 #elif defined(Global_ERWIN_HAVE_SIG)
310 # if ERWIN_BOOL_VALUE(Global_ERWIN_HAVE_SIG)
311 # define List_HAVE_SIG 1
312 # else
313 # define List_HAVE_SIG 0
314 # endif
315 #elif defined(Global_ERWIN_NO_SIG)
316 # if !ERWIN_BOOL_VALUE(Global_ERWIN_NO_SIG)
317 # define List_HAVE_SIG 1
318 # else
319 # define List_HAVE_SIG 0
320 # endif
321 #elif defined(Global_ERWIN_FORCE_SIG)
322 # if ERWIN_BOOL_VALUE(Global_ERWIN_FORCE_SIG)
323 # define List_HAVE_SIG 1
324 # else
325 # define List_HAVE_SIG 0
326 # endif
327 #elif defined(ALL_ERWIN_HAVE_SIG)
328 # if ERWIN_BOOL_VALUE(ALL_ERWIN_HAVE_SIG)
329 # define List_HAVE_SIG 1
330 # else
331 # define List_HAVE_SIG 0
332 # endif
333 #elif defined(ALL_ERWIN_NO_SIG)
334 # if !ERWIN_BOOL_VALUE(ALL_ERWIN_NO_SIG)
335 # define List_HAVE_SIG 1
336 # else
337 # define List_HAVE_SIG 0
338 # endif
339 #elif defined(ALL_ERWIN_FORCE_SIG)
340 # if ERWIN_BOOL_VALUE(ALL_ERWIN_FORCE_SIG)
341 # define List_HAVE_SIG 1
342 # else
343 # define List_HAVE_SIG 0
344 # endif
345 #elif defined(DEVEL)
346 # define List_HAVE_SIG 1
347 #else
348 # define List_HAVE_SIG 0
349 #endif
350 #if !defined(List_NO_SIG)
351 #elif List_HAVE_SIG == ERWIN_BOOL_VALUE(List_NO_SIG)
352 # error "Inconsistency: List_HAVE_SIG == List_NO_SIG"
353 #endif
354 #if !defined(List_FORCE_SIG)
355 #elif List_HAVE_SIG != ERWIN_BOOL_VALUE(List_FORCE_SIG)
356 # error "Inconsistency: List_HAVE_SIG != List_FORCE_SIG"
357 #endif
358 #if ERWIN_BOOL_VALUE(List_HAVE_SIG)
359 # define List_NO_SIG 0
360 #else
361 # define List_NO_SIG 1
362 #endif
363
364
365 #if defined(List_ALLOW_NULL)
366 # if ERWIN_BOOL_VALUE(List_ALLOW_NULL)
367 # undef List_ALLOW_NULL
368 # define List_ALLOW_NULL 1
369 # else
370 # undef List_ALLOW_NULL
371 # define List_ALLOW_NULL 0
372 # endif
373 #elif defined(Global_LIST_ALLOW_NULL)
374 # if ERWIN_BOOL_VALUE(Global_LIST_ALLOW_NULL)
375 # define List_ALLOW_NULL 1
376 # else
377 # define List_ALLOW_NULL 0
378 # endif
379 #elif defined(Global_ERWIN_ALLOW_NULL)
380 # if ERWIN_BOOL_VALUE(Global_ERWIN_ALLOW_NULL)
381 # define List_ALLOW_NULL 1
382 # else
383 # define List_ALLOW_NULL 0
384 # endif
385 #elif !defined(ALL_ERWIN_ALLOW_NULL)
386 # define List_ALLOW_NULL 0
387 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_ALLOW_NULL)
388 # define List_ALLOW_NULL 1
389 #else
390 # define List_ALLOW_NULL 0
391 #endif
392
393
394 #if defined(List_FAST_NENTRIES)
395 # if ERWIN_BOOL_VALUE(List_FAST_NENTRIES)
396 # undef List_FAST_NENTRIES
397 # define List_FAST_NENTRIES 1
398 # else
399 # undef List_FAST_NENTRIES
400 # define List_FAST_NENTRIES 0
401 # endif
402 #elif defined(List_SLOW_NENTRIES)
403 # if !ERWIN_BOOL_VALUE(List_SLOW_NENTRIES)
404 # define List_FAST_NENTRIES 1
405 # else
406 # define List_FAST_NENTRIES 0
407 # endif
408 #elif defined(Global_LIST_FAST_NENTRIES)
409 # if ERWIN_BOOL_VALUE(Global_LIST_FAST_NENTRIES)
410 # define List_FAST_NENTRIES 1
411 # else
412 # define List_FAST_NENTRIES 0
413 # endif
414 #elif defined(Global_LIST_SLOW_NENTRIES)
415 # if !ERWIN_BOOL_VALUE(Global_LIST_SLOW_NENTRIES)
416 # define List_FAST_NENTRIES 1
417 # else
418 # define List_FAST_NENTRIES 0
419 # endif
420 #elif defined(Global_ERWIN_FAST_NENTRIES)
421 # if ERWIN_BOOL_VALUE(Global_ERWIN_FAST_NENTRIES)
422 # define List_FAST_NENTRIES 1
423 # else
424 # define List_FAST_NENTRIES 0
425 # endif
426 #elif defined(Global_ERWIN_SLOW_NENTRIES)
427 # if !ERWIN_BOOL_VALUE(Global_ERWIN_SLOW_NENTRIES)
428 # define List_FAST_NENTRIES 1
429 # else
430 # define List_FAST_NENTRIES 0
431 # endif
432 #elif defined(ALL_ERWIN_FAST_NENTRIES)
433 # if ERWIN_BOOL_VALUE(ALL_ERWIN_FAST_NENTRIES)
434 # define List_FAST_NENTRIES 1
435 # else
436 # define List_FAST_NENTRIES 0
437 # endif
438 #elif !defined(ALL_ERWIN_SLOW_NENTRIES)
439 # define List_FAST_NENTRIES 1
440 #elif !ERWIN_BOOL_VALUE(ALL_ERWIN_SLOW_NENTRIES)
441 # define List_FAST_NENTRIES 1
442 #else
443 # define List_FAST_NENTRIES 0
444 #endif
445 #if !defined(List_SLOW_NENTRIES)
446 #elif List_FAST_NENTRIES == ERWIN_BOOL_VALUE(List_SLOW_NENTRIES)
447 # error "Inconsistency: List_FAST_NENTRIES == List_SLOW_NENTRIES"
448 #endif
449 #if ERWIN_BOOL_VALUE(List_FAST_NENTRIES)
450 # define List_SLOW_NENTRIES 0
451 #else
452 # define List_SLOW_NENTRIES 1
453 #endif
454
455
456 #if defined(List_DOUBLY_LINKED)
457 # if ERWIN_BOOL_VALUE(List_DOUBLY_LINKED)
458 # undef List_DOUBLY_LINKED
459 # define List_DOUBLY_LINKED 1
460 # else
461 # undef List_DOUBLY_LINKED
462 # define List_DOUBLY_LINKED 0
463 # endif
464 #elif defined(List_SINGLY_LINKED)
465 # if !ERWIN_BOOL_VALUE(List_SINGLY_LINKED)
466 # define List_DOUBLY_LINKED 1
467 # else
468 # define List_DOUBLY_LINKED 0
469 # endif
470 #elif defined(Global_LIST_DOUBLY_LINKED)
471 # if ERWIN_BOOL_VALUE(Global_LIST_DOUBLY_LINKED)
472 # define List_DOUBLY_LINKED 1
473 # else
474 # define List_DOUBLY_LINKED 0
475 # endif
476 #elif defined(Global_LIST_SINGLY_LINKED)
477 # if !ERWIN_BOOL_VALUE(Global_LIST_SINGLY_LINKED)
478 # define List_DOUBLY_LINKED 1
479 # else
480 # define List_DOUBLY_LINKED 0
481 # endif
482 #elif defined(Global_ERWIN_DOUBLY_LINKED)
483 # if ERWIN_BOOL_VALUE(Global_ERWIN_DOUBLY_LINKED)
484 # define List_DOUBLY_LINKED 1
485 # else
486 # define List_DOUBLY_LINKED 0
487 # endif
488 #elif defined(Global_ERWIN_SINGLY_LINKED)
489 # if !ERWIN_BOOL_VALUE(Global_ERWIN_SINGLY_LINKED)
490 # define List_DOUBLY_LINKED 1
491 # else
492 # define List_DOUBLY_LINKED 0
493 # endif
494 #elif defined(ALL_ERWIN_DOUBLY_LINKED)
495 # if ERWIN_BOOL_VALUE(ALL_ERWIN_DOUBLY_LINKED)
496 # define List_DOUBLY_LINKED 1
497 # else
498 # define List_DOUBLY_LINKED 0
499 # endif
500 #elif !defined(ALL_ERWIN_SINGLY_LINKED)
501 # define List_DOUBLY_LINKED 1
502 #elif !ERWIN_BOOL_VALUE(ALL_ERWIN_SINGLY_LINKED)
503 # define List_DOUBLY_LINKED 1
504 #else
505 # define List_DOUBLY_LINKED 0
506 #endif
507 #if !defined(List_SINGLY_LINKED)
508 #elif List_DOUBLY_LINKED == ERWIN_BOOL_VALUE(List_SINGLY_LINKED)
509 # error "Inconsistency: List_DOUBLY_LINKED == List_SINGLY_LINKED"
510 #endif
511 #if ERWIN_BOOL_VALUE(List_DOUBLY_LINKED)
512 # define List_SINGLY_LINKED 0
513 #else
514 # define List_SINGLY_LINKED 1
515 #endif
516
517
518 #if !defined(__cplusplus)
519 # undef List_MANY_CASTS
520 # define List_MANY_CASTS 0
521 #elif defined(List_MANY_CASTS)
522 # if ERWIN_BOOL_VALUE(List_MANY_CASTS)
523 # undef List_MANY_CASTS
524 # define List_MANY_CASTS 1
525 # else
526 # undef List_MANY_CASTS
527 # define List_MANY_CASTS 0
528 # endif
529 #elif defined(Global_LIST_MANY_CASTS)
530 # if ERWIN_BOOL_VALUE(Global_LIST_MANY_CASTS)
531 # define List_MANY_CASTS 1
532 # else
533 # define List_MANY_CASTS 0
534 # endif
535 #elif defined(Global_ERWIN_MANY_CASTS)
536 # if ERWIN_BOOL_VALUE(Global_ERWIN_MANY_CASTS)
537 # define List_MANY_CASTS 1
538 # else
539 # define List_MANY_CASTS 0
540 # endif
541 #elif !defined(ALL_ERWIN_MANY_CASTS)
542 # define List_MANY_CASTS 0
543 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_MANY_CASTS)
544 # define List_MANY_CASTS 1
545 #else
546 # define List_MANY_CASTS 0
547 #endif
548 #if defined(List_MANY_CASTS) && List_MANY_CASTS
549 # define Vector_DEFAULT_ARG_MANY(X) Vector_DEFAULT_ARG(X)
550 #else
551 # define Vector_DEFAULT_ARG_MANY(X)
552 #endif
553
554
555 #if !defined(__cplusplus)
556 #elif defined(List_DIRECT_RECURSION)
557 # if ERWIN_BOOL_VALUE(List_DIRECT_RECURSION)
558 # undef List_DIRECT_RECURSION
559 # define List_DIRECT_RECURSION 1
560 # else
561 # undef List_DIRECT_RECURSION
562 # define List_DIRECT_RECURSION 0
563 # endif
564 #elif defined(Global_LIST_DIRECT_RECURSION)
565 # if ERWIN_BOOL_VALUE(Global_LIST_DIRECT_RECURSION)
566 # define List_DIRECT_RECURSION 1
567 # else
568 # define List_DIRECT_RECURSION 0
569 # endif
570 #elif defined(Global_ERWIN_DIRECT_RECURSION)
571 # if ERWIN_BOOL_VALUE(Global_ERWIN_DIRECT_RECURSION)
572 # define List_DIRECT_RECURSION 1
573 # else
574 # define List_DIRECT_RECURSION 0
575 # endif
576 #elif !defined(ALL_ERWIN_DIRECT_RECURSION)
577 # define List_DIRECT_RECURSION 0
578 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_DIRECT_RECURSION)
579 # define List_DIRECT_RECURSION 1
580 #else
581 # define List_DIRECT_RECURSION 0
582 #endif
583
584
585 #if defined(__cplusplus)
586 # if List_DYN_ZERO && List_INDEX_IS_INT
587 # undef List_HAVE_INT_CONSTRUCTOR
588 # define List_HAVE_INT_CONSTRUCTOR 0
589 # undef List_NO_INT_CONSTRUCTOR
590 # elif defined(List_HAVE_INT_CONSTRUCTOR)
591 # if ERWIN_BOOL_VALUE(List_HAVE_INT_CONSTRUCTOR)
592 # undef List_HAVE_INT_CONSTRUCTOR
593 # define List_HAVE_INT_CONSTRUCTOR 1
594 # else
595 # undef List_HAVE_INT_CONSTRUCTOR
596 # define List_HAVE_INT_CONSTRUCTOR 0
597 # endif
598 # elif defined(List_NO_INT_CONSTRUCTOR)
599 # if !ERWIN_BOOL_VALUE(List_NO_INT_CONSTRUCTOR)
600 # define List_HAVE_INT_CONSTRUCTOR 1
601 # else
602 # define List_HAVE_INT_CONSTRUCTOR 0
603 # endif
604 # elif defined(Global_LIST_HAVE_INT_CONSTRUCTOR)
605 # if ERWIN_BOOL_VALUE(Global_LIST_HAVE_INT_CONSTRUCTOR)
606 # define List_HAVE_INT_CONSTRUCTOR 1
607 # else
608 # define List_HAVE_INT_CONSTRUCTOR 0
609 # endif
610 # elif defined(Global_LIST_NO_INT_CONSTRUCTOR)
611 # if !ERWIN_BOOL_VALUE(Global_LIST_NO_INT_CONSTRUCTOR)
612 # define List_HAVE_INT_CONSTRUCTOR 1
613 # else
614 # define List_HAVE_INT_CONSTRUCTOR 0
615 # endif
616 # elif defined(Global_ERWIN_HAVE_INT_CONSTRUCTOR)
617 # if ERWIN_BOOL_VALUE(Global_ERWIN_HAVE_INT_CONSTRUCTOR)
618 # define List_HAVE_INT_CONSTRUCTOR 1
619 # else
620 # define List_HAVE_INT_CONSTRUCTOR 0
621 # endif
622 # elif defined(Global_ERWIN_NO_INT_CONSTRUCTOR)
623 # if !ERWIN_BOOL_VALUE(Global_ERWIN_NO_INT_CONSTRUCTOR)
624 # define List_HAVE_INT_CONSTRUCTOR 1
625 # else
626 # define List_HAVE_INT_CONSTRUCTOR 0
627 # endif
628 # elif defined(ALL_ERWIN_HAVE_INT_CONSTRUCTOR)
629 # if ERWIN_BOOL_VALUE(ALL_ERWIN_HAVE_INT_CONSTRUCTOR)
630 # define List_HAVE_INT_CONSTRUCTOR 1
631 # else
632 # define List_HAVE_INT_CONSTRUCTOR 0
633 # endif
634 # elif !defined(ALL_ERWIN_NO_INT_CONSTRUCTOR)
635 # define List_HAVE_INT_CONSTRUCTOR 1
636 # elif !ERWIN_BOOL_VALUE(ALL_ERWIN_NO_INT_CONSTRUCTOR)
637 # define List_HAVE_INT_CONSTRUCTOR 1
638 # else
639 # define List_HAVE_INT_CONSTRUCTOR 0
640 # endif
641 # if !defined(List_NO_INT_CONSTRUCTOR)
642 # elif List_HAVE_INT_CONSTRUCTOR == ERWIN_BOOL_VALUE(List_NO_INT_CONSTRUCTOR)
643 # error "Inconsistency: List_HAVE_INT_CONSTRUCTOR == List_NO_INT_CONSTRUCTOR"
644 # endif
645 # if ERWIN_BOOL_VALUE(List_HAVE_INT_CONSTRUCTOR)
646 # define List_NO_INT_CONSTRUCTOR 0
647 # else
648 # define List_NO_INT_CONSTRUCTOR 1
649 # endif
650 #endif
651
652
653 #ifdef List_IMPLEMENTATION
654
655 ErwinImplementationInclude
656
657 #ifdef Global_ERWIN_COMPILING
658 # include "erwin/defaults.h"
659 # include "erwin/forwards.h"
660 #else
661 # include <erwin/defaults.h>
662 # include <erwin/forwards.h>
663 #endif
664
665
666 #if defined(List_NOMEM_IS_FATAL)
667 # if ERWIN_BOOL_VALUE(List_NOMEM_IS_FATAL)
668 # undef List_NOMEM_IS_FATAL
669 # define List_NOMEM_IS_FATAL 1
670 # else
671 # undef List_NOMEM_IS_FATAL
672 # define List_NOMEM_IS_FATAL 0
673 # endif
674 #elif defined(Global_LIST_NOMEM_IS_FATAL)
675 # if ERWIN_BOOL_VALUE(Global_LIST_NOMEM_IS_FATAL)
676 # define List_NOMEM_IS_FATAL 1
677 # else
678 # define List_NOMEM_IS_FATAL 0
679 # endif
680 #elif defined(Global_ERWIN_NOMEM_IS_FATAL)
681 # if ERWIN_BOOL_VALUE(Global_ERWIN_NOMEM_IS_FATAL)
682 # define List_NOMEM_IS_FATAL 1
683 # else
684 # define List_NOMEM_IS_FATAL 0
685 # endif
686 #elif !defined(ALL_ERWIN_NOMEM_IS_FATAL)
687 # define List_NOMEM_IS_FATAL 0
688 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_NOMEM_IS_FATAL)
689 # define List_NOMEM_IS_FATAL 1
690 #else
691 # define List_NOMEM_IS_FATAL 0
692 #endif
693
694
695 #if defined(List_ASSERTION_FAILED_HANDLER)
696 #elif defined(Global_LIST_ASSERTION_FAILED_HANDLER)
697 # define List_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK) Global_LIST_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK)
698 #elif defined(Global_ERWIN_ASSERTION_FAILED_HANDLER)
699 # define List_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK) Global_ERWIN_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK)
700 #elif defined(ALL_ERWIN_ASSERTION_FAILED_HANDLER)
701 # define List_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK) ALL_ERWIN_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK)
702 #else
703 # define List_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK) Global_ERWIN_DEFAULT_ASSERTION_FAILED_HANDLER(FILE,LINE,FUNC,CHECK)
704 #endif
705
706
707 #if defined(List_OPTIMISE_SIZE)
708 # if ERWIN_BOOL_VALUE(List_OPTIMISE_SIZE)
709 # undef List_OPTIMISE_SIZE
710 # define List_OPTIMISE_SIZE 1
711 # else
712 # undef List_OPTIMISE_SIZE
713 # define List_OPTIMISE_SIZE 0
714 # endif
715 #elif defined(Global_LIST_OPTIMISE_SIZE)
716 # if ERWIN_BOOL_VALUE(Global_LIST_OPTIMISE_SIZE)
717 # define List_OPTIMISE_SIZE 1
718 # else
719 # define List_OPTIMISE_SIZE 0
720 # endif
721 #elif defined(Global_ERWIN_OPTIMISE_SIZE)
722 # if ERWIN_BOOL_VALUE(Global_ERWIN_OPTIMISE_SIZE)
723 # define List_OPTIMISE_SIZE 1
724 # else
725 # define List_OPTIMISE_SIZE 0
726 # endif
727 #elif !defined(ALL_ERWIN_OPTIMISE_SIZE)
728 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_OPTIMISE_SIZE)
729 # define List_OPTIMISE_SIZE 1
730 #else
731 # define List_OPTIMISE_SIZE 0
732 #endif
733
734
735 #if defined(List_SPLIT)
736 # if ERWIN_BOOL_VALUE(List_SPLIT)
737 # undef List_SPLIT
738 # define List_SPLIT 1
739 # else
740 # undef List_SPLIT
741 # define List_SPLIT 0
742 # endif
743 #elif defined(Global_LIST_SPLIT)
744 # if ERWIN_BOOL_VALUE(Global_LIST_SPLIT)
745 # define List_SPLIT 1
746 # else
747 # define List_SPLIT 0
748 # endif
749 #elif defined(Global_ERWIN_SPLIT)
750 # if ERWIN_BOOL_VALUE(Global_ERWIN_SPLIT)
751 # define List_SPLIT 1
752 # else
753 # define List_SPLIT 0
754 # endif
755 #elif !defined(ALL_ERWIN_SPLIT)
756 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_SPLIT)
757 # define List_SPLIT 1
758 #else
759 # define List_SPLIT 0
760 #endif
761
762
763 #if defined(List_ALLOW_OUTOFRANGE)
764 # if ERWIN_BOOL_VALUE(List_ALLOW_OUTOFRANGE)
765 # undef List_ALLOW_OUTOFRANGE
766 # define List_ALLOW_OUTOFRANGE 1
767 # else
768 # undef List_ALLOW_OUTOFRANGE
769 # define List_ALLOW_OUTOFRANGE 0
770 # endif
771 #elif defined(Global_LIST_ALLOW_OUTOFRANGE)
772 # if ERWIN_BOOL_VALUE(Global_LIST_ALLOW_OUTOFRANGE)
773 # define List_ALLOW_OUTOFRANGE 1
774 # else
775 # define List_ALLOW_OUTOFRANGE 0
776 # endif
777 #elif defined(Global_ERWIN_ALLOW_OUTOFRANGE)
778 # if ERWIN_BOOL_VALUE(Global_ERWIN_ALLOW_OUTOFRANGE)
779 # define List_ALLOW_OUTOFRANGE 1
780 # else
781 # define List_ALLOW_OUTOFRANGE 0
782 # endif
783 #elif !defined(ALL_ERWIN_ALLOW_OUTOFRANGE)
784 # define List_ALLOW_OUTOFRANGE 0
785 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_ALLOW_OUTOFRANGE)
786 # define List_ALLOW_OUTOFRANGE 1
787 #else
788 # define List_ALLOW_OUTOFRANGE 0
789 #endif
790
791
792 #if defined(List_RANGE_CHECK)
793 # if ERWIN_BOOL_VALUE(List_RANGE_CHECK)
794 # undef List_RANGE_CHECK
795 # define List_RANGE_CHECK 1
796 # else
797 # undef List_RANGE_CHECK
798 # define List_RANGE_CHECK 0
799 # endif
800 #elif defined(List_NO_RANGE_CHECK)
801 # if !ERWIN_BOOL_VALUE(List_NO_RANGE_CHECK)
802 # define List_RANGE_CHECK 1
803 # else
804 # define List_RANGE_CHECK 0
805 # endif
806 #elif defined(Global_LIST_RANGE_CHECK)
807 # if ERWIN_BOOL_VALUE(Global_LIST_RANGE_CHECK)
808 # define List_RANGE_CHECK 1
809 # else
810 # define List_RANGE_CHECK 0
811 # endif
812 #elif defined(Global_LIST_NO_RANGE_CHECK)
813 # if !ERWIN_BOOL_VALUE(Global_LIST_NO_RANGE_CHECK)
814 # define List_RANGE_CHECK 1
815 # else
816 # define List_RANGE_CHECK 0
817 # endif
818 #elif defined(Global_ERWIN_RANGE_CHECK)
819 # if ERWIN_BOOL_VALUE(Global_ERWIN_RANGE_CHECK)
820 # define List_RANGE_CHECK 1
821 # else
822 # define List_RANGE_CHECK 0
823 # endif
824 #elif defined(Global_ERWIN_NO_RANGE_CHECK)
825 # if !ERWIN_BOOL_VALUE(Global_ERWIN_NO_RANGE_CHECK)
826 # define List_RANGE_CHECK 1
827 # else
828 # define List_RANGE_CHECK 0
829 # endif
830 #elif defined(ALL_ERWIN_RANGE_CHECK)
831 # if ERWIN_BOOL_VALUE(ALL_ERWIN_RANGE_CHECK)
832 # define List_RANGE_CHECK 1
833 # else
834 # define List_RANGE_CHECK 0
835 # endif
836 #elif !defined(ALL_ERWIN_NO_RANGE_CHECK)
837 # define List_RANGE_CHECK 1
838 #elif !ERWIN_BOOL_VALUE(ALL_ERWIN_NO_RANGE_CHECK)
839 # define List_RANGE_CHECK 1
840 #else
841 # define List_RANGE_CHECK 0
842 #endif
843 #if !defined(List_NO_RANGE_CHECK)
844 #elif List_RANGE_CHECK == ERWIN_BOOL_VALUE(List_NO_RANGE_CHECK)
845 # error "Inconsistency: List_RANGE_CHECK == List_NO_RANGE_CHECK"
846 #endif
847 #if ERWIN_BOOL_VALUE(List_RANGE_CHECK)
848 # define List_NO_RANGE_CHECK 0
849 #else
850 # define List_NO_RANGE_CHECK 1
851 #endif
852
853
854 #if defined(List_OUTOFRANGE_IS_FATAL)
855 # if ERWIN_BOOL_VALUE(List_OUTOFRANGE_IS_FATAL)
856 # undef List_OUTOFRANGE_IS_FATAL
857 # define List_OUTOFRANGE_IS_FATAL 1
858 # else
859 # undef List_OUTOFRANGE_IS_FATAL
860 # define List_OUTOFRANGE_IS_FATAL 0
861 # endif
862 #elif defined(Global_LIST_OUTOFRANGE_IS_FATAL)
863 # if ERWIN_BOOL_VALUE(Global_LIST_OUTOFRANGE_IS_FATAL)
864 # define List_OUTOFRANGE_IS_FATAL 1
865 # else
866 # define List_OUTOFRANGE_IS_FATAL 0
867 # endif
868 #elif defined(Global_ERWIN_OUTOFRANGE_IS_FATAL)
869 # if ERWIN_BOOL_VALUE(Global_ERWIN_OUTOFRANGE_IS_FATAL)
870 # define List_OUTOFRANGE_IS_FATAL 1
871 # else
872 # define List_OUTOFRANGE_IS_FATAL 0
873 # endif
874 #elif !defined(ALL_ERWIN_OUTOFRANGE_IS_FATAL)
875 # define List_OUTOFRANGE_IS_FATAL 0
876 #elif ERWIN_BOOL_VALUE(ALL_ERWIN_OUTOFRANGE_IS_FATAL)
877 # define List_OUTOFRANGE_IS_FATAL 1
878 #else
879 # define List_OUTOFRANGE_IS_FATAL 0
880 #endif
881
882
883 #if defined(Global_oType_OCOPY_PROVIDED)
884 #elif defined(Global_oType_OCOPY)
885 # define Global_oType_OCOPY_PROVIDED 1
886 #elif defined(Global_oType_COPY)
887 # define Global_oType_OCOPY_PROVIDED 1
888 # define Global_oType_OCOPY(TO_BE_COPIED,ERR_P) Global_oType_COPY(TO_BE_COPIED,ERR_P)
889 #else
890 # define Global_oType_OCOPY(TO_BE_COPIED,ERR_P) TO_BE_COPIED
891 # define Global_oType_OCOPY_PROVIDED 0
892 #endif
893 #if defined(Global_oType_OCOPY)
894 #elif Global_oType_OCOPY_PROVIDED
895 # error "Inconsistency: Global_oType_OCOPY_PROVIDED is true but Global_oType_OCOPY is undefined."
896 #endif
897
898
899 #if defined(Global_oType_OFREE_PROVIDED)
900 #elif defined(Global_oType_OFREE)
901 # define Global_oType_OFREE_PROVIDED 1
902 #elif defined(Global_oType_FREE)
903 # define Global_oType_OFREE_PROVIDED 1
904 # define Global_oType_OFREE(TO_BE_DESTROYED) Global_oType_FREE(TO_BE_DESTROYED)
905 #else
906 # define Global_oType_OFREE(TO_BE_DESTROYED)
907 # define Global_oType_OFREE_PROVIDED 0
908 #endif
909 #if defined(Global_oType_OFREE)
910 #elif Global_oType_OFREE_PROVIDED
911 # error "Inconsistency: Global_oType_OFREE_PROVIDED is true but Global_oType_OFREE is undefined."
912 #endif
913
914
915 #if !defined(Global_oType_ZERO)
916 # define Global_oType_ZERO (oTypeTouched)0
917 #endif
918
919
920 #if defined(Global_oType_HASH_RAW)
921 #elif defined(Global_oType_HASHVAL)
922 # define Global_oType_HASH_RAW(X) Global_oType_HASHVAL(X)
923 #endif
924
925
926 #if defined(Global_oType_HASH)
927 #elif defined(Global_oType_HASH_RAW)
928 # define Global_oType_HASH(X) Global_hashval_t_hash((Global_oType_HASH_RAW(X)))
929 #endif
930
931
932 #if defined(Global_oType_CMP_PROVIDED)
933 #elif defined(Global_oType_CMP)
934 # define Global_oType_CMP_PROVIDED 1
935 #else
936 # define Global_oType_CMP_PROVIDED 0
937 #endif
938 #if defined(Global_oType_CMP)
939 #elif Global_oType_CMP_PROVIDED
940 # error "Inconsistency: Global_oType_CMP_PROVIDED is true but Global_oType_CMP is undefined."
941 #endif
942
943
944 #if defined(Global_oType_EQUAL)
945 #elif !Global_oType_CMP_PROVIDED
946 # define Global_oType_EQUAL(A,B) (A) == (B)
947 #elif defined(Global_oType_CMP)
948 # define Global_oType_EQUAL(A,B) (Global_oType_CMP(A,B)) == 0
949 #endif
950
951 #endif
952 #endif