C Container Collection (CCC)
Loading...
Searching...
No Matches
private_traits.h
Go to the documentation of this file.
1
23#ifndef CCC_PRIVATE_TRAITS_H
24#define CCC_PRIVATE_TRAITS_H
25
26/* NOLINTBEGIN */
27#include "../array_tree_map.h" /* IWYU pragma: keep */
28#include "../doubly_linked_list.h" /* IWYU pragma: keep */
29#include "../flat_bitset.h" /* IWYU pragma: keep */
30#include "../flat_buffer.h" /* IWYU pragma: keep */
31#include "../flat_double_ended_queue.h" /* IWYU pragma: keep */
32#include "../flat_hash_map.h" /* IWYU pragma: keep */
33#include "../flat_priority_queue.h" /* IWYU pragma: keep */
34#include "../singly_linked_list.h" /* IWYU pragma: keep */
35#include "../tree_map.h" /* IWYU pragma: keep */
36#include "../types.h" /* IWYU pragma: keep */
37/* This directive will need to be detected throughout all trait macros. */
38#ifdef CCC_SPECIALIZED_ENABLED
39# include "../specialized/adaptive_map.h" /* IWYU pragma: keep */
40# include "../specialized/array_adaptive_map.h" /* IWYU pragma: keep */
41# include "../specialized/priority_queue.h" /* IWYU pragma: keep */
42#endif /* CCC_SPECIALIZED_ENABLED */
43/* NOLINTEND */
44
45/*==================== Entry/Handle Interface =========================*/
46
47#ifdef CCC_SPECIALIZED_ENABLED
49# define CCC_private_swap_entry(container_pointer, swap_arguments...) \
50 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_swap_entry, CCC_Adaptive_map *: CCC_adaptive_map_swap_entry, CCC_Tree_map *: CCC_tree_map_swap_entry)( \
51 (container_pointer), swap_arguments \
52 )
53#else
55# define CCC_private_swap_entry(container_pointer, swap_arguments...) \
56 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_swap_entry, CCC_Tree_map *: CCC_tree_map_swap_entry)( \
57 (container_pointer), swap_arguments \
58 )
59#endif /* CCC_SPECIALIZED_ENABLED */
60
61#ifdef CCC_SPECIALIZED_ENABLED
63# define CCC_private_swap_handle(container_pointer, swap_arguments...) \
64 _Generic((container_pointer), CCC_Array_adaptive_map *: CCC_array_adaptive_map_swap_handle, CCC_Array_tree_map *: CCC_array_tree_map_swap_handle)( \
65 (container_pointer), swap_arguments \
66 )
67#else
69# define CCC_private_swap_handle(container_pointer, swap_arguments...) \
70 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_swap_handle)( \
71 (container_pointer), swap_arguments \
72 )
73#endif /* CCC_SPECIALIZED_ENABLED */
74
75#ifdef CCC_SPECIALIZED_ENABLED
77# define CCC_private_try_insert(container_pointer, try_insert_arguments...) \
78 _Generic((container_pointer), CCC_Array_adaptive_map *: CCC_array_adaptive_map_try_insert, CCC_Array_tree_map *: CCC_array_tree_map_try_insert, CCC_Flat_hash_map *: CCC_flat_hash_map_try_insert, CCC_Adaptive_map *: CCC_adaptive_map_try_insert, CCC_Tree_map *: CCC_tree_map_try_insert)( \
79 (container_pointer), try_insert_arguments \
80 )
81#else
83# define CCC_private_try_insert(container_pointer, try_insert_arguments...) \
84 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_try_insert, CCC_Flat_hash_map *: CCC_flat_hash_map_try_insert, CCC_Tree_map *: CCC_tree_map_try_insert)( \
85 (container_pointer), try_insert_arguments \
86 )
87#endif /* CCC_SPECIALIZED_ENABLED */
88
89#ifdef CCC_SPECIALIZED_ENABLED
91# define CCC_private_insert_or_assign( \
92 container_pointer, insert_or_assign_arguments... \
93 ) \
94 _Generic((container_pointer), CCC_Array_adaptive_map *: CCC_array_adaptive_map_insert_or_assign, CCC_Array_tree_map *: CCC_array_tree_map_insert_or_assign, CCC_Flat_hash_map *: CCC_flat_hash_map_insert_or_assign, CCC_Adaptive_map *: CCC_adaptive_map_insert_or_assign, CCC_Tree_map *: CCC_tree_map_insert_or_assign)( \
95 (container_pointer), insert_or_assign_arguments \
96 )
97#else
99# define CCC_private_insert_or_assign( \
100 container_pointer, insert_or_assign_arguments... \
101 ) \
102 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_insert_or_assign, CCC_Flat_hash_map *: CCC_flat_hash_map_insert_or_assign, CCC_Tree_map *: CCC_tree_map_insert_or_assign)( \
103 (container_pointer), insert_or_assign_arguments \
104 )
105#endif /* CCC_SPECIALIZED_ENABLED */
106
107#ifdef CCC_SPECIALIZED_ENABLED
109# define CCC_private_remove_key_value( \
110 container_pointer, key_val_container_array_pointer... \
111 ) \
112 _Generic((container_pointer), CCC_Array_adaptive_map *: CCC_array_adaptive_map_remove_key_value, CCC_Array_tree_map *: CCC_array_tree_map_remove_key_value, CCC_Flat_hash_map *: CCC_flat_hash_map_remove_key_value, CCC_Adaptive_map *: CCC_adaptive_map_remove_key_value, CCC_Tree_map *: CCC_tree_map_remove_key_value)( \
113 (container_pointer), key_val_container_array_pointer \
114 )
115#else
117# define CCC_private_remove_key_value( \
118 container_pointer, key_val_container_array_pointer... \
119 ) \
120 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_remove_key_value, CCC_Flat_hash_map *: CCC_flat_hash_map_remove_key_value, CCC_Tree_map *: CCC_tree_map_remove_key_value)( \
121 (container_pointer), key_val_container_array_pointer \
122 )
123#endif /* CCC_SPECIALIZED_ENABLED */
124
125#ifdef CCC_SPECIALIZED_ENABLED
127# define CCC_private_remove_entry(container_entry_pointer, ...) \
128 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_remove_entry, CCC_Adaptive_map_entry *: CCC_adaptive_map_remove_entry, CCC_Tree_map_entry *: CCC_tree_map_remove_entry, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_remove_entry, CCC_Adaptive_map_entry const *: CCC_adaptive_map_remove_entry, CCC_Tree_map_entry const *: CCC_tree_map_remove_entry)( \
129 (container_entry_pointer)__VA_OPT__(, __VA_ARGS__) \
130 )
131#else
133# define CCC_private_remove_entry(container_entry_pointer, ...) \
134 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_remove_entry, CCC_Tree_map_entry *: CCC_tree_map_remove_entry, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_remove_entry, CCC_Tree_map_entry const *: CCC_tree_map_remove_entry)( \
135 (container_entry_pointer)__VA_OPT__(, __VA_ARGS__) \
136 )
137#endif /* CCC_SPECIALIZED_ENABLED */
138
139#ifdef CCC_SPECIALIZED_ENABLED
141# define CCC_private_remove_handle(container_array_pointer) \
142 _Generic((container_array_pointer), CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_remove_handle, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_remove_handle, CCC_Array_tree_map_handle *: CCC_array_tree_map_remove_handle, CCC_Array_tree_map_handle const *: CCC_array_tree_map_remove_handle)( \
143 (container_array_pointer) \
144 )
145#else
147# define CCC_private_remove_handle(container_array_pointer) \
148 _Generic((container_array_pointer), CCC_Array_tree_map_handle *: CCC_array_tree_map_remove_handle, CCC_Array_tree_map_handle const *: CCC_array_tree_map_remove_handle)( \
149 (container_array_pointer) \
150 )
151#endif /* CCC_SPECIALIZED_ENABLED */
152
153#ifdef CCC_SPECIALIZED_ENABLED
155# define CCC_private_entry(container_pointer, key_pointer, ...) \
156 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_entry, CCC_Flat_hash_map const *: CCC_flat_hash_map_entry, CCC_Adaptive_map *: CCC_adaptive_map_entry, CCC_Tree_map *: CCC_tree_map_entry, CCC_Tree_map const *: CCC_tree_map_entry)( \
157 (container_pointer), key_pointer __VA_OPT__(, __VA_ARGS__) \
158 )
159#else
161# define CCC_private_entry(container_pointer, key_pointer, ...) \
162 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_entry, CCC_Flat_hash_map const *: CCC_flat_hash_map_entry, CCC_Tree_map *: CCC_tree_map_entry, CCC_Tree_map const *: CCC_tree_map_entry)( \
163 (container_pointer), key_pointer __VA_OPT__(, __VA_ARGS__) \
164 )
165#endif /* CCC_SPECIALIZED_ENABLED */
166
167#ifdef CCC_SPECIALIZED_ENABLED
169# define CCC_private_handle(container_pointer, key_pointer...) \
170 _Generic((container_pointer), CCC_Array_adaptive_map *: CCC_array_adaptive_map_handle, CCC_Array_tree_map *: CCC_array_tree_map_handle, CCC_Array_tree_map const *: CCC_array_tree_map_handle)( \
171 (container_pointer), key_pointer \
172 )
173#else
175# define CCC_private_handle(container_pointer, key_pointer...) \
176 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_handle, CCC_Array_tree_map const *: CCC_array_tree_map_handle)( \
177 (container_pointer), key_pointer \
178 )
179#endif /* CCC_SPECIALIZED_ENABLED */
180
181#ifdef CCC_SPECIALIZED_ENABLED
183# define CCC_private_and_modify( \
184 container_entry_pointer, modifier_pointer... \
185 ) \
186 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_and_modify, CCC_Adaptive_map_entry *: CCC_adaptive_map_and_modify, CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_and_modify, CCC_Tree_map_entry *: CCC_tree_map_and_modify, CCC_Array_tree_map_handle *: CCC_array_tree_map_and_modify, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_and_modify, CCC_Array_tree_map_handle const *: CCC_array_tree_map_and_modify, CCC_Adaptive_map_entry const *: CCC_adaptive_map_and_modify, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_and_modify, CCC_Tree_map_entry const *: CCC_tree_map_and_modify)( \
187 (container_entry_pointer), modifier_pointer \
188 )
189#else
191# define CCC_private_and_modify( \
192 container_entry_pointer, modifier_pointer... \
193 ) \
194 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_and_modify, CCC_Tree_map_entry *: CCC_tree_map_and_modify, CCC_Array_tree_map_handle *: CCC_array_tree_map_and_modify, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_and_modify, CCC_Array_tree_map_handle const *: CCC_array_tree_map_and_modify, CCC_Tree_map_entry const *: CCC_tree_map_and_modify)( \
195 (container_entry_pointer), modifier_pointer \
196 )
197#endif /* CCC_SPECIALIZED_ENABLED */
198
199#ifdef CCC_SPECIALIZED_ENABLED
201# define CCC_private_insert_entry( \
202 container_entry_pointer, key_val_container_array_pointer... \
203 ) \
204 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_insert_entry, CCC_Adaptive_map_entry *: CCC_adaptive_map_insert_entry, CCC_Tree_map_entry *: CCC_tree_map_insert_entry, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_insert_entry, CCC_Adaptive_map_entry const *: CCC_adaptive_map_insert_entry, CCC_Tree_map_entry const *: CCC_tree_map_insert_entry)( \
205 (container_entry_pointer), key_val_container_array_pointer \
206 )
207#else
209# define CCC_private_insert_entry( \
210 container_entry_pointer, key_val_container_array_pointer... \
211 ) \
212 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_insert_entry, CCC_Tree_map_entry *: CCC_tree_map_insert_entry, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_insert_entry, CCC_Tree_map_entry const *: CCC_tree_map_insert_entry)( \
213 (container_entry_pointer), key_val_container_array_pointer \
214 )
215#endif /* CCC_SPECIALIZED_ENABLED */
216
217#ifdef CCC_SPECIALIZED_ENABLED
219# define CCC_private_insert_handle( \
220 container_array_pointer, key_val_container_array_pointer... \
221 ) \
222 _Generic((container_array_pointer), CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_insert_handle, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_insert_handle, CCC_Array_tree_map_handle *: CCC_array_tree_map_insert_handle, CCC_Array_tree_map_handle const *: CCC_array_tree_map_insert_handle)( \
223 (container_array_pointer), key_val_container_array_pointer \
224 )
225#else
227# define CCC_private_insert_handle( \
228 container_array_pointer, key_val_container_array_pointer... \
229 ) \
230 _Generic((container_array_pointer), CCC_Array_tree_map_handle *: CCC_array_tree_map_insert_handle, CCC_Array_tree_map_handle const *: CCC_array_tree_map_insert_handle)( \
231 (container_array_pointer), key_val_container_array_pointer \
232 )
233#endif /* CCC_SPECIALIZED_ENABLED */
234
235#ifdef CCC_SPECIALIZED_ENABLED
237# define CCC_private_or_insert( \
238 container_entry_pointer, key_val_container_array_pointer... \
239 ) \
240 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_or_insert, CCC_Adaptive_map_entry *: CCC_adaptive_map_or_insert, CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_or_insert, CCC_Tree_map_entry *: CCC_tree_map_or_insert, CCC_Array_tree_map_handle *: CCC_array_tree_map_or_insert, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_or_insert, CCC_Adaptive_map_entry const *: CCC_adaptive_map_or_insert, CCC_Array_tree_map_handle const *: CCC_array_tree_map_or_insert, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_or_insert, CCC_Tree_map_entry const *: CCC_tree_map_or_insert)( \
241 (container_entry_pointer), key_val_container_array_pointer \
242 )
243#else
245# define CCC_private_or_insert( \
246 container_entry_pointer, key_val_container_array_pointer... \
247 ) \
248 _Generic((container_entry_pointer), CCC_Flat_hash_map_entry *: CCC_flat_hash_map_or_insert, CCC_Tree_map_entry *: CCC_tree_map_or_insert, CCC_Array_tree_map_handle *: CCC_array_tree_map_or_insert, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_or_insert, CCC_Array_tree_map_handle const *: CCC_array_tree_map_or_insert, CCC_Tree_map_entry const *: CCC_tree_map_or_insert)( \
249 (container_entry_pointer), key_val_container_array_pointer \
250 )
251#endif /* CCC_SPECIALIZED_ENABLED */
252
253#ifdef CCC_SPECIALIZED_ENABLED
255# define CCC_private_unwrap(container_entry_pointer) \
256 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_unwrap, CCC_Entry const *: CCC_entry_unwrap, CCC_Handle *: CCC_handle_unwrap, CCC_Handle const *: CCC_handle_unwrap, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_unwrap, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_unwrap, CCC_Adaptive_map_entry *: CCC_adaptive_map_unwrap, CCC_Adaptive_map_entry const *: CCC_adaptive_map_unwrap, CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_unwrap, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_unwrap, CCC_Array_tree_map_handle *: CCC_array_tree_map_unwrap, CCC_Array_tree_map_handle const *: CCC_array_tree_map_unwrap, CCC_Tree_map_entry *: CCC_tree_map_unwrap, CCC_Tree_map_entry const *: CCC_tree_map_unwrap)( \
257 (container_entry_pointer) \
258 )
259#else
261# define CCC_private_unwrap(container_entry_pointer) \
262 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_unwrap, CCC_Entry const *: CCC_entry_unwrap, CCC_Handle *: CCC_handle_unwrap, CCC_Handle const *: CCC_handle_unwrap, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_unwrap, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_unwrap, CCC_Array_tree_map_handle *: CCC_array_tree_map_unwrap, CCC_Array_tree_map_handle const *: CCC_array_tree_map_unwrap, CCC_Tree_map_entry *: CCC_tree_map_unwrap, CCC_Tree_map_entry const *: CCC_tree_map_unwrap)( \
263 (container_entry_pointer) \
264 )
265#endif /* CCC_SPECIALIZED_ENABLED */
266
267#ifdef CCC_SPECIALIZED_ENABLED
269# define CCC_private_occupied(container_entry_pointer) \
270 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_occupied, CCC_Entry const *: CCC_entry_occupied, CCC_Handle *: CCC_handle_occupied, CCC_Handle const *: CCC_handle_occupied, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_occupied, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_occupied, CCC_Adaptive_map_entry *: CCC_adaptive_map_occupied, CCC_Adaptive_map_entry const *: CCC_adaptive_map_occupied, CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_occupied, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_occupied, CCC_Array_tree_map_handle *: CCC_array_tree_map_occupied, CCC_Array_tree_map_handle const *: CCC_array_tree_map_occupied, CCC_Tree_map_entry *: CCC_tree_map_occupied, CCC_Tree_map_entry const *: CCC_tree_map_occupied)( \
271 (container_entry_pointer) \
272 )
273#else
275# define CCC_private_occupied(container_entry_pointer) \
276 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_occupied, CCC_Entry const *: CCC_entry_occupied, CCC_Handle *: CCC_handle_occupied, CCC_Handle const *: CCC_handle_occupied, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_occupied, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_occupied, CCC_Array_tree_map_handle *: CCC_array_tree_map_occupied, CCC_Array_tree_map_handle const *: CCC_array_tree_map_occupied, CCC_Tree_map_entry *: CCC_tree_map_occupied, CCC_Tree_map_entry const *: CCC_tree_map_occupied)( \
277 (container_entry_pointer) \
278 )
279#endif /* CCC_SPECIALIZED_ENABLED */
280
281#ifdef CCC_SPECIALIZED_ENABLED
283# define CCC_private_insert_error(container_entry_pointer) \
284 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_insert_error, CCC_Entry const *: CCC_entry_insert_error, CCC_Handle *: CCC_handle_insert_error, CCC_Handle const *: CCC_handle_insert_error, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_insert_error, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_insert_error, CCC_Adaptive_map_entry *: CCC_adaptive_map_insert_error, CCC_Adaptive_map_entry const *: CCC_adaptive_map_insert_error, CCC_Array_adaptive_map_handle *: CCC_array_adaptive_map_insert_error, CCC_Array_adaptive_map_handle const *: CCC_array_adaptive_map_insert_error, CCC_Array_tree_map_handle *: CCC_array_tree_map_insert_error, CCC_Array_tree_map_handle const *: CCC_array_tree_map_insert_error, CCC_Tree_map_entry *: CCC_tree_map_insert_error, CCC_Tree_map_entry const *: CCC_tree_map_insert_error)( \
285 (container_entry_pointer) \
286 )
287#else
289# define CCC_private_insert_error(container_entry_pointer) \
290 _Generic((container_entry_pointer), CCC_Entry *: CCC_entry_insert_error, CCC_Entry const *: CCC_entry_insert_error, CCC_Handle *: CCC_handle_insert_error, CCC_Handle const *: CCC_handle_insert_error, CCC_Flat_hash_map_entry *: CCC_flat_hash_map_insert_error, CCC_Flat_hash_map_entry const *: CCC_flat_hash_map_insert_error, CCC_Array_tree_map_handle *: CCC_array_tree_map_insert_error, CCC_Array_tree_map_handle const *: CCC_array_tree_map_insert_error, CCC_Tree_map_entry *: CCC_tree_map_insert_error, CCC_Tree_map_entry const *: CCC_tree_map_insert_error)( \
291 (container_entry_pointer) \
292 )
293#endif /* CCC_SPECIALIZED_ENABLED */
294
295/*====================== Misc Search Interface ===========================*/
296
297#ifdef CCC_SPECIALIZED_ENABLED
299# define CCC_private_get_key_value(container_pointer, key_pointer...) \
300 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_get_key_value, CCC_Flat_hash_map const *: CCC_flat_hash_map_get_key_value, CCC_Adaptive_map *: CCC_adaptive_map_get_key_value, CCC_Array_adaptive_map *: CCC_array_adaptive_map_get_key_value, CCC_Array_tree_map *: CCC_array_tree_map_get_key_value, CCC_Array_tree_map const *: CCC_array_tree_map_get_key_value, CCC_Tree_map *: CCC_tree_map_get_key_value, CCC_Tree_map const *: CCC_tree_map_get_key_value)( \
301 (container_pointer), key_pointer \
302 )
303#else
305# define CCC_private_get_key_value(container_pointer, key_pointer...) \
306 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_get_key_value, CCC_Flat_hash_map const *: CCC_flat_hash_map_get_key_value, CCC_Array_tree_map *: CCC_array_tree_map_get_key_value, CCC_Array_tree_map const *: CCC_array_tree_map_get_key_value, CCC_Tree_map *: CCC_tree_map_get_key_value, CCC_Tree_map const *: CCC_tree_map_get_key_value)( \
307 (container_pointer), key_pointer \
308 )
309#endif /* CCC_SPECIALIZED_ENABLED */
310
311#ifdef CCC_SPECIALIZED_ENABLED
313# define CCC_private_contains(container_pointer, key_pointer...) \
314 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_contains, CCC_Flat_hash_map const *: CCC_flat_hash_map_contains, CCC_Adaptive_map *: CCC_adaptive_map_contains, CCC_Array_adaptive_map *: CCC_array_adaptive_map_contains, CCC_Array_tree_map *: CCC_array_tree_map_contains, CCC_Array_tree_map const *: CCC_array_tree_map_contains, CCC_Tree_map *: CCC_tree_map_contains, CCC_Tree_map const *: CCC_tree_map_contains)( \
315 (container_pointer), key_pointer \
316 )
317#else
319# define CCC_private_contains(container_pointer, key_pointer...) \
320 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_contains, CCC_Flat_hash_map const *: CCC_flat_hash_map_contains, CCC_Array_tree_map *: CCC_array_tree_map_contains, CCC_Array_tree_map const *: CCC_array_tree_map_contains, CCC_Tree_map *: CCC_tree_map_contains, CCC_Tree_map const *: CCC_tree_map_contains)( \
321 (container_pointer), key_pointer \
322 )
323#endif /* CCC_SPECIALIZED_ENABLED */
324
325/*================ Sequential Containers Interface =====================*/
326
327#ifdef CCC_SPECIALIZED_ENABLED
329# define CCC_private_push(container_pointer, container_array_pointer...) \
330 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_push, CCC_Priority_queue *: CCC_priority_queue_push)( \
331 (container_pointer), container_array_pointer \
332 )
333#else
335# define CCC_private_push(container_pointer, container_array_pointer...) \
336 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_push)( \
337 (container_pointer), container_array_pointer \
338 )
339#endif /* CCC_SPECIALIZED_ENABLED */
340
342#define CCC_private_push_back(container_pointer, container_array_pointer...) \
343 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_push_back, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_push_back, CCC_Doubly_linked_list *: CCC_doubly_linked_list_push_back, CCC_Flat_buffer *: CCC_flat_buffer_push_back)( \
344 (container_pointer), container_array_pointer \
345 )
346
348#define CCC_private_push_front(container_pointer, container_array_pointer...) \
349 _Generic((container_pointer), CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_push_front, CCC_Doubly_linked_list *: CCC_doubly_linked_list_push_front, CCC_Singly_linked_list *: CCC_singly_linked_list_push_front)( \
350 (container_pointer), container_array_pointer \
351 )
352
353#ifdef CCC_SPECIALIZED_ENABLED
355# define CCC_private_pop(container_pointer, ...) \
356 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_pop, CCC_Priority_queue *: CCC_priority_queue_pop)( \
357 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
358 )
359#else
361# define CCC_private_pop(container_pointer, ...) \
362 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_pop)( \
363 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
364 )
365#endif /* CCC_SPECIALIZED_ENABLED */
366
368#define CCC_private_pop_front(container_pointer, ...) \
369 _Generic((container_pointer), CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_pop_front, CCC_Doubly_linked_list *: CCC_doubly_linked_list_pop_front, CCC_Singly_linked_list *: CCC_singly_linked_list_pop_front)( \
370 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
371 )
372
374#define CCC_private_pop_back(container_pointer, ...) \
375 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_pop_back, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_pop_back, CCC_Doubly_linked_list *: CCC_doubly_linked_list_pop_back, CCC_Flat_buffer *: CCC_flat_buffer_pop_back)( \
376 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
377 )
378
379#ifdef CCC_SPECIALIZED_ENABLED
381# define CCC_private_front(container_pointer) \
382 _Generic((container_pointer), CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_front, CCC_Doubly_linked_list *: CCC_doubly_linked_list_front, CCC_Flat_priority_queue *: CCC_flat_priority_queue_front, CCC_Priority_queue *: CCC_priority_queue_front, CCC_Singly_linked_list *: CCC_singly_linked_list_front, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_front, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_front, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_front, CCC_Priority_queue const *: CCC_priority_queue_front, CCC_Singly_linked_list const *: CCC_singly_linked_list_front)( \
383 (container_pointer) \
384 )
385#else
387# define CCC_private_front(container_pointer) \
388 _Generic((container_pointer), CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_front, CCC_Doubly_linked_list *: CCC_doubly_linked_list_front, CCC_Flat_priority_queue *: CCC_flat_priority_queue_front, CCC_Singly_linked_list *: CCC_singly_linked_list_front, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_front, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_front, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_front, CCC_Singly_linked_list const *: CCC_singly_linked_list_front)( \
389 (container_pointer) \
390 )
391#endif /* CCC_SPECIALIZED_ENABLED */
392
394#define CCC_private_back(container_pointer) \
395 _Generic((container_pointer), CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_back, CCC_Doubly_linked_list *: CCC_doubly_linked_list_back, CCC_Flat_buffer *: CCC_flat_buffer_back, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_back, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_back, CCC_Flat_buffer const *: CCC_flat_buffer_back)( \
396 (container_pointer) \
397 )
398
399/*================ Priority Queue Update Interface =====================*/
400
401#ifdef CCC_SPECIALIZED_ENABLED
403# define CCC_private_update(container_pointer, update_arguments...) \
404 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_update, CCC_Priority_queue *: CCC_priority_queue_update)( \
405 (container_pointer), update_arguments \
406 )
407#else
409# define CCC_private_update(container_pointer, update_arguments...) \
410 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_update)( \
411 (container_pointer), update_arguments \
412 )
413#endif /* CCC_SPECIALIZED_ENABLED */
414
415#ifdef CCC_SPECIALIZED_ENABLED
417# define CCC_private_increase(container_pointer, increase_arguments...) \
418 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_increase, CCC_Priority_queue *: CCC_priority_queue_increase)( \
419 (container_pointer), increase_arguments \
420 )
421#else
423# define CCC_private_increase(container_pointer, increase_arguments...) \
424 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_increase)( \
425 (container_pointer), increase_arguments \
426 )
427#endif /* CCC_SPECIALIZED_ENABLED */
428
429#ifdef CCC_SPECIALIZED_ENABLED
431# define CCC_private_decrease(container_pointer, decrease_arguments...) \
432 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_decrease, CCC_Priority_queue *: CCC_priority_queue_decrease)( \
433 (container_pointer), decrease_arguments \
434 )
435#else
437# define CCC_private_decrease(container_pointer, decrease_arguments...) \
438 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_decrease)( \
439 (container_pointer), decrease_arguments \
440 )
441#endif /* CCC_SPECIALIZED_ENABLED */
442
443#ifdef CCC_SPECIALIZED_ENABLED
445# define CCC_private_extract(container_pointer, container_array_pointer...) \
446 _Generic((container_pointer), CCC_Doubly_linked_list *: CCC_doubly_linked_list_extract, CCC_Singly_linked_list *: CCC_singly_linked_list_extract, CCC_Priority_queue *: CCC_priority_queue_extract)( \
447 (container_pointer), container_array_pointer \
448 )
449#else
451# define CCC_private_extract(container_pointer, container_array_pointer...) \
452 _Generic((container_pointer), CCC_Doubly_linked_list *: CCC_doubly_linked_list_extract, CCC_Singly_linked_list *: CCC_singly_linked_list_extract)( \
453 (container_pointer), container_array_pointer \
454 )
455#endif /* CCC_SPECIALIZED_ENABLED */
456
458#define CCC_private_erase(container_pointer, container_array_pointer...) \
459 _Generic((container_pointer), CCC_Flat_priority_queue *: CCC_flat_priority_queue_erase)( \
460 (container_pointer), container_array_pointer \
461 )
462
464#define CCC_private_extract_range( \
465 container_pointer, container_array_begin_end_pointer... \
466) \
467 _Generic((container_pointer), CCC_Doubly_linked_list *: CCC_doubly_linked_list_extract_range, CCC_Singly_linked_list *: CCC_singly_linked_list_extract_range)( \
468 (container_pointer), container_array_begin_end_pointer \
469 )
470
471/*=================== Iterators Interface ==============================*/
472
473#ifdef CCC_SPECIALIZED_ENABLED
475# define CCC_private_begin(container_pointer) \
476 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_begin, CCC_Flat_hash_map *: CCC_flat_hash_map_begin, CCC_Adaptive_map *: CCC_adaptive_map_begin, CCC_Array_adaptive_map *: CCC_array_adaptive_map_begin, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_begin, CCC_Singly_linked_list *: CCC_singly_linked_list_begin, CCC_Doubly_linked_list *: CCC_doubly_linked_list_begin, CCC_Tree_map *: CCC_tree_map_begin, CCC_Array_tree_map *: CCC_array_tree_map_begin, CCC_Flat_buffer const *: CCC_flat_buffer_begin, CCC_Flat_hash_map const *: CCC_flat_hash_map_begin, CCC_Adaptive_map const *: CCC_adaptive_map_begin, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_begin, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_begin, CCC_Singly_linked_list const *: CCC_singly_linked_list_begin, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_begin, CCC_Array_tree_map const *: CCC_array_tree_map_begin, CCC_Tree_map const *: CCC_tree_map_begin)( \
477 (container_pointer) \
478 )
479#else
481# define CCC_private_begin(container_pointer) \
482 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_begin, CCC_Flat_hash_map *: CCC_flat_hash_map_begin, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_begin, CCC_Singly_linked_list *: CCC_singly_linked_list_begin, CCC_Doubly_linked_list *: CCC_doubly_linked_list_begin, CCC_Tree_map *: CCC_tree_map_begin, CCC_Array_tree_map *: CCC_array_tree_map_begin, CCC_Flat_buffer const *: CCC_flat_buffer_begin, CCC_Flat_hash_map const *: CCC_flat_hash_map_begin, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_begin, CCC_Singly_linked_list const *: CCC_singly_linked_list_begin, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_begin, CCC_Array_tree_map const *: CCC_array_tree_map_begin, CCC_Tree_map const *: CCC_tree_map_begin)( \
483 (container_pointer) \
484 )
485#endif /* CCC_SPECIALIZED_ENABLED */
486
487#ifdef CCC_SPECIALIZED_ENABLED
489# define CCC_private_reverse_begin(container_pointer) \
490 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_begin, CCC_Adaptive_map *: CCC_adaptive_map_reverse_begin, CCC_Array_adaptive_map *: CCC_array_adaptive_map_reverse_begin, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_begin, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_begin, CCC_Tree_map *: CCC_tree_map_reverse_begin, CCC_Array_tree_map *: CCC_array_tree_map_reverse_begin, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_begin, CCC_Adaptive_map const *: CCC_adaptive_map_reverse_begin, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_reverse_begin, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_begin, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_begin, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_begin, CCC_Tree_map const *: CCC_tree_map_reverse_begin)( \
491 (container_pointer) \
492 )
493#else
495# define CCC_private_reverse_begin(container_pointer) \
496 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_begin, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_begin, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_begin, CCC_Tree_map *: CCC_tree_map_reverse_begin, CCC_Array_tree_map *: CCC_array_tree_map_reverse_begin, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_begin, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_begin, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_begin, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_begin, CCC_Tree_map const *: CCC_tree_map_reverse_begin)( \
497 (container_pointer) \
498 )
499#endif /* CCC_SPECIALIZED_ENABLED */
500
501#ifdef CCC_SPECIALIZED_ENABLED
503# define CCC_private_next(container_pointer, void_iterator_pointer) \
504 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_next, CCC_Flat_hash_map *: CCC_flat_hash_map_next, CCC_Adaptive_map *: CCC_adaptive_map_next, CCC_Array_adaptive_map *: CCC_array_adaptive_map_next, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_next, CCC_Singly_linked_list *: CCC_singly_linked_list_next, CCC_Doubly_linked_list *: CCC_doubly_linked_list_next, CCC_Tree_map *: CCC_tree_map_next, CCC_Array_tree_map *: CCC_array_tree_map_next, CCC_Flat_buffer const *: CCC_flat_buffer_next, CCC_Flat_hash_map const *: CCC_flat_hash_map_next, CCC_Adaptive_map const *: CCC_adaptive_map_next, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_next, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_next, CCC_Singly_linked_list const *: CCC_singly_linked_list_next, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_next, CCC_Array_tree_map const *: CCC_array_tree_map_next, CCC_Tree_map const *: CCC_tree_map_next)( \
505 (container_pointer), (void_iterator_pointer) \
506 )
507#else
509# define CCC_private_next(container_pointer, void_iterator_pointer) \
510 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_next, CCC_Flat_hash_map *: CCC_flat_hash_map_next, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_next, CCC_Singly_linked_list *: CCC_singly_linked_list_next, CCC_Doubly_linked_list *: CCC_doubly_linked_list_next, CCC_Tree_map *: CCC_tree_map_next, CCC_Array_tree_map *: CCC_array_tree_map_next, CCC_Flat_buffer const *: CCC_flat_buffer_next, CCC_Flat_hash_map const *: CCC_flat_hash_map_next, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_next, CCC_Singly_linked_list const *: CCC_singly_linked_list_next, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_next, CCC_Array_tree_map const *: CCC_array_tree_map_next, CCC_Tree_map const *: CCC_tree_map_next)( \
511 (container_pointer), (void_iterator_pointer) \
512 )
513#endif /* CCC_SPECIALIZED_ENABLED */
514
515#ifdef CCC_SPECIALIZED_ENABLED
517# define CCC_private_reverse_next(container_pointer, void_iterator_pointer) \
518 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_next, CCC_Adaptive_map *: CCC_adaptive_map_reverse_next, CCC_Array_adaptive_map *: CCC_array_adaptive_map_reverse_next, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_next, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_next, CCC_Tree_map *: CCC_tree_map_reverse_next, CCC_Array_tree_map *: CCC_array_tree_map_reverse_next, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_next, CCC_Adaptive_map const *: CCC_adaptive_map_reverse_next, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_reverse_next, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_next, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_next, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_next, CCC_Tree_map const *: CCC_tree_map_reverse_next)( \
519 (container_pointer), (void_iterator_pointer) \
520 )
521#else
523# define CCC_private_reverse_next(container_pointer, void_iterator_pointer) \
524 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_next, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_next, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_next, CCC_Tree_map *: CCC_tree_map_reverse_next, CCC_Array_tree_map *: CCC_array_tree_map_reverse_next, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_next, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_next, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_next, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_next, CCC_Tree_map const *: CCC_tree_map_reverse_next)( \
525 (container_pointer), (void_iterator_pointer) \
526 )
527#endif /* CCC_SPECIALIZED_ENABLED */
528
529#ifdef CCC_SPECIALIZED_ENABLED
531# define CCC_private_end(container_pointer) \
532 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_end, CCC_Flat_hash_map *: CCC_flat_hash_map_end, CCC_Adaptive_map *: CCC_adaptive_map_end, CCC_Array_adaptive_map *: CCC_array_adaptive_map_end, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_end, CCC_Singly_linked_list *: CCC_singly_linked_list_end, CCC_Doubly_linked_list *: CCC_doubly_linked_list_end, CCC_Tree_map *: CCC_tree_map_end, CCC_Array_tree_map *: CCC_array_tree_map_end, CCC_Flat_buffer const *: CCC_flat_buffer_end, CCC_Flat_hash_map const *: CCC_flat_hash_map_end, CCC_Adaptive_map const *: CCC_adaptive_map_end, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_end, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_end, CCC_Singly_linked_list const *: CCC_singly_linked_list_end, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_end, CCC_Array_tree_map const *: CCC_array_tree_map_end, CCC_Tree_map const *: CCC_tree_map_end)( \
533 (container_pointer) \
534 )
535#else
537# define CCC_private_end(container_pointer) \
538 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_end, CCC_Flat_hash_map *: CCC_flat_hash_map_end, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_end, CCC_Singly_linked_list *: CCC_singly_linked_list_end, CCC_Doubly_linked_list *: CCC_doubly_linked_list_end, CCC_Tree_map *: CCC_tree_map_end, CCC_Array_tree_map *: CCC_array_tree_map_end, CCC_Flat_buffer const *: CCC_flat_buffer_end, CCC_Flat_hash_map const *: CCC_flat_hash_map_end, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_end, CCC_Singly_linked_list const *: CCC_singly_linked_list_end, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_end, CCC_Array_tree_map const *: CCC_array_tree_map_end, CCC_Tree_map const *: CCC_tree_map_end)( \
539 (container_pointer) \
540 )
541#endif /* CCC_SPECIALIZED_ENABLED */
542
543#ifdef CCC_SPECIALIZED_ENABLED
545# define CCC_private_reverse_end(container_pointer) \
546 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_end, CCC_Adaptive_map *: CCC_adaptive_map_reverse_end, CCC_Array_adaptive_map *: CCC_array_adaptive_map_reverse_end, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_end, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_end, CCC_Tree_map *: CCC_tree_map_reverse_end, CCC_Array_tree_map *: CCC_array_tree_map_reverse_end, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_end, CCC_Adaptive_map const *: CCC_adaptive_map_reverse_end, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_reverse_end, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_end, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_end, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_end, CCC_Tree_map const *: CCC_tree_map_reverse_end)( \
547 (container_pointer) \
548 )
549#else
551# define CCC_private_reverse_end(container_pointer) \
552 _Generic((container_pointer), CCC_Flat_buffer *: CCC_flat_buffer_reverse_end, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reverse_end, CCC_Doubly_linked_list *: CCC_doubly_linked_list_reverse_end, CCC_Tree_map *: CCC_tree_map_reverse_end, CCC_Array_tree_map *: CCC_array_tree_map_reverse_end, CCC_Flat_buffer const *: CCC_flat_buffer_reverse_end, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_reverse_end, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_reverse_end, CCC_Array_tree_map const *: CCC_array_tree_map_reverse_end, CCC_Tree_map const *: CCC_tree_map_reverse_end)( \
553 (container_pointer) \
554 )
555#endif /* CCC_SPECIALIZED_ENABLED */
556
557#ifdef CCC_SPECIALIZED_ENABLED
559# define CCC_private_equal_range( \
560 container_pointer, begin_and_end_key_pointer... \
561 ) \
562 _Generic((container_pointer), CCC_Adaptive_map *: CCC_adaptive_map_equal_range, CCC_Array_adaptive_map *: CCC_array_adaptive_map_equal_range, CCC_Array_tree_map *: CCC_array_tree_map_equal_range, CCC_Array_tree_map const *: CCC_array_tree_map_equal_range, CCC_Tree_map *: CCC_tree_map_equal_range, CCC_Tree_map const *: CCC_tree_map_equal_range)( \
563 (container_pointer), begin_and_end_key_pointer \
564 )
565#else
567# define CCC_private_equal_range( \
568 container_pointer, begin_and_end_key_pointer... \
569 ) \
570 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_equal_range, CCC_Array_tree_map const *: CCC_array_tree_map_equal_range, CCC_Tree_map *: CCC_tree_map_equal_range, CCC_Tree_map const *: CCC_tree_map_equal_range)( \
571 (container_pointer), begin_and_end_key_pointer \
572 )
573#endif /* CCC_SPECIALIZED_ENABLED */
574
575#ifdef CCC_SPECIALIZED_ENABLED
577# define CCC_private_equal_range_reverse( \
578 container_pointer, reverse_begin_and_reverse_end_key_pointer... \
579 ) \
580 _Generic((container_pointer), CCC_Adaptive_map *: CCC_adaptive_map_equal_range_reverse, CCC_Array_adaptive_map *: CCC_array_adaptive_map_equal_range_reverse, CCC_Array_tree_map *: CCC_array_tree_map_equal_range_reverse, CCC_Array_tree_map const *: CCC_array_tree_map_equal_range_reverse, CCC_Tree_map *: CCC_tree_map_equal_range_reverse, CCC_Tree_map const *: CCC_tree_map_equal_range_reverse)( \
581 (container_pointer), reverse_begin_and_reverse_end_key_pointer \
582 )
583#else
585# define CCC_private_equal_range_reverse( \
586 container_pointer, reverse_begin_and_reverse_end_key_pointer... \
587 ) \
588 _Generic((container_pointer), CCC_Array_tree_map *: CCC_array_tree_map_equal_range_reverse, CCC_Array_tree_map const *: CCC_array_tree_map_equal_range_reverse, CCC_Tree_map *: CCC_tree_map_equal_range_reverse, CCC_Tree_map const *: CCC_tree_map_equal_range_reverse)( \
589 (container_pointer), reverse_begin_and_reverse_end_key_pointer \
590 )
591#endif /* CCC_SPECIALIZED_ENABLED */
592
597#ifdef range_begin
598# undef range_begin
599#endif
600#ifdef range_end
601# undef range_end
602#endif
603#ifdef range_reverse_begin
604# undef range_reverse_begin
605#endif
606#ifdef range_reverse_end
607# undef range_reverse_end
608#endif
609
611#define CCC_private_range_begin(range_pointer) \
612 _Generic((range_pointer), CCC_Range *: CCC_range_begin, CCC_Range const *: CCC_range_begin, CCC_Handle_range *: CCC_handle_range_begin, CCC_Handle_range const *: CCC_handle_range_begin)( \
613 (range_pointer) \
614 )
615
617#define CCC_private_range_end(range_pointer) \
618 _Generic((range_pointer), CCC_Range *: CCC_range_end, CCC_Range const *: CCC_range_end, CCC_Handle_range *: CCC_handle_range_end, CCC_Handle_range const *: CCC_handle_range_end)( \
619 (range_pointer) \
620 )
621
623#define CCC_private_range_reverse_begin(range_reverse_pointer) \
624 _Generic((range_reverse_pointer), CCC_Range_reverse *: CCC_range_reverse_begin, CCC_Range_reverse const *: CCC_range_reverse_begin, CCC_Handle_range_reverse *: CCC_handle_range_reverse_begin, CCC_Handle_range_reverse const *: CCC_handle_range_reverse_begin)( \
625 (range_reverse_pointer) \
626 )
627
629#define CCC_private_range_reverse_end(range_reverse_pointer) \
630 _Generic((range_reverse_pointer), CCC_Range_reverse *: CCC_range_reverse_end, CCC_Range_reverse const *: CCC_range_reverse_end, CCC_Handle_range_reverse *: CCC_handle_range_reverse_end, CCC_Handle_range_reverse const *: CCC_handle_range_reverse_end)( \
631 (range_reverse_pointer) \
632 )
633
635#define CCC_private_splice(container_pointer, splice_arguments...) \
636 _Generic((container_pointer), CCC_Singly_linked_list *: CCC_singly_linked_list_splice, CCC_Singly_linked_list const *: CCC_singly_linked_list_splice, CCC_Doubly_linked_list *: CCC_doubly_linked_list_splice, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_splice)( \
637 (container_pointer), splice_arguments \
638 )
639
641#define CCC_private_splice_range(container_pointer, splice_range_arguments...) \
642 _Generic((container_pointer), CCC_Singly_linked_list *: CCC_singly_linked_list_splice_range, CCC_Singly_linked_list const *: CCC_singly_linked_list_splice_range, CCC_Doubly_linked_list *: CCC_doubly_linked_list_splice_range, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_splice_range)( \
643 (container_pointer), splice_range_arguments \
644 )
645
646/*=================== Memory Management =======================*/
647
648#ifdef CCC_SPECIALIZED_ENABLED
650# define CCC_private_copy( \
651 destination_container_pointer, \
652 source_container_pointer, \
653 allocate_pointer \
654 ) \
655 _Generic((destination_container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_copy, CCC_Flat_hash_map *: CCC_flat_hash_map_copy, CCC_Array_adaptive_map *: CCC_array_adaptive_map_copy, CCC_Flat_priority_queue *: CCC_flat_priority_queue_copy, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_copy, CCC_Array_tree_map *: CCC_array_tree_map_copy)((destination_container_pointer), (source_container_pointer), (allocate_pointer))
656#else
658# define CCC_private_copy( \
659 destination_container_pointer, \
660 source_container_pointer, \
661 allocate_pointer \
662 ) \
663 _Generic((destination_container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_copy, CCC_Flat_hash_map *: CCC_flat_hash_map_copy, CCC_Flat_priority_queue *: CCC_flat_priority_queue_copy, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_copy, CCC_Array_tree_map *: CCC_array_tree_map_copy)( \
664 (destination_container_pointer), \
665 (source_container_pointer), \
666 (allocate_pointer) \
667 )
668#endif /* CCC_SPECIALIZED_ENABLED */
669
670#ifdef CCC_SPECIALIZED_ENABLED
672# define CCC_private_reserve(container_pointer, n_to_add, allocate_pointer) \
673 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_reserve, CCC_Flat_buffer *: CCC_flat_buffer_reserve, CCC_Flat_hash_map *: CCC_flat_hash_map_reserve, CCC_Array_adaptive_map *: CCC_array_adaptive_map_reserve, CCC_Flat_priority_queue *: CCC_flat_priority_queue_reserve, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reserve, CCC_Array_tree_map *: CCC_array_tree_map_reserve)( \
674 (container_pointer), (n_to_add), (allocate_pointer) \
675 )
676#else
678# define CCC_private_reserve(container_pointer, n_to_add, allocate_pointer) \
679 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_reserve, CCC_Flat_buffer *: CCC_flat_buffer_reserve, CCC_Flat_hash_map *: CCC_flat_hash_map_reserve, CCC_Flat_priority_queue *: CCC_flat_priority_queue_reserve, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_reserve, CCC_Array_tree_map *: CCC_array_tree_map_reserve)( \
680 (container_pointer), (n_to_add), (allocate_pointer) \
681 )
682#endif /* CCC_SPECIALIZED_ENABLED */
683
684#ifdef CCC_SPECIALIZED_ENABLED
686# define CCC_private_clear(container_pointer, ...) \
687 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_clear, CCC_Flat_buffer *: CCC_flat_buffer_clear, CCC_Flat_hash_map *: CCC_flat_hash_map_clear, CCC_Array_adaptive_map *: CCC_array_adaptive_map_clear, CCC_Flat_priority_queue *: CCC_flat_priority_queue_clear, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_clear, CCC_Singly_linked_list *: CCC_singly_linked_list_clear, CCC_Doubly_linked_list *: CCC_doubly_linked_list_clear, CCC_Adaptive_map *: CCC_adaptive_map_clear, CCC_Priority_queue *: CCC_priority_queue_clear, CCC_Tree_map *: CCC_tree_map_clear, CCC_Array_tree_map *: CCC_array_tree_map_clear)(( \
688 container_pointer \
689 )__VA_OPT__(, __VA_ARGS__))
690#else
692# define CCC_private_clear(container_pointer, ...) \
693 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_clear, CCC_Flat_buffer *: CCC_flat_buffer_clear, CCC_Flat_hash_map *: CCC_flat_hash_map_clear, CCC_Flat_priority_queue *: CCC_flat_priority_queue_clear, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_clear, CCC_Singly_linked_list *: CCC_singly_linked_list_clear, CCC_Doubly_linked_list *: CCC_doubly_linked_list_clear, CCC_Tree_map *: CCC_tree_map_clear, CCC_Array_tree_map *: CCC_array_tree_map_clear)( \
694 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
695 )
696#endif /* CCC_SPECIALIZED_ENABLED */
697
698#ifdef CCC_SPECIALIZED_ENABLED
700# define CCC_private_clear_and_free(container_pointer, ...) \
701 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_clear_and_free, CCC_Flat_buffer *: CCC_flat_buffer_clear_and_free, CCC_Flat_hash_map *: CCC_flat_hash_map_clear_and_free, CCC_Array_adaptive_map *: CCC_array_adaptive_map_clear_and_free, CCC_Flat_priority_queue *: CCC_flat_priority_queue_clear_and_free, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_clear_and_free, CCC_Array_tree_map *: CCC_array_tree_map_clear_and_free)( \
702 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
703 )
704#else
706# define CCC_private_clear_and_free(container_pointer, ...) \
707 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_clear_and_free, CCC_Flat_buffer *: CCC_flat_buffer_clear_and_free, CCC_Flat_hash_map *: CCC_flat_hash_map_clear_and_free, CCC_Flat_priority_queue *: CCC_flat_priority_queue_clear_and_free, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_clear_and_free, CCC_Array_tree_map *: CCC_array_tree_map_clear_and_free)( \
708 (container_pointer)__VA_OPT__(, __VA_ARGS__) \
709 )
710#endif /* CCC_SPECIALIZED_ENABLED */
711
712/*=================== Standard Getters Interface =======================*/
713
714#ifdef CCC_SPECIALIZED_ENABLED
716# define CCC_private_count(container_pointer) \
717 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_count, CCC_Flat_buffer *: CCC_flat_buffer_count, CCC_Flat_hash_map *: CCC_flat_hash_map_count, CCC_Adaptive_map *: CCC_adaptive_map_count, CCC_Array_adaptive_map *: CCC_array_adaptive_map_count, CCC_Flat_priority_queue *: CCC_flat_priority_queue_count, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_count, CCC_Priority_queue *: CCC_priority_queue_count, CCC_Singly_linked_list *: CCC_singly_linked_list_count, CCC_Doubly_linked_list *: CCC_doubly_linked_list_count, CCC_Tree_map *: CCC_tree_map_count, CCC_Array_tree_map *: CCC_array_tree_map_count, CCC_Flat_bitset const *: CCC_flat_bitset_count, CCC_Flat_buffer const *: CCC_flat_buffer_count, CCC_Flat_hash_map const *: CCC_flat_hash_map_count, CCC_Adaptive_map const *: CCC_adaptive_map_count, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_count, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_count, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_count, CCC_Priority_queue const *: CCC_priority_queue_count, CCC_Singly_linked_list const *: CCC_singly_linked_list_count, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_count, CCC_Array_tree_map const *: CCC_array_tree_map_count, CCC_Tree_map const *: CCC_tree_map_count)(( \
718 container_pointer \
719 ))
720#else
722# define CCC_private_count(container_pointer) \
723 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_count, CCC_Flat_buffer *: CCC_flat_buffer_count, CCC_Flat_hash_map *: CCC_flat_hash_map_count, CCC_Flat_priority_queue *: CCC_flat_priority_queue_count, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_count, CCC_Singly_linked_list *: CCC_singly_linked_list_count, CCC_Doubly_linked_list *: CCC_doubly_linked_list_count, CCC_Tree_map *: CCC_tree_map_count, CCC_Array_tree_map *: CCC_array_tree_map_count, CCC_Flat_bitset const *: CCC_flat_bitset_count, CCC_Flat_buffer const *: CCC_flat_buffer_count, CCC_Flat_hash_map const *: CCC_flat_hash_map_count, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_count, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_count, CCC_Singly_linked_list const *: CCC_singly_linked_list_count, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_count, CCC_Array_tree_map const *: CCC_array_tree_map_count, CCC_Tree_map const *: CCC_tree_map_count)( \
724 (container_pointer) \
725 )
726#endif /* CCC_SPECIALIZED_ENABLED */
727
728#ifdef CCC_SPECIALIZED_ENABLED
730# define CCC_private_capacity(container_pointer) \
731 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_capacity, CCC_Flat_buffer *: CCC_flat_buffer_capacity, CCC_Flat_hash_map *: CCC_flat_hash_map_capacity, CCC_Array_adaptive_map *: CCC_array_adaptive_map_capacity, CCC_Flat_priority_queue *: CCC_flat_priority_queue_capacity, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_capacity, CCC_Array_tree_map *: CCC_array_tree_map_capacity, CCC_Flat_bitset const *: CCC_flat_bitset_capacity, CCC_Flat_buffer const *: CCC_flat_buffer_capacity, CCC_Flat_hash_map const *: CCC_flat_hash_map_capacity, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_capacity, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_capacity, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_capacity, CCC_Array_tree_map const *: CCC_array_tree_map_capacity)( \
732 (container_pointer) \
733 )
734#else
736# define CCC_private_capacity(container_pointer) \
737 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_capacity, CCC_Flat_buffer *: CCC_flat_buffer_capacity, CCC_Flat_hash_map *: CCC_flat_hash_map_capacity, CCC_Flat_priority_queue *: CCC_flat_priority_queue_capacity, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_capacity, CCC_Array_tree_map *: CCC_array_tree_map_capacity, CCC_Flat_bitset const *: CCC_flat_bitset_capacity, CCC_Flat_buffer const *: CCC_flat_buffer_capacity, CCC_Flat_hash_map const *: CCC_flat_hash_map_capacity, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_capacity, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_capacity, CCC_Array_tree_map const *: CCC_array_tree_map_capacity)( \
738 (container_pointer) \
739 )
740#endif /* CCC_SPECIALIZED_ENABLED */
741
742#ifdef CCC_SPECIALIZED_ENABLED
744# define CCC_private_is_empty(container_pointer) \
745 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_is_empty, CCC_Flat_buffer *: CCC_flat_buffer_is_empty, CCC_Flat_hash_map *: CCC_flat_hash_map_is_empty, CCC_Adaptive_map *: CCC_adaptive_map_is_empty, CCC_Array_adaptive_map *: CCC_array_adaptive_map_is_empty, CCC_Flat_priority_queue *: CCC_flat_priority_queue_is_empty, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_is_empty, CCC_Priority_queue *: CCC_priority_queue_is_empty, CCC_Singly_linked_list *: CCC_singly_linked_list_is_empty, CCC_Doubly_linked_list *: CCC_doubly_linked_list_is_empty, CCC_Tree_map *: CCC_tree_map_is_empty, CCC_Array_tree_map *: CCC_array_tree_map_is_empty, CCC_Flat_bitset const *: CCC_flat_bitset_is_empty, CCC_Flat_buffer const *: CCC_flat_buffer_is_empty, CCC_Flat_hash_map const *: CCC_flat_hash_map_is_empty, CCC_Adaptive_map const *: CCC_adaptive_map_is_empty, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_is_empty, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_is_empty, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_is_empty, CCC_Priority_queue const *: CCC_priority_queue_is_empty, CCC_Singly_linked_list const *: CCC_singly_linked_list_is_empty, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_is_empty, CCC_Array_tree_map const *: CCC_array_tree_map_is_empty, CCC_Tree_map const *: CCC_tree_map_is_empty)( \
746 (container_pointer) \
747 )
748#else
750# define CCC_private_is_empty(container_pointer) \
751 _Generic((container_pointer), CCC_Flat_bitset *: CCC_flat_bitset_is_empty, CCC_Flat_buffer *: CCC_flat_buffer_is_empty, CCC_Flat_hash_map *: CCC_flat_hash_map_is_empty, CCC_Flat_priority_queue *: CCC_flat_priority_queue_is_empty, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_is_empty, CCC_Singly_linked_list *: CCC_singly_linked_list_is_empty, CCC_Doubly_linked_list *: CCC_doubly_linked_list_is_empty, CCC_Tree_map *: CCC_tree_map_is_empty, CCC_Array_tree_map *: CCC_array_tree_map_is_empty, CCC_Flat_bitset const *: CCC_flat_bitset_is_empty, CCC_Flat_buffer const *: CCC_flat_buffer_is_empty, CCC_Flat_hash_map const *: CCC_flat_hash_map_is_empty, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_is_empty, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_is_empty, CCC_Singly_linked_list const *: CCC_singly_linked_list_is_empty, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_is_empty, CCC_Array_tree_map const *: CCC_array_tree_map_is_empty, CCC_Tree_map const *: CCC_tree_map_is_empty)( \
752 (container_pointer) \
753 )
754#endif /* CCC_SPECIALIZED_ENABLED */
755
756#ifdef CCC_SPECIALIZED_ENABLED
758# define CCC_private_validate(container_pointer) \
759 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_validate, CCC_Adaptive_map *: CCC_adaptive_map_validate, CCC_Array_adaptive_map *: CCC_array_adaptive_map_validate, CCC_Flat_priority_queue *: CCC_flat_priority_queue_validate, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_validate, CCC_Priority_queue *: CCC_priority_queue_validate, CCC_Singly_linked_list *: CCC_singly_linked_list_validate, CCC_Doubly_linked_list *: CCC_doubly_linked_list_validate, CCC_Tree_map *: CCC_tree_map_validate, CCC_Array_tree_map *: CCC_array_tree_map_validate, CCC_Flat_hash_map const *: CCC_flat_hash_map_validate, CCC_Adaptive_map const *: CCC_adaptive_map_validate, CCC_Array_adaptive_map const *: CCC_array_adaptive_map_validate, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_validate, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_validate, CCC_Priority_queue const *: CCC_priority_queue_validate, CCC_Singly_linked_list const *: CCC_singly_linked_list_validate, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_validate, CCC_Array_tree_map const *: CCC_array_tree_map_validate, CCC_Tree_map const *: CCC_tree_map_validate)( \
760 (container_pointer) \
761 )
762#else
764# define CCC_private_validate(container_pointer) \
765 _Generic((container_pointer), CCC_Flat_hash_map *: CCC_flat_hash_map_validate, CCC_Flat_priority_queue *: CCC_flat_priority_queue_validate, CCC_Flat_double_ended_queue *: CCC_flat_double_ended_queue_validate, CCC_Singly_linked_list *: CCC_singly_linked_list_validate, CCC_Doubly_linked_list *: CCC_doubly_linked_list_validate, CCC_Tree_map *: CCC_tree_map_validate, CCC_Array_tree_map *: CCC_array_tree_map_validate, CCC_Flat_hash_map const *: CCC_flat_hash_map_validate, CCC_Flat_priority_queue const *: CCC_flat_priority_queue_validate, CCC_Flat_double_ended_queue const *: CCC_flat_double_ended_queue_validate, CCC_Singly_linked_list const *: CCC_singly_linked_list_validate, CCC_Doubly_linked_list const *: CCC_doubly_linked_list_validate, CCC_Array_tree_map const *: CCC_array_tree_map_validate, CCC_Tree_map const *: CCC_tree_map_validate)( \
766 (container_pointer) \
767 )
768#endif /* CCC_SPECIALIZED_ENABLED */
769
770#endif /* CCC_PRIVATE_TRAITS_H */