24#ifndef CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
25#define CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
31#include "../flat_buffer.h"
64#define CCC_private_flat_double_ended_queue_default(private_type_name) \
65 (struct CCC_Flat_double_ended_queue) { \
66 .buffer = CCC_flat_buffer_default(private_type_name), .front = 0, \
70#define CCC_private_flat_double_ended_queue_for( \
74 private_data_pointer... \
76 (struct CCC_Flat_double_ended_queue) { \
77 .buffer = CCC_flat_buffer_for( \
81 private_data_pointer \
87#define CCC_private_flat_double_ended_queue_from( \
89 private_optional_capacity, \
90 private_compound_literal_array... \
92 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
93 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
94 .buffer = CCC_flat_buffer_from( \
96 private_optional_capacity, \
97 private_compound_literal_array \
101 private_flat_double_ended_queue; \
105#define CCC_private_flat_double_ended_queue_with_capacity( \
106 private_type_name, private_allocator, private_capacity \
108 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
109 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
110 .buffer = CCC_flat_buffer_with_capacity( \
111 private_type_name, private_allocator, private_capacity \
115 private_flat_double_ended_queue; \
119#define CCC_private_flat_double_ended_queue_with_storage( \
120 private_count, private_compound_literal... \
122 (struct CCC_Flat_double_ended_queue) { \
123 .buffer = CCC_flat_buffer_with_storage( \
124 private_count, private_compound_literal \
130#define CCC_private_flat_double_ended_queue_emplace_back( \
131 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
134 struct CCC_Flat_double_ended_queue *const \
135 private_flat_double_ended_queue_pointer \
136 = (flat_double_ended_queue_pointer); \
137 void *private_flat_double_ended_queue_emplace_ret = NULL; \
138 if (private_flat_double_ended_queue_pointer) { \
139 private_flat_double_ended_queue_emplace_ret \
140 = CCC_private_flat_double_ended_queue_allocate_back( \
141 private_flat_double_ended_queue_pointer, \
142 private_allocator_pointer \
144 if (private_flat_double_ended_queue_emplace_ret) { \
145 *((typeof(value) *) \
146 private_flat_double_ended_queue_emplace_ret) = value; \
149 private_flat_double_ended_queue_emplace_ret; \
153#define CCC_private_flat_double_ended_queue_emplace_front( \
154 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
157 struct CCC_Flat_double_ended_queue *const \
158 private_flat_double_ended_queue_pointer \
159 = (flat_double_ended_queue_pointer); \
160 void *private_flat_double_ended_queue_emplace_ret = NULL; \
161 if (private_flat_double_ended_queue_pointer) { \
162 private_flat_double_ended_queue_emplace_ret \
163 = CCC_private_flat_double_ended_queue_allocate_front( \
164 private_flat_double_ended_queue_pointer, \
165 private_allocator_pointer \
167 if (private_flat_double_ended_queue_emplace_ret) { \
168 *((typeof(value) *) \
169 private_flat_double_ended_queue_emplace_ret) = value; \
172 private_flat_double_ended_queue_emplace_ret; \
void * CCC_private_flat_double_ended_queue_allocate_back(struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)
void * CCC_private_flat_double_ended_queue_allocate_front(struct CCC_Flat_double_ended_queue *, CCC_Allocator const *)
The type passed by reference to any container function that may need to allocate memory....
Definition: types.h:384
Definition: private_flat_buffer.h:40
Definition: private_flat_double_ended_queue.h:43
size_t front
Definition: private_flat_double_ended_queue.h:47
CCC_Flat_buffer buffer
Definition: private_flat_double_ended_queue.h:45