C Container Collection (CCC)
Loading...
Searching...
No Matches
private_flat_double_ended_queue.h
1
16#ifndef CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
17#define CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H
18
20#include <stddef.h>
23#include "../buffer.h"
24
25/* NOLINTBEGIN(readability-identifier-naming) */
26
34{
41 size_t front;
42};
43
44/*======================= Private Interface ============================*/
45
47void *CCC_private_flat_double_ended_queue_allocate_front(
50void *CCC_private_flat_double_ended_queue_allocate_back(
52
53/*======================= Macro Implementations ==========================*/
54
56#define CCC_private_flat_double_ended_queue_initialize( \
57 private_data_pointer, private_type_name, private_allocate, \
58 private_context_data, private_capacity, optional_size...) \
59 { \
60 .buffer = CCC_buffer_initialize( \
61 private_data_pointer, private_type_name, private_allocate, \
62 private_context_data, private_capacity, optional_size), \
63 .front = 0, \
64 }
65
67#define CCC_private_flat_double_ended_queue_from( \
68 private_allocate, private_context_data, private_optional_capacity, \
69 private_compound_literal_array...) \
70 (__extension__({ \
71 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
72 .buffer = CCC_buffer_from(private_allocate, private_context_data, \
73 private_optional_capacity, \
74 private_compound_literal_array), \
75 .front = 0, \
76 }; \
77 private_flat_double_ended_queue; \
78 }))
79
80#define CCC_private_flat_double_ended_queue_with_capacity( \
81 private_type_name, private_allocate, private_context_data, \
82 private_capacity) \
83 (__extension__({ \
84 struct CCC_Flat_double_ended_queue private_flat_double_ended_queue = { \
85 .buffer = CCC_buffer_with_capacity( \
86 private_type_name, private_allocate, private_context_data, \
87 private_capacity), \
88 .front = 0, \
89 }; \
90 private_flat_double_ended_queue; \
91 }))
92
94#define CCC_private_flat_double_ended_with_compound_literal( \
95 private_count, private_compound_literal...) \
96 { \
97 .buffer = CCC_buffer_with_compound_literal(private_count, \
98 private_compound_literal), \
99 .front = 0, \
100 }
101
103#define CCC_private_flat_double_ended_with_context_compound_literal( \
104 private_context, private_count, private_compound_literal...) \
105 { \
106 .buffer = CCC_buffer_with_context_compound_literal( \
107 private_context, private_count, private_compound_literal), \
108 .front = 0, \
109 }
110
112#define CCC_private_flat_double_ended_queue_emplace_back( \
113 flat_double_ended_queue_pointer, value...) \
114 (__extension__({ \
115 __auto_type private_flat_double_ended_queue_pointer \
116 = (flat_double_ended_queue_pointer); \
117 void *const private_flat_double_ended_queue_emplace_ret = NULL; \
118 if (private_flat_double_ended_queue_pointer) \
119 { \
120 void *const private_flat_double_ended_queue_emplace_ret \
121 = CCC_private_flat_double_ended_queue_allocate_back( \
122 private_flat_double_ended_queue_pointer); \
123 if (private_flat_double_ended_queue_emplace_ret) \
124 { \
125 *((typeof(value) *) \
126 private_flat_double_ended_queue_emplace_ret) \
127 = value; \
128 } \
129 } \
130 private_flat_double_ended_queue_emplace_ret; \
131 }))
132
134#define CCC_private_flat_double_ended_queue_emplace_front( \
135 flat_double_ended_queue_pointer, value...) \
136 (__extension__({ \
137 __auto_type private_flat_double_ended_queue_pointer \
138 = (flat_double_ended_queue_pointer); \
139 void *const private_flat_double_ended_queue_emplace_ret = NULL; \
140 if (private_flat_double_ended_queue_pointer) \
141 { \
142 void *const private_flat_double_ended_queue_emplace_ret \
143 = CCC_private_flat_double_ended_queue_allocate_front( \
144 private_flat_double_ended_queue_pointer); \
145 if (private_flat_double_ended_queue_emplace_ret) \
146 { \
147 *((typeof(value) *) \
148 private_flat_double_ended_queue_emplace_ret) \
149 = value; \
150 } \
151 } \
152 private_flat_double_ended_queue_emplace_ret; \
153 }))
154
155/* NOLINTEND(readability-identifier-naming) */
156
157#endif /* CCC_PRIVATE_FLAT_DOUBLE_ENDED_QUEUE_H */
Definition: private_buffer.h:34
Definition: private_flat_double_ended_queue.h:34
size_t front
Definition: private_flat_double_ended_queue.h:41
CCC_Buffer buffer
Definition: private_flat_double_ended_queue.h:38