C Container Collection (CCC)
Loading...
Searching...
No Matches
impl_traits.h
1
#ifndef CCC_IMPL_TRAITS_H
2
#define CCC_IMPL_TRAITS_H
3
4
/* NOLINTBEGIN */
5
#include "../buffer.h"
6
#include "../doubly_linked_list.h"
7
#include "../flat_double_ended_queue.h"
8
#include "../flat_hash_map.h"
9
#include "../flat_priority_queue.h"
10
#include "../handle_hash_map.h"
11
#include "../handle_ordered_map.h"
12
#include "../handle_realtime_ordered_map.h"
13
#include "../ordered_map.h"
14
#include "../ordered_multimap.h"
15
#include "../priority_queue.h"
16
#include "../realtime_ordered_map.h"
17
#include "../singly_linked_list.h"
18
#include "../types.h"
19
/* NOLINTEND */
20
21
/*==================== Entry/Handle Interface =========================*/
22
23
#define ccc_impl_swap_entry(container_ptr, swap_args...) \
24
_Generic((container_ptr), \
25
ccc_flat_hash_map *: ccc_fhm_swap_entry, \
26
ccc_ordered_map *: ccc_om_swap_entry, \
27
ccc_ordered_multimap *: ccc_omm_swap_entry, \
28
ccc_realtime_ordered_map *: ccc_rom_swap_entry)((container_ptr), \
29
swap_args)
30
31
#define ccc_impl_swap_entry_r(container_ptr, key_val_container_handle_ptr...) \
32
&(ccc_entry) \
33
{ \
34
ccc_impl_swap_entry(container_ptr, key_val_container_handle_ptr).impl_ \
35
}
36
37
#define ccc_impl_swap_handle(container_ptr, swap_args...) \
38
_Generic((container_ptr), \
39
ccc_handle_hash_map *: ccc_hhm_swap_handle, \
40
ccc_handle_ordered_map *: ccc_hom_swap_handle, \
41
ccc_handle_realtime_ordered_map \
42
*: ccc_hrm_swap_handle)((container_ptr), swap_args)
43
44
#define ccc_impl_swap_handle_r(container_ptr, key_val_container_handle_ptr...) \
45
&(ccc_handle) \
46
{ \
47
ccc_impl_swap_handle(container_ptr, key_val_container_handle_ptr) \
48
.impl_ \
49
}
50
51
#define ccc_impl_try_insert(container_ptr, try_insert_args...) \
52
_Generic((container_ptr), \
53
ccc_handle_hash_map *: ccc_hhm_try_insert, \
54
ccc_handle_ordered_map *: ccc_hom_try_insert, \
55
ccc_handle_realtime_ordered_map *: ccc_hrm_try_insert, \
56
ccc_flat_hash_map *: ccc_fhm_try_insert, \
57
ccc_ordered_map *: ccc_om_try_insert, \
58
ccc_ordered_multimap *: ccc_omm_try_insert, \
59
ccc_realtime_ordered_map *: ccc_rom_try_insert)((container_ptr), \
60
try_insert_args)
61
62
#define ccc_impl_try_insert_r(container_ptr, try_insert_args...) \
63
_Generic((container_ptr), \
64
ccc_handle_hash_map \
65
*: &(ccc_handle){ccc_hhm_try_insert( \
66
(ccc_handle_hash_map *)container_ptr, \
67
(ccc_hhmap_elem *)try_insert_args) \
68
.impl_}, \
69
ccc_handle_ordered_map \
70
*: &(ccc_handle){ccc_hom_try_insert( \
71
(ccc_handle_ordered_map *)container_ptr, \
72
(ccc_homap_elem *)try_insert_args) \
73
.impl_}, \
74
ccc_handle_realtime_ordered_map \
75
*: &(ccc_handle){ccc_hrm_try_insert( \
76
(ccc_handle_realtime_ordered_map *) \
77
container_ptr, \
78
(ccc_hromap_elem *)try_insert_args) \
79
.impl_}, \
80
ccc_flat_hash_map \
81
*: &(ccc_entry){ccc_fhm_try_insert( \
82
(ccc_flat_hash_map *)container_ptr, \
83
(ccc_fhmap_elem *)try_insert_args) \
84
.impl_}, \
85
ccc_ordered_map \
86
*: &( \
87
ccc_entry){ccc_om_try_insert((ccc_ordered_map *)container_ptr, \
88
(ccc_omap_elem *)try_insert_args) \
89
.impl_}, \
90
ccc_ordered_multimap \
91
*: &(ccc_entry){ccc_omm_try_insert( \
92
(ccc_ordered_multimap *)container_ptr, \
93
(ccc_ommap_elem *)try_insert_args) \
94
.impl_}, \
95
ccc_realtime_ordered_map \
96
*: &(ccc_entry){ \
97
ccc_rom_try_insert((ccc_realtime_ordered_map *)container_ptr, \
98
(ccc_romap_elem *)try_insert_args) \
99
.impl_})
100
101
#define ccc_impl_insert_or_assign(container_ptr, insert_or_assign_args...) \
102
_Generic((container_ptr), \
103
ccc_handle_hash_map *: ccc_hhm_insert_or_assign, \
104
ccc_handle_ordered_map *: ccc_hom_insert_or_assign, \
105
ccc_handle_realtime_ordered_map *: ccc_hrm_insert_or_assign, \
106
ccc_flat_hash_map *: ccc_fhm_insert_or_assign, \
107
ccc_ordered_map *: ccc_om_insert_or_assign, \
108
ccc_ordered_multimap *: ccc_omm_insert_or_assign, \
109
ccc_realtime_ordered_map *: ccc_rom_insert_or_assign)( \
110
(container_ptr), insert_or_assign_args)
111
112
#define ccc_impl_insert_or_assign_r(container_ptr, insert_or_assign_args...) \
113
_Generic((container_ptr), \
114
ccc_handle_hash_map \
115
*: &(ccc_handle){ccc_hhm_insert_or_assign( \
116
(ccc_handle_hash_map *)container_ptr, \
117
(ccc_hhmap_elem *)insert_or_assign_args) \
118
.impl_}, \
119
ccc_handle_ordered_map \
120
*: &(ccc_handle){ccc_hom_insert_or_assign( \
121
(ccc_handle_ordered_map *)container_ptr, \
122
(ccc_homap_elem *)insert_or_assign_args) \
123
.impl_}, \
124
ccc_handle_realtime_ordered_map \
125
*: &(ccc_handle){ccc_hrm_insert_or_assign( \
126
(ccc_handle_realtime_ordered_map *) \
127
container_ptr, \
128
(ccc_hromap_elem *)insert_or_assign_args) \
129
.impl_}, \
130
ccc_flat_hash_map \
131
*: &(ccc_entry){ccc_fhm_insert_or_assign( \
132
(ccc_flat_hash_map *)container_ptr, \
133
(ccc_fhmap_elem *)insert_or_assign_args) \
134
.impl_}, \
135
ccc_ordered_map \
136
*: &(ccc_entry){ccc_om_insert_or_assign( \
137
(ccc_ordered_map *)container_ptr, \
138
(ccc_omap_elem *)insert_or_assign_args) \
139
.impl_}, \
140
ccc_ordered_multimap \
141
*: &(ccc_entry){ccc_omm_insert_or_assign( \
142
(ccc_ordered_multimap *)container_ptr, \
143
(ccc_ommap_elem *)insert_or_assign_args) \
144
.impl_}, \
145
ccc_realtime_ordered_map \
146
*: &(ccc_entry){ccc_rom_insert_or_assign( \
147
(ccc_realtime_ordered_map *)container_ptr, \
148
(ccc_romap_elem *)insert_or_assign_args) \
149
.impl_})
150
151
#define ccc_impl_remove(container_ptr, key_val_container_handle_ptr...) \
152
_Generic((container_ptr), \
153
ccc_handle_hash_map *: ccc_hhm_remove, \
154
ccc_handle_ordered_map *: ccc_hom_remove, \
155
ccc_handle_realtime_ordered_map *: ccc_hrm_remove, \
156
ccc_flat_hash_map *: ccc_fhm_remove, \
157
ccc_ordered_map *: ccc_om_remove, \
158
ccc_ordered_multimap *: ccc_omm_remove, \
159
ccc_realtime_ordered_map \
160
*: ccc_rom_remove)((container_ptr), key_val_container_handle_ptr)
161
162
#define ccc_impl_remove_r(container_ptr, key_val_container_handle_ptr...) \
163
_Generic((container_ptr), \
164
ccc_handle_hash_map \
165
*: &(ccc_handle){ccc_hhm_remove( \
166
(ccc_handle_hash_map *)container_ptr, \
167
(ccc_hhmap_elem *) \
168
key_val_container_handle_ptr) \
169
.impl_}, \
170
ccc_handle_ordered_map \
171
*: &(ccc_handle){ccc_hom_remove( \
172
(ccc_handle_ordered_map *)container_ptr, \
173
(ccc_homap_elem *) \
174
key_val_container_handle_ptr) \
175
.impl_}, \
176
ccc_handle_realtime_ordered_map \
177
*: &( \
178
ccc_handle){ccc_hrm_remove((ccc_handle_realtime_ordered_map *) \
179
container_ptr, \
180
(ccc_hromap_elem *) \
181
key_val_container_handle_ptr) \
182
.impl_}, \
183
ccc_flat_hash_map \
184
*: &(ccc_entry){ccc_fhm_remove((ccc_flat_hash_map *)container_ptr, \
185
(ccc_fhmap_elem *) \
186
key_val_container_handle_ptr) \
187
.impl_}, \
188
ccc_ordered_map \
189
*: &(ccc_entry){ccc_om_remove( \
190
(ccc_ordered_map *)container_ptr, \
191
(ccc_omap_elem *)key_val_container_handle_ptr) \
192
.impl_}, \
193
ccc_ordered_multimap \
194
*: &( \
195
ccc_entry){ccc_omm_remove( \
196
(ccc_ordered_multimap *)container_ptr, \
197
(ccc_ommap_elem *)key_val_container_handle_ptr) \
198
.impl_}, \
199
ccc_realtime_ordered_map \
200
*: &(ccc_entry){ \
201
ccc_rom_remove((ccc_realtime_ordered_map *)container_ptr, \
202
(ccc_romap_elem *)key_val_container_handle_ptr) \
203
.impl_})
204
205
#define ccc_impl_remove_entry(container_entry_ptr) \
206
_Generic((container_entry_ptr), \
207
ccc_fhmap_entry *: ccc_fhm_remove_entry, \
208
ccc_omap_entry *: ccc_om_remove_entry, \
209
ccc_ommap_entry *: ccc_omm_remove_entry, \
210
ccc_romap_entry *: ccc_rom_remove_entry, \
211
ccc_fhmap_entry const *: ccc_fhm_remove_entry, \
212
ccc_omap_entry const *: ccc_om_remove_entry, \
213
ccc_romap_entry const *: ccc_rom_remove_entry)((container_entry_ptr))
214
215
#define ccc_impl_remove_entry_r(container_entry_ptr) \
216
&(ccc_entry) \
217
{ \
218
ccc_impl_remove_entry(container_entry_ptr).impl_ \
219
}
220
221
#define ccc_impl_remove_handle(container_handle_ptr) \
222
_Generic((container_handle_ptr), \
223
ccc_homap_handle *: ccc_hom_remove_handle, \
224
ccc_homap_handle const *: ccc_hom_remove_handle, \
225
ccc_hromap_handle *: ccc_hrm_remove_handle, \
226
ccc_hromap_handle const *: ccc_hrm_remove_handle, \
227
ccc_hhmap_handle *: ccc_hhm_remove_handle, \
228
ccc_hhmap_handle const *: ccc_hhm_remove_handle)( \
229
(container_handle_ptr))
230
231
#define ccc_impl_remove_handle_r(container_handle_ptr) \
232
&(ccc_handle) \
233
{ \
234
ccc_impl_remove_handle(container_handle_ptr).impl_ \
235
}
236
237
#define ccc_impl_entry(container_ptr, key_ptr...) \
238
_Generic((container_ptr), \
239
ccc_flat_hash_map *: ccc_fhm_entry, \
240
ccc_flat_hash_map const *: ccc_fhm_entry, \
241
ccc_ordered_map *: ccc_om_entry, \
242
ccc_ordered_multimap *: ccc_omm_entry, \
243
ccc_realtime_ordered_map *: ccc_rom_entry, \
244
ccc_realtime_ordered_map const *: ccc_rom_entry)((container_ptr), \
245
key_ptr)
246
247
#define ccc_impl_entry_r(container_ptr, key_ptr...) \
248
_Generic((container_ptr), \
249
ccc_flat_hash_map \
250
*: &(ccc_fhmap_entry){ccc_fhm_entry( \
251
(ccc_flat_hash_map *)(container_ptr), \
252
key_ptr) \
253
.impl_}, \
254
ccc_flat_hash_map const *: &( \
255
ccc_fhmap_entry){ccc_fhm_entry( \
256
(ccc_flat_hash_map *)(container_ptr), \
257
key_ptr) \
258
.impl_}, \
259
ccc_ordered_map *: &( \
260
ccc_omap_entry){ccc_om_entry( \
261
(ccc_ordered_map *)(container_ptr), \
262
key_ptr) \
263
.impl_}, \
264
ccc_ordered_multimap *: &( \
265
ccc_ommap_entry){ccc_omm_entry( \
266
(ccc_ordered_multimap *)(container_ptr), \
267
key_ptr) \
268
.impl_}, \
269
ccc_realtime_ordered_map *: &( \
270
ccc_romap_entry){ccc_rom_entry((ccc_realtime_ordered_map \
271
*)(container_ptr), \
272
key_ptr) \
273
.impl_}, \
274
ccc_realtime_ordered_map const *: &(ccc_romap_entry){ \
275
ccc_rom_entry((ccc_realtime_ordered_map *)(container_ptr), \
276
key_ptr) \
277
.impl_})
278
279
#define ccc_impl_handle(container_ptr, key_ptr...) \
280
_Generic((container_ptr), \
281
ccc_handle_ordered_map *: ccc_hom_handle, \
282
ccc_handle_realtime_ordered_map *: ccc_hrm_handle, \
283
ccc_handle_realtime_ordered_map const *: ccc_hrm_handle, \
284
ccc_handle_hash_map *: ccc_hhm_handle, \
285
ccc_handle_hash_map const *: ccc_hhm_handle)((container_ptr), key_ptr)
286
287
#define ccc_impl_handle_r(container_ptr, key_ptr...) \
288
_Generic((container_ptr), \
289
ccc_handle_ordered_map \
290
*: &(ccc_homap_handle){ccc_hom_handle((ccc_handle_ordered_map \
291
*)(container_ptr), \
292
key_ptr) \
293
.impl_}, \
294
ccc_handle_realtime_ordered_map \
295
*: &(ccc_hromap_handle){ccc_hrm_handle( \
296
(ccc_handle_realtime_ordered_map \
297
*)(container_ptr), \
298
key_ptr) \
299
.impl_}, \
300
ccc_handle_realtime_ordered_map const *: &( \
301
ccc_hromap_handle){ccc_hrm_handle( \
302
(ccc_handle_realtime_ordered_map \
303
*)(container_ptr), \
304
key_ptr) \
305
.impl_}, \
306
ccc_handle_hash_map *: &( \
307
ccc_hhmap_handle){ccc_hhm_handle( \
308
(ccc_handle_hash_map *)(container_ptr), \
309
key_ptr) \
310
.impl_}, \
311
ccc_handle_hash_map const *: &(ccc_hhmap_handle){ \
312
ccc_hhm_handle((ccc_handle_hash_map *)(container_ptr), key_ptr) \
313
.impl_})
314
315
#define ccc_impl_and_modify(container_entry_ptr, mod_fn) \
316
_Generic((container_entry_ptr), \
317
ccc_fhmap_entry *: ccc_fhm_and_modify, \
318
ccc_hhmap_handle *: ccc_hhm_and_modify, \
319
ccc_omap_entry *: ccc_om_and_modify, \
320
ccc_ommap_entry *: ccc_omm_and_modify, \
321
ccc_homap_handle *: ccc_hom_and_modify, \
322
ccc_romap_entry *: ccc_rom_and_modify, \
323
ccc_hromap_handle *: ccc_hrm_and_modify, \
324
ccc_fhmap_entry const *: ccc_fhm_and_modify, \
325
ccc_hhmap_handle const *: ccc_hhm_and_modify, \
326
ccc_hromap_handle const *: ccc_hrm_and_modify, \
327
ccc_omap_entry const *: ccc_om_and_modify, \
328
ccc_ommap_entry const *: ccc_omm_and_modify, \
329
ccc_homap_handle const *: ccc_hom_and_modify, \
330
ccc_romap_entry const *: ccc_rom_and_modify)((container_entry_ptr), \
331
(mod_fn))
332
333
#define ccc_impl_and_modify_aux(container_entry_ptr, mod_fn, aux_data_ptr...) \
334
_Generic((container_entry_ptr), \
335
ccc_fhmap_entry *: ccc_fhm_and_modify_aux, \
336
ccc_hhmap_handle *: ccc_hhm_and_modify_aux, \
337
ccc_omap_entry *: ccc_om_and_modify_aux, \
338
ccc_ommap_entry *: ccc_omm_and_modify_aux, \
339
ccc_homap_handle *: ccc_hom_and_modify_aux, \
340
ccc_hromap_handle *: ccc_hrm_and_modify_aux, \
341
ccc_romap_entry *: ccc_rom_and_modify_aux, \
342
ccc_fhmap_entry const *: ccc_fhm_and_modify_aux, \
343
ccc_hhmap_handle const *: ccc_hhm_and_modify_aux, \
344
ccc_omap_entry const *: ccc_om_and_modify_aux, \
345
ccc_ommap_entry const *: ccc_omm_and_modify_aux, \
346
ccc_hromap_handle const *: ccc_hrm_and_modify_aux, \
347
ccc_homap_handle const *: ccc_hom_and_modify_aux, \
348
ccc_romap_entry const *: ccc_rom_and_modify_aux)( \
349
(container_entry_ptr), (mod_fn), aux_data_ptr)
350
351
#define ccc_impl_insert_entry(container_entry_ptr, \
352
key_val_container_handle_ptr...) \
353
_Generic((container_entry_ptr), \
354
ccc_fhmap_entry *: ccc_fhm_insert_entry, \
355
ccc_omap_entry *: ccc_om_insert_entry, \
356
ccc_ommap_entry *: ccc_omm_insert_entry, \
357
ccc_romap_entry *: ccc_rom_insert_entry, \
358
ccc_fhmap_entry const *: ccc_fhm_insert_entry, \
359
ccc_omap_entry const *: ccc_om_insert_entry, \
360
ccc_ommap_entry const *: ccc_omm_insert_entry, \
361
ccc_romap_entry const *: ccc_rom_insert_entry)( \
362
(container_entry_ptr), key_val_container_handle_ptr)
363
364
#define ccc_impl_insert_handle(container_handle_ptr, \
365
key_val_container_handle_ptr...) \
366
_Generic((container_handle_ptr), \
367
ccc_homap_handle *: ccc_hom_insert_handle, \
368
ccc_hromap_handle *: ccc_hrm_insert_handle, \
369
ccc_hromap_handle const *: ccc_hrm_insert_handle, \
370
ccc_hhmap_handle *: ccc_hhm_insert_handle, \
371
ccc_hhmap_handle const *: ccc_hhm_insert_handle)( \
372
(container_handle_ptr), key_val_container_handle_ptr)
373
374
#define ccc_impl_or_insert(container_entry_ptr, \
375
key_val_container_handle_ptr...) \
376
_Generic((container_entry_ptr), \
377
ccc_fhmap_entry *: ccc_fhm_or_insert, \
378
ccc_hhmap_handle *: ccc_hhm_or_insert, \
379
ccc_omap_entry *: ccc_om_or_insert, \
380
ccc_ommap_entry *: ccc_omm_or_insert, \
381
ccc_homap_handle *: ccc_hom_or_insert, \
382
ccc_romap_entry *: ccc_rom_or_insert, \
383
ccc_hromap_handle *: ccc_hrm_or_insert, \
384
ccc_fhmap_entry const *: ccc_fhm_or_insert, \
385
ccc_hhmap_handle const *: ccc_hhm_or_insert, \
386
ccc_omap_entry const *: ccc_om_or_insert, \
387
ccc_ommap_entry const *: ccc_omm_or_insert, \
388
ccc_hromap_handle const *: ccc_hrm_or_insert, \
389
ccc_homap_handle const *: ccc_hom_or_insert, \
390
ccc_romap_entry const *: ccc_rom_or_insert)( \
391
(container_entry_ptr), key_val_container_handle_ptr)
392
393
#define ccc_impl_unwrap(container_entry_ptr) \
394
_Generic((container_entry_ptr), \
395
ccc_entry *: ccc_entry_unwrap, \
396
ccc_entry const *: ccc_entry_unwrap, \
397
ccc_handle *: ccc_handle_unwrap, \
398
ccc_handle const *: ccc_handle_unwrap, \
399
ccc_fhmap_entry *: ccc_fhm_unwrap, \
400
ccc_fhmap_entry const *: ccc_fhm_unwrap, \
401
ccc_hhmap_handle *: ccc_hhm_unwrap, \
402
ccc_hhmap_handle const *: ccc_hhm_unwrap, \
403
ccc_omap_entry *: ccc_om_unwrap, \
404
ccc_omap_entry const *: ccc_om_unwrap, \
405
ccc_ommap_entry *: ccc_omm_unwrap, \
406
ccc_ommap_entry const *: ccc_omm_unwrap, \
407
ccc_homap_handle *: ccc_hom_unwrap, \
408
ccc_homap_handle const *: ccc_hom_unwrap, \
409
ccc_hromap_handle *: ccc_hrm_unwrap, \
410
ccc_hromap_handle const *: ccc_hrm_unwrap, \
411
ccc_romap_entry *: ccc_rom_unwrap, \
412
ccc_romap_entry const *: ccc_rom_unwrap)((container_entry_ptr))
413
414
#define ccc_impl_occupied(container_entry_ptr) \
415
_Generic((container_entry_ptr), \
416
ccc_entry *: ccc_entry_occupied, \
417
ccc_entry const *: ccc_entry_occupied, \
418
ccc_handle *: ccc_handle_occupied, \
419
ccc_handle const *: ccc_handle_occupied, \
420
ccc_fhmap_entry *: ccc_fhm_occupied, \
421
ccc_fhmap_entry const *: ccc_fhm_occupied, \
422
ccc_hhmap_handle *: ccc_hhm_occupied, \
423
ccc_hhmap_handle const *: ccc_hhm_occupied, \
424
ccc_omap_entry *: ccc_om_occupied, \
425
ccc_omap_entry const *: ccc_om_occupied, \
426
ccc_ommap_entry *: ccc_omm_occupied, \
427
ccc_ommap_entry const *: ccc_omm_occupied, \
428
ccc_homap_handle *: ccc_hom_occupied, \
429
ccc_homap_handle const *: ccc_hom_occupied, \
430
ccc_hromap_handle *: ccc_hrm_occupied, \
431
ccc_hromap_handle const *: ccc_hrm_occupied, \
432
ccc_romap_entry *: ccc_rom_occupied, \
433
ccc_romap_entry const *: ccc_rom_occupied)((container_entry_ptr))
434
435
#define ccc_impl_insert_error(container_entry_ptr) \
436
_Generic((container_entry_ptr), \
437
ccc_entry *: ccc_entry_insert_error, \
438
ccc_entry const *: ccc_entry_insert_error, \
439
ccc_handle *: ccc_handle_insert_error, \
440
ccc_handle const *: ccc_handle_insert_error, \
441
ccc_fhmap_entry *: ccc_fhm_insert_error, \
442
ccc_fhmap_entry const *: ccc_fhm_insert_error, \
443
ccc_hhmap_handle *: ccc_hhm_insert_error, \
444
ccc_hhmap_handle const *: ccc_hhm_insert_error, \
445
ccc_omap_entry *: ccc_om_insert_error, \
446
ccc_omap_entry const *: ccc_om_insert_error, \
447
ccc_ommap_entry *: ccc_omm_insert_error, \
448
ccc_ommap_entry const *: ccc_omm_insert_error, \
449
ccc_homap_handle *: ccc_hom_insert_error, \
450
ccc_homap_handle const *: ccc_hom_insert_error, \
451
ccc_hromap_handle *: ccc_hrm_insert_error, \
452
ccc_hromap_handle const *: ccc_hrm_insert_error, \
453
ccc_romap_entry *: ccc_rom_insert_error, \
454
ccc_romap_entry const *: ccc_rom_insert_error)((container_entry_ptr))
455
456
/*====================== Misc Search Interface ===========================*/
457
458
#define ccc_impl_get_key_val(container_ptr, key_ptr...) \
459
_Generic((container_ptr), \
460
ccc_flat_hash_map *: ccc_fhm_get_key_val, \
461
ccc_flat_hash_map const *: ccc_fhm_get_key_val, \
462
ccc_handle_hash_map *: ccc_hhm_get_key_val, \
463
ccc_handle_hash_map const *: ccc_hhm_get_key_val, \
464
ccc_ordered_map *: ccc_om_get_key_val, \
465
ccc_ordered_multimap *: ccc_omm_get_key_val, \
466
ccc_handle_ordered_map *: ccc_hom_get_key_val, \
467
ccc_handle_realtime_ordered_map *: ccc_hrm_get_key_val, \
468
ccc_handle_realtime_ordered_map const *: ccc_hrm_get_key_val, \
469
ccc_realtime_ordered_map *: ccc_rom_get_key_val, \
470
ccc_realtime_ordered_map const *: ccc_rom_get_key_val)( \
471
(container_ptr), key_ptr)
472
473
#define ccc_impl_contains(container_ptr, key_ptr...) \
474
_Generic((container_ptr), \
475
ccc_flat_hash_map *: ccc_fhm_contains, \
476
ccc_flat_hash_map const *: ccc_fhm_contains, \
477
ccc_handle_hash_map *: ccc_hhm_contains, \
478
ccc_handle_hash_map const *: ccc_hhm_contains, \
479
ccc_ordered_map *: ccc_om_contains, \
480
ccc_handle_ordered_map *: ccc_hom_contains, \
481
ccc_handle_realtime_ordered_map *: ccc_hrm_contains, \
482
ccc_handle_realtime_ordered_map const *: ccc_hrm_contains, \
483
ccc_realtime_ordered_map *: ccc_rom_contains, \
484
ccc_realtime_ordered_map const *: ccc_rom_contains, \
485
ccc_ordered_multimap *: ccc_omm_contains)((container_ptr), key_ptr)
486
487
/*================ Sequential Containers Interface =====================*/
488
489
#define ccc_impl_push(container_ptr, container_handle_ptr...) \
490
_Generic((container_ptr), \
491
ccc_flat_priority_queue *: ccc_fpq_push, \
492
ccc_priority_queue *: ccc_pq_push)((container_ptr), \
493
container_handle_ptr)
494
495
#define ccc_impl_push_back(container_ptr, container_handle_ptr...) \
496
_Generic((container_ptr), \
497
ccc_flat_double_ended_queue *: ccc_fdeq_push_back, \
498
ccc_doubly_linked_list *: ccc_dll_push_back, \
499
ccc_buffer *: ccc_buf_push_back)((container_ptr), \
500
container_handle_ptr)
501
502
#define ccc_impl_push_front(container_ptr, container_handle_ptr...) \
503
_Generic((container_ptr), \
504
ccc_flat_double_ended_queue *: ccc_fdeq_push_front, \
505
ccc_doubly_linked_list *: ccc_dll_push_front, \
506
ccc_singly_linked_list *: ccc_sll_push_front)((container_ptr), \
507
container_handle_ptr)
508
509
#define ccc_impl_pop(container_ptr) \
510
_Generic((container_ptr), \
511
ccc_flat_priority_queue *: ccc_fpq_pop, \
512
ccc_priority_queue *: ccc_pq_pop)((container_ptr))
513
514
#define ccc_impl_pop_front(container_ptr) \
515
_Generic((container_ptr), \
516
ccc_flat_double_ended_queue *: ccc_fdeq_pop_front, \
517
ccc_doubly_linked_list *: ccc_dll_pop_front, \
518
ccc_singly_linked_list *: ccc_sll_pop_front)((container_ptr))
519
520
#define ccc_impl_pop_back(container_ptr) \
521
_Generic((container_ptr), \
522
ccc_flat_double_ended_queue *: ccc_fdeq_pop_back, \
523
ccc_doubly_linked_list *: ccc_dll_pop_back, \
524
ccc_buffer *: ccc_buf_pop_back)((container_ptr))
525
526
#define ccc_impl_front(container_ptr) \
527
_Generic((container_ptr), \
528
ccc_flat_double_ended_queue *: ccc_fdeq_front, \
529
ccc_doubly_linked_list *: ccc_dll_front, \
530
ccc_flat_priority_queue *: ccc_fpq_front, \
531
ccc_priority_queue *: ccc_pq_front, \
532
ccc_singly_linked_list *: ccc_sll_front, \
533
ccc_flat_double_ended_queue const *: ccc_fdeq_front, \
534
ccc_doubly_linked_list const *: ccc_dll_front, \
535
ccc_flat_priority_queue const *: ccc_fpq_front, \
536
ccc_priority_queue const *: ccc_pq_front, \
537
ccc_singly_linked_list const *: ccc_sll_front)((container_ptr))
538
539
#define ccc_impl_back(container_ptr) \
540
_Generic((container_ptr), \
541
ccc_flat_double_ended_queue *: ccc_fdeq_back, \
542
ccc_doubly_linked_list *: ccc_dll_back, \
543
ccc_buffer *: ccc_buf_back, \
544
ccc_flat_double_ended_queue const *: ccc_fdeq_back, \
545
ccc_doubly_linked_list const *: ccc_dll_back, \
546
ccc_buffer const *: ccc_buf_back)((container_ptr))
547
548
/*================ Priority Queue Update Interface =====================*/
549
550
#define ccc_impl_update(container_ptr, update_args...) \
551
_Generic((container_ptr), \
552
ccc_ordered_multimap *: ccc_omm_update, \
553
ccc_flat_priority_queue *: ccc_fpq_update, \
554
ccc_priority_queue *: ccc_pq_update)((container_ptr), update_args)
555
556
#define ccc_impl_increase(container_ptr, increase_args...) \
557
_Generic((container_ptr), \
558
ccc_ordered_multimap *: ccc_omm_increase, \
559
ccc_flat_priority_queue *: ccc_fpq_increase, \
560
ccc_priority_queue *: ccc_pq_increase)((container_ptr), increase_args)
561
562
#define ccc_impl_decrease(container_ptr, decrease_args...) \
563
_Generic((container_ptr), \
564
ccc_ordered_multimap *: ccc_omm_decrease, \
565
ccc_flat_priority_queue *: ccc_fpq_decrease, \
566
ccc_priority_queue *: ccc_pq_decrease)((container_ptr), decrease_args)
567
568
#define ccc_impl_extract(container_ptr, container_handle_ptr...) \
569
_Generic((container_ptr), \
570
ccc_ordered_multimap *: ccc_omm_extract, \
571
ccc_doubly_linked_list *: ccc_dll_extract, \
572
ccc_singly_linked_list *: ccc_sll_extract, \
573
ccc_priority_queue *: ccc_pq_extract)((container_ptr), \
574
container_handle_ptr)
575
576
#define ccc_impl_erase(container_ptr, container_handle_ptr...) \
577
_Generic((container_ptr), ccc_flat_priority_queue *: ccc_fpq_erase)( \
578
(container_ptr), container_handle_ptr)
579
580
#define ccc_impl_extract_range(container_ptr, \
581
container_handle_begin_end_ptr...) \
582
_Generic((container_ptr), \
583
ccc_doubly_linked_list *: ccc_dll_extract_range, \
584
ccc_singly_linked_list *: ccc_sll_extract_range)( \
585
(container_ptr), container_handle_begin_end_ptr)
586
587
/*=================== Iterators Interface ==============================*/
588
589
#define ccc_impl_begin(container_ptr) \
590
_Generic((container_ptr), \
591
ccc_buffer *: ccc_buf_begin, \
592
ccc_flat_hash_map *: ccc_fhm_begin, \
593
ccc_ordered_map *: ccc_om_begin, \
594
ccc_handle_ordered_map *: ccc_hom_begin, \
595
ccc_flat_double_ended_queue *: ccc_fdeq_begin, \
596
ccc_ordered_multimap *: ccc_omm_begin, \
597
ccc_singly_linked_list *: ccc_sll_begin, \
598
ccc_doubly_linked_list *: ccc_dll_begin, \
599
ccc_realtime_ordered_map *: ccc_rom_begin, \
600
ccc_handle_realtime_ordered_map *: ccc_hrm_begin, \
601
ccc_buffer const *: ccc_buf_begin, \
602
ccc_flat_hash_map const *: ccc_fhm_begin, \
603
ccc_ordered_map const *: ccc_om_begin, \
604
ccc_handle_ordered_map const *: ccc_hom_begin, \
605
ccc_flat_double_ended_queue const *: ccc_fdeq_begin, \
606
ccc_ordered_multimap const *: ccc_omm_begin, \
607
ccc_singly_linked_list const *: ccc_sll_begin, \
608
ccc_doubly_linked_list const *: ccc_dll_begin, \
609
ccc_handle_realtime_ordered_map const *: ccc_hrm_begin, \
610
ccc_realtime_ordered_map const *: ccc_rom_begin)((container_ptr))
611
612
#define ccc_impl_rbegin(container_ptr) \
613
_Generic((container_ptr), \
614
ccc_buffer *: ccc_buf_rbegin, \
615
ccc_ordered_map *: ccc_om_rbegin, \
616
ccc_handle_ordered_map *: ccc_hom_rbegin, \
617
ccc_flat_double_ended_queue *: ccc_fdeq_rbegin, \
618
ccc_ordered_multimap *: ccc_omm_rbegin, \
619
ccc_doubly_linked_list *: ccc_dll_rbegin, \
620
ccc_realtime_ordered_map *: ccc_rom_rbegin, \
621
ccc_handle_realtime_ordered_map *: ccc_hrm_rbegin, \
622
ccc_buffer const *: ccc_buf_rbegin, \
623
ccc_ordered_map const *: ccc_om_rbegin, \
624
ccc_handle_ordered_map const *: ccc_hom_rbegin, \
625
ccc_flat_double_ended_queue const *: ccc_fdeq_rbegin, \
626
ccc_ordered_multimap const *: ccc_omm_rbegin, \
627
ccc_doubly_linked_list const *: ccc_dll_rbegin, \
628
ccc_handle_realtime_ordered_map const *: ccc_hrm_rbegin, \
629
ccc_realtime_ordered_map const *: ccc_rom_rbegin)((container_ptr))
630
631
#define ccc_impl_next(container_ptr, void_iter_ptr) \
632
_Generic((container_ptr), \
633
ccc_buffer *: ccc_buf_next, \
634
ccc_flat_hash_map *: ccc_fhm_next, \
635
ccc_ordered_map *: ccc_om_next, \
636
ccc_handle_ordered_map *: ccc_hom_next, \
637
ccc_flat_double_ended_queue *: ccc_fdeq_next, \
638
ccc_ordered_multimap *: ccc_omm_next, \
639
ccc_singly_linked_list *: ccc_sll_next, \
640
ccc_doubly_linked_list *: ccc_dll_next, \
641
ccc_realtime_ordered_map *: ccc_rom_next, \
642
ccc_handle_realtime_ordered_map *: ccc_hrm_next, \
643
ccc_buffer const *: ccc_buf_next, \
644
ccc_flat_hash_map const *: ccc_fhm_next, \
645
ccc_ordered_map const *: ccc_om_next, \
646
ccc_handle_ordered_map const *: ccc_hom_next, \
647
ccc_flat_double_ended_queue const *: ccc_fdeq_next, \
648
ccc_ordered_multimap const *: ccc_omm_next, \
649
ccc_singly_linked_list const *: ccc_sll_next, \
650
ccc_doubly_linked_list const *: ccc_dll_next, \
651
ccc_handle_realtime_ordered_map const *: ccc_hrm_next, \
652
ccc_realtime_ordered_map const *: ccc_rom_next)((container_ptr), \
653
(void_iter_ptr))
654
655
#define ccc_impl_rnext(container_ptr, void_iter_ptr) \
656
_Generic((container_ptr), \
657
ccc_buffer *: ccc_buf_rnext, \
658
ccc_ordered_map *: ccc_om_rnext, \
659
ccc_handle_ordered_map *: ccc_hom_rnext, \
660
ccc_flat_double_ended_queue *: ccc_fdeq_rnext, \
661
ccc_ordered_multimap *: ccc_omm_rnext, \
662
ccc_doubly_linked_list *: ccc_dll_rnext, \
663
ccc_realtime_ordered_map *: ccc_rom_rnext, \
664
ccc_handle_realtime_ordered_map *: ccc_hrm_rnext, \
665
ccc_buffer const *: ccc_buf_rnext, \
666
ccc_ordered_map const *: ccc_om_rnext, \
667
ccc_handle_ordered_map const *: ccc_hom_rnext, \
668
ccc_flat_double_ended_queue const *: ccc_fdeq_rnext, \
669
ccc_ordered_multimap const *: ccc_omm_rnext, \
670
ccc_doubly_linked_list const *: ccc_dll_rnext, \
671
ccc_handle_realtime_ordered_map const *: ccc_hrm_rnext, \
672
ccc_realtime_ordered_map const *: ccc_rom_rnext)((container_ptr), \
673
(void_iter_ptr))
674
675
#define ccc_impl_end(container_ptr) \
676
_Generic((container_ptr), \
677
ccc_buffer *: ccc_buf_end, \
678
ccc_flat_hash_map *: ccc_fhm_end, \
679
ccc_ordered_map *: ccc_om_end, \
680
ccc_handle_ordered_map *: ccc_hom_end, \
681
ccc_flat_double_ended_queue *: ccc_fdeq_end, \
682
ccc_ordered_multimap *: ccc_omm_end, \
683
ccc_singly_linked_list *: ccc_sll_end, \
684
ccc_doubly_linked_list *: ccc_dll_end, \
685
ccc_realtime_ordered_map *: ccc_rom_end, \
686
ccc_handle_realtime_ordered_map *: ccc_hrm_end, \
687
ccc_buffer const *: ccc_buf_end, \
688
ccc_flat_hash_map const *: ccc_fhm_end, \
689
ccc_ordered_map const *: ccc_om_end, \
690
ccc_handle_ordered_map const *: ccc_hom_end, \
691
ccc_flat_double_ended_queue const *: ccc_fdeq_end, \
692
ccc_ordered_multimap const *: ccc_omm_end, \
693
ccc_singly_linked_list const *: ccc_sll_end, \
694
ccc_doubly_linked_list const *: ccc_dll_end, \
695
ccc_handle_realtime_ordered_map const *: ccc_hrm_end, \
696
ccc_realtime_ordered_map const *: ccc_rom_end)((container_ptr))
697
698
#define ccc_impl_rend(container_ptr) \
699
_Generic((container_ptr), \
700
ccc_buffer *: ccc_buf_rend, \
701
ccc_ordered_map *: ccc_om_rend, \
702
ccc_handle_ordered_map *: ccc_hom_rend, \
703
ccc_flat_double_ended_queue *: ccc_fdeq_rend, \
704
ccc_ordered_multimap *: ccc_omm_rend, \
705
ccc_doubly_linked_list *: ccc_dll_rend, \
706
ccc_realtime_ordered_map *: ccc_rom_rend, \
707
ccc_handle_realtime_ordered_map *: ccc_hrm_rend, \
708
ccc_buffer const *: ccc_buf_rend, \
709
ccc_ordered_map const *: ccc_om_rend, \
710
ccc_handle_ordered_map const *: ccc_hom_rend, \
711
ccc_flat_double_ended_queue const *: ccc_fdeq_rend, \
712
ccc_ordered_multimap const *: ccc_omm_rend, \
713
ccc_doubly_linked_list const *: ccc_dll_rend, \
714
ccc_handle_realtime_ordered_map const *: ccc_hrm_rend, \
715
ccc_realtime_ordered_map const *: ccc_rom_rend)((container_ptr))
716
717
#define ccc_impl_equal_range(container_ptr, begin_and_end_key_ptr...) \
718
_Generic((container_ptr), \
719
ccc_ordered_map *: ccc_om_equal_range, \
720
ccc_handle_ordered_map *: ccc_hom_equal_range, \
721
ccc_ordered_multimap *: ccc_omm_equal_range, \
722
ccc_handle_realtime_ordered_map *: ccc_hrm_equal_range, \
723
ccc_handle_realtime_ordered_map const *: ccc_hrm_equal_range, \
724
ccc_realtime_ordered_map *: ccc_rom_equal_range, \
725
ccc_realtime_ordered_map const *: ccc_rom_equal_range)( \
726
(container_ptr), begin_and_end_key_ptr)
727
728
#define ccc_impl_equal_range_r(container_ptr, begin_and_end_key_ptr...) \
729
&(ccc_range) \
730
{ \
731
ccc_impl_equal_range(container_ptr, begin_and_end_key_ptr).impl_ \
732
}
733
734
#define ccc_impl_equal_rrange(container_ptr, rbegin_and_rend_key_ptr...) \
735
_Generic((container_ptr), \
736
ccc_ordered_map *: ccc_om_equal_rrange, \
737
ccc_handle_ordered_map *: ccc_hom_equal_rrange, \
738
ccc_ordered_multimap *: ccc_omm_equal_rrange, \
739
ccc_handle_realtime_ordered_map *: ccc_hrm_equal_rrange, \
740
ccc_handle_realtime_ordered_map const *: ccc_hrm_equal_rrange, \
741
ccc_realtime_ordered_map *: ccc_rom_equal_rrange, \
742
ccc_realtime_ordered_map const *: ccc_rom_equal_rrange)( \
743
(container_ptr), rbegin_and_rend_key_ptr)
744
745
#define ccc_impl_equal_rrange_r(container_ptr, rbegin_and_rend_key_ptr...) \
746
&(ccc_rrange) \
747
{ \
748
ccc_impl_equal_rrange(container_ptr, rbegin_and_rend_key_ptr).impl_ \
749
}
750
751
#define ccc_impl_splice(container_ptr, splice_args...) \
752
_Generic((container_ptr), \
753
ccc_singly_linked_list *: ccc_sll_splice, \
754
ccc_singly_linked_list const *: ccc_sll_splice, \
755
ccc_doubly_linked_list *: ccc_dll_splice, \
756
ccc_doubly_linked_list const *: ccc_dll_splice)((container_ptr), \
757
splice_args)
758
759
#define ccc_impl_splice_range(container_ptr, splice_range_args...) \
760
_Generic((container_ptr), \
761
ccc_singly_linked_list *: ccc_sll_splice_range, \
762
ccc_singly_linked_list const *: ccc_sll_splice_range, \
763
ccc_doubly_linked_list *: ccc_dll_splice_range, \
764
ccc_doubly_linked_list const *: ccc_dll_splice_range)( \
765
(container_ptr), splice_range_args)
766
767
/*=================== Standard Getters Interface =======================*/
768
769
#define ccc_impl_size(container_ptr) \
770
_Generic((container_ptr), \
771
ccc_buffer *: ccc_buf_size, \
772
ccc_flat_hash_map *: ccc_fhm_size, \
773
ccc_handle_hash_map *: ccc_hhm_size, \
774
ccc_ordered_map *: ccc_om_size, \
775
ccc_handle_ordered_map *: ccc_hom_size, \
776
ccc_flat_priority_queue *: ccc_fpq_size, \
777
ccc_flat_double_ended_queue *: ccc_fdeq_size, \
778
ccc_ordered_multimap *: ccc_omm_size, \
779
ccc_priority_queue *: ccc_pq_size, \
780
ccc_singly_linked_list *: ccc_sll_size, \
781
ccc_doubly_linked_list *: ccc_dll_size, \
782
ccc_realtime_ordered_map *: ccc_rom_size, \
783
ccc_handle_realtime_ordered_map *: ccc_hrm_size, \
784
ccc_buffer const *: ccc_buf_size, \
785
ccc_flat_hash_map const *: ccc_fhm_size, \
786
ccc_handle_hash_map const *: ccc_hhm_size, \
787
ccc_ordered_map const *: ccc_om_size, \
788
ccc_handle_ordered_map const *: ccc_hom_size, \
789
ccc_flat_priority_queue const *: ccc_fpq_size, \
790
ccc_flat_double_ended_queue const *: ccc_fdeq_size, \
791
ccc_ordered_multimap const *: ccc_omm_size, \
792
ccc_priority_queue const *: ccc_pq_size, \
793
ccc_singly_linked_list const *: ccc_sll_size, \
794
ccc_doubly_linked_list const *: ccc_dll_size, \
795
ccc_handle_realtime_ordered_map const *: ccc_hrm_size, \
796
ccc_realtime_ordered_map const *: ccc_rom_size)((container_ptr))
797
798
#define ccc_impl_capacity(container_ptr) \
799
_Generic((container_ptr), \
800
ccc_buffer *: ccc_buf_capacity, \
801
ccc_flat_hash_map *: ccc_fhm_capacity, \
802
ccc_handle_hash_map *: ccc_hhm_capacity, \
803
ccc_handle_ordered_map *: ccc_hom_capacity, \
804
ccc_flat_priority_queue *: ccc_fpq_capacity, \
805
ccc_flat_double_ended_queue *: ccc_fdeq_capacity, \
806
ccc_handle_realtime_ordered_map *: ccc_hrm_capacity, \
807
ccc_buffer const *: ccc_buf_capacity, \
808
ccc_flat_hash_map const *: ccc_fhm_capacity, \
809
ccc_handle_hash_map const *: ccc_hhm_capacity, \
810
ccc_handle_ordered_map const *: ccc_hom_capacity, \
811
ccc_flat_priority_queue const *: ccc_fpq_capacity, \
812
ccc_flat_double_ended_queue const *: ccc_fdeq_capacity, \
813
ccc_handle_realtime_ordered_map const *: ccc_hrm_capacity)( \
814
(container_ptr))
815
816
#define ccc_impl_is_empty(container_ptr) \
817
_Generic((container_ptr), \
818
ccc_buffer *: ccc_buf_is_empty, \
819
ccc_flat_hash_map *: ccc_fhm_is_empty, \
820
ccc_handle_hash_map *: ccc_hhm_is_empty, \
821
ccc_ordered_map *: ccc_om_is_empty, \
822
ccc_handle_ordered_map *: ccc_hom_is_empty, \
823
ccc_flat_priority_queue *: ccc_fpq_is_empty, \
824
ccc_flat_double_ended_queue *: ccc_fdeq_is_empty, \
825
ccc_ordered_multimap *: ccc_omm_is_empty, \
826
ccc_priority_queue *: ccc_pq_is_empty, \
827
ccc_singly_linked_list *: ccc_sll_is_empty, \
828
ccc_doubly_linked_list *: ccc_dll_is_empty, \
829
ccc_realtime_ordered_map *: ccc_rom_is_empty, \
830
ccc_handle_realtime_ordered_map *: ccc_hrm_is_empty, \
831
ccc_buffer const *: ccc_buf_is_empty, \
832
ccc_flat_hash_map const *: ccc_fhm_is_empty, \
833
ccc_handle_hash_map const *: ccc_hhm_is_empty, \
834
ccc_ordered_map const *: ccc_om_is_empty, \
835
ccc_handle_ordered_map const *: ccc_hom_is_empty, \
836
ccc_flat_priority_queue const *: ccc_fpq_is_empty, \
837
ccc_flat_double_ended_queue const *: ccc_fdeq_is_empty, \
838
ccc_ordered_multimap const *: ccc_omm_is_empty, \
839
ccc_priority_queue const *: ccc_pq_is_empty, \
840
ccc_singly_linked_list const *: ccc_sll_is_empty, \
841
ccc_doubly_linked_list const *: ccc_dll_is_empty, \
842
ccc_handle_realtime_ordered_map const *: ccc_hrm_is_empty, \
843
ccc_realtime_ordered_map const *: ccc_rom_is_empty)((container_ptr))
844
845
#define ccc_impl_validate(container_ptr) \
846
_Generic((container_ptr), \
847
ccc_flat_hash_map *: ccc_fhm_validate, \
848
ccc_handle_hash_map *: ccc_hhm_validate, \
849
ccc_ordered_map *: ccc_om_validate, \
850
ccc_handle_ordered_map *: ccc_hom_validate, \
851
ccc_flat_priority_queue *: ccc_fpq_validate, \
852
ccc_flat_double_ended_queue *: ccc_fdeq_validate, \
853
ccc_ordered_multimap *: ccc_omm_validate, \
854
ccc_priority_queue *: ccc_pq_validate, \
855
ccc_singly_linked_list *: ccc_sll_validate, \
856
ccc_doubly_linked_list *: ccc_dll_validate, \
857
ccc_realtime_ordered_map *: ccc_rom_validate, \
858
ccc_handle_realtime_ordered_map *: ccc_hrm_validate, \
859
ccc_flat_hash_map const *: ccc_fhm_validate, \
860
ccc_handle_hash_map const *: ccc_hhm_validate, \
861
ccc_ordered_map const *: ccc_om_validate, \
862
ccc_handle_ordered_map const *: ccc_hom_validate, \
863
ccc_flat_priority_queue const *: ccc_fpq_validate, \
864
ccc_flat_double_ended_queue const *: ccc_fdeq_validate, \
865
ccc_ordered_multimap const *: ccc_omm_validate, \
866
ccc_priority_queue const *: ccc_pq_validate, \
867
ccc_singly_linked_list const *: ccc_sll_validate, \
868
ccc_doubly_linked_list const *: ccc_dll_validate, \
869
ccc_handle_realtime_ordered_map const *: ccc_hrm_validate, \
870
ccc_realtime_ordered_map const *: ccc_rom_validate)((container_ptr))
871
872
#endif
/* CCC_IMPL_TRAITS_H */
ccc
impl
impl_traits.h
Generated by
1.9.6