16#ifndef CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
17#define CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
23#include "../flat_buffer.h"
45void *CCC_private_flat_double_ended_queue_allocate_front(
49void *CCC_private_flat_double_ended_queue_allocate_back(
56#define CCC_private_flat_double_ended_queue_default(private_type_name) \
57 (struct CCC_Flat_double_ended_queue) { \
58 .buffer = CCC_flat_buffer_default(private_type_name), .front = 0, \
62#define CCC_private_flat_double_ended_queue_for( \
66 private_data_pointer... \
68 (struct CCC_Flat_double_ended_queue) { \
69 .buffer = CCC_flat_buffer_for( \
73 private_data_pointer \
79#define CCC_private_flat_double_ended_queue_from( \
81 private_optional_capacity, \
82 private_compound_literal_array... \
84 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
85 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
86 .buffer = CCC_flat_buffer_from( \
88 private_optional_capacity, \
89 private_compound_literal_array \
93 private_flat_double_ended_queue; \
97#define CCC_private_flat_double_ended_queue_with_capacity( \
98 private_type_name, private_allocator, private_capacity \
100 (struct { CCC_Flat_double_ended_queue private; }){(__extension__({ \
101 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
102 .buffer = CCC_flat_buffer_with_capacity( \
103 private_type_name, private_allocator, private_capacity \
107 private_flat_double_ended_queue; \
111#define CCC_private_flat_double_ended_queue_with_storage( \
112 private_count, private_compound_literal... \
114 (struct CCC_Flat_double_ended_queue) { \
115 .buffer = CCC_flat_buffer_with_storage( \
116 private_count, private_compound_literal \
122#define CCC_private_flat_double_ended_queue_emplace_back( \
123 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
126 struct CCC_Flat_double_ended_queue *const \
127 private_flat_double_ended_queue_pointer \
128 = (flat_double_ended_queue_pointer); \
129 void *private_flat_double_ended_queue_emplace_ret = NULL; \
130 if (private_flat_double_ended_queue_pointer) { \
131 private_flat_double_ended_queue_emplace_ret \
132 = CCC_private_flat_double_ended_queue_allocate_back( \
133 private_flat_double_ended_queue_pointer, \
134 private_allocator_pointer \
136 if (private_flat_double_ended_queue_emplace_ret) { \
137 *((typeof(value) *) \
138 private_flat_double_ended_queue_emplace_ret) = value; \
141 private_flat_double_ended_queue_emplace_ret; \
145#define CCC_private_flat_double_ended_queue_emplace_front( \
146 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
149 struct CCC_Flat_double_ended_queue *const \
150 private_flat_double_ended_queue_pointer \
151 = (flat_double_ended_queue_pointer); \
152 void *private_flat_double_ended_queue_emplace_ret = NULL; \
153 if (private_flat_double_ended_queue_pointer) { \
154 private_flat_double_ended_queue_emplace_ret \
155 = CCC_private_flat_double_ended_queue_allocate_front( \
156 private_flat_double_ended_queue_pointer, \
157 private_allocator_pointer \
159 if (private_flat_double_ended_queue_emplace_ret) { \
160 *((typeof(value) *) \
161 private_flat_double_ended_queue_emplace_ret) = value; \
164 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:369
Definition: private_flat_buffer.h:32
Definition: private_flat_double_ended_queue.h:35
size_t front
Definition: private_flat_double_ended_queue.h:39
CCC_Flat_buffer buffer
Definition: private_flat_double_ended_queue.h:37