16#ifndef CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
17#define CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
44void *CCC_private_flat_double_ended_queue_allocate_front(
48void *CCC_private_flat_double_ended_queue_allocate_back(
55#define CCC_private_flat_double_ended_queue_default(private_type_name) \
56 (struct CCC_Flat_double_ended_queue) { \
57 .buffer = CCC_buffer_default(private_type_name), .front = 0, \
61#define CCC_private_flat_double_ended_queue_for( \
65 private_data_pointer... \
67 (struct CCC_Flat_double_ended_queue) { \
68 .buffer = CCC_buffer_for( \
72 private_data_pointer \
78#define CCC_private_flat_double_ended_queue_from( \
80 private_optional_capacity, \
81 private_compound_literal_array... \
83 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
84 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
85 .buffer = CCC_buffer_from( \
87 private_optional_capacity, \
88 private_compound_literal_array \
92 private_flat_double_ended_queue; \
96#define CCC_private_flat_double_ended_queue_with_capacity( \
97 private_type_name, private_allocator, private_capacity \
99 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
100 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
101 .buffer = CCC_buffer_with_capacity( \
102 private_type_name, private_allocator, private_capacity \
106 private_flat_double_ended_queue; \
110#define CCC_private_flat_double_ended_queue_with_storage( \
111 private_count, private_compound_literal... \
113 (struct CCC_Flat_double_ended_queue) { \
114 .buffer = CCC_buffer_with_storage( \
115 private_count, private_compound_literal \
121#define CCC_private_flat_double_ended_queue_emplace_back( \
122 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
125 __auto_type private_flat_double_ended_queue_pointer \
126 = (flat_double_ended_queue_pointer); \
127 void *private_flat_double_ended_queue_emplace_ret = NULL; \
128 if (private_flat_double_ended_queue_pointer) { \
129 private_flat_double_ended_queue_emplace_ret \
130 = CCC_private_flat_double_ended_queue_allocate_back( \
131 private_flat_double_ended_queue_pointer, \
132 private_allocator_pointer \
134 if (private_flat_double_ended_queue_emplace_ret) { \
135 *((typeof(value) *) \
136 private_flat_double_ended_queue_emplace_ret) = value; \
139 private_flat_double_ended_queue_emplace_ret; \
143#define CCC_private_flat_double_ended_queue_emplace_front( \
144 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
147 __auto_type private_flat_double_ended_queue_pointer \
148 = (flat_double_ended_queue_pointer); \
149 void *private_flat_double_ended_queue_emplace_ret = NULL; \
150 if (private_flat_double_ended_queue_pointer) { \
151 private_flat_double_ended_queue_emplace_ret \
152 = CCC_private_flat_double_ended_queue_allocate_front( \
153 private_flat_double_ended_queue_pointer, \
154 private_allocator_pointer \
156 if (private_flat_double_ended_queue_emplace_ret) { \
157 *((typeof(value) *) \
158 private_flat_double_ended_queue_emplace_ret) = value; \
161 private_flat_double_ended_queue_emplace_ret; \
The type passed by reference to any container function that may need to allocate memory....
Definition: types.h:376
Definition: private_buffer.h:32
Definition: private_flat_double_ended_queue.h:34
size_t front
Definition: private_flat_double_ended_queue.h:38
CCC_Buffer buffer
Definition: private_flat_double_ended_queue.h:36