C Container Collection (CCC)
Loading...
Searching...
No Matches
private_flat_double_ended_queue.h
Go to the documentation of this file.
1
24#ifndef CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
25#define CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
26
28#include <stddef.h>
31#include "../flat_buffer.h"
32#include "../types.h" /* IWYU pragma: keep */
33
34/* NOLINTBEGIN(readability-identifier-naming) */
35
47 size_t front;
48};
49
50/*======================= Private Interface ============================*/
51
55);
59);
60
61/*======================= Macro Implementations ==========================*/
62
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, \
67 }
68
70#define CCC_private_flat_double_ended_queue_for( \
71 private_type_name, \
72 private_capacity, \
73 private_count, \
74 private_data_pointer... \
75) \
76 (struct CCC_Flat_double_ended_queue) { \
77 .buffer = CCC_flat_buffer_for( \
78 private_type_name, \
79 private_capacity, \
80 private_count, \
81 private_data_pointer \
82 ), \
83 .front = 0, \
84 }
85
87#define CCC_private_flat_double_ended_queue_from( \
88 private_allocator, \
89 private_optional_capacity, \
90 private_compound_literal_array... \
91) \
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( \
95 private_allocator, \
96 private_optional_capacity, \
97 private_compound_literal_array \
98 ), \
99 .front = 0, \
100 }; \
101 private_flat_double_ended_queue; \
102 }))}.private
103
105#define CCC_private_flat_double_ended_queue_with_capacity( \
106 private_type_name, private_allocator, private_capacity \
107) \
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 \
112 ), \
113 .front = 0, \
114 }; \
115 private_flat_double_ended_queue; \
116 }))}.private
117
119#define CCC_private_flat_double_ended_queue_with_storage( \
120 private_count, private_compound_literal... \
121) \
122 (struct CCC_Flat_double_ended_queue) { \
123 .buffer = CCC_flat_buffer_with_storage( \
124 private_count, private_compound_literal \
125 ), \
126 .front = 0, \
127 }
128
130#define CCC_private_flat_double_ended_queue_emplace_back( \
131 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
132) \
133 (__extension__({ \
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 \
143 ); \
144 if (private_flat_double_ended_queue_emplace_ret) { \
145 *((typeof(value) *) \
146 private_flat_double_ended_queue_emplace_ret) = value; \
147 } \
148 } \
149 private_flat_double_ended_queue_emplace_ret; \
150 }))
151
153#define CCC_private_flat_double_ended_queue_emplace_front( \
154 flat_double_ended_queue_pointer, private_allocator_pointer, value... \
155) \
156 (__extension__({ \
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 \
166 ); \
167 if (private_flat_double_ended_queue_emplace_ret) { \
168 *((typeof(value) *) \
169 private_flat_double_ended_queue_emplace_ret) = value; \
170 } \
171 } \
172 private_flat_double_ended_queue_emplace_ret; \
173 }))
174
175/* NOLINTEND(readability-identifier-naming) */
176
177#endif /* CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H */
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