Go to the source code of this file.
|
| struct | item_t |
| | A queue comprised of an extendable circular buffer. More...
|
| struct | SELF |
| | An allocator that prints to stdout when it allocates or frees memory. More...
|
| struct | ITER |
| struct | ITER_CONST |
|
| static void | ITEM_DELETE (item_t *self) |
| static item_t | ITEM_CLONE (item_t const *self) |
| static void | ITEM_DEBUG (ITEM const *self, dc_debug_fmt fmt, FILE *stream) |
| static SELF | new () |
| static size_t | max_size () |
| static SELF | clone (SELF const *self) |
| static ITEM const * | try_read (SELF const *self, INDEX_TYPE index) |
| static ITEM const * | read (SELF const *self, INDEX_TYPE index) |
| static ITEM * | try_write (SELF *self, INDEX_TYPE index) |
| static ITEM * | write (SELF *self, INDEX_TYPE index) |
| static ITEM * | try_push (SELF *self, ITEM item) |
| static ITEM * | try_insert_at (SELF *self, INDEX_TYPE at, ITEM const *items, INDEX_TYPE count) |
| static void | remove_at (SELF *self, INDEX_TYPE at, INDEX_TYPE count) |
| static ITEM * | push (SELF *self, ITEM item) |
| static bool | try_pop (SELF *self, ITEM *destination) |
| static ITEM | pop (SELF *self) |
| static INDEX_TYPE | size (SELF const *self) |
| static void | delete (SELF *self) |
| static bool | empty_item (ITEM *const *item) |
| static ITEM * | next (ITER *iter) |
| static INDEX_TYPE | position (ITER const *iter) |
| static bool | empty (ITER const *iter) |
| static ITER | get_iter (SELF *self) |
| static bool | empty_item (ITEM const *const *item) |
| static ITEM const * | next (ITER_CONST *iter) |
| static INDEX_TYPE | position (ITER_CONST const *iter) |
| static bool | empty (ITER_CONST const *iter) |
| static ITER_CONST | get_iter_const (SELF const *self) |
| static void | debug (SELF const *self, dc_debug_fmt fmt, FILE *stream) |
| | DC_TRAIT_VECTOR (SELF) |
◆ INPLACE_CAPACITY
| #define INPLACE_CAPACITY 8 |
◆ INVARIANT_CHECK
| #define INVARIANT_CHECK |
( |
| self | ) |
|
Value:
#define DC_ASSUME(expr,...)
Definition at line 73 of file template.h.
73#define INVARIANT_CHECK(self) \
74 DC_ASSUME(self); \
75 DC_ASSUME((self->size) <= INPLACE_CAPACITY);
◆ ITEM
◆ ITEM_CLONE
| #define ITEM_CLONE item_clone |
◆ ITEM_DEBUG
| #define ITEM_DEBUG item_debug |
◆ ITEM_DELETE
| #define ITEM_DELETE item_delete |
◆ ITER
◆ ITER_CONST
| #define ITER_CONST NS(SELF, iter_const) |
◆ item
◆ clone()
Definition at line 88 of file template.h.
88 {
90 new_self.
size = self->size;
91
94 }
95
96 return new_self;
97}
◆ DC_TRAIT_VECTOR()
◆ debug()
Definition at line 297 of file template.h.
297 {
302
311 }
316}
static ITER_CONST get_iter_const(SELF const *self)
static IV_PAIR next(ITER *iter)
dc_debug_fmt dc_debug_fmt_scope_end(dc_debug_fmt fmt)
static void dc_debug_fmt_print_indents(dc_debug_fmt fmt, FILE *stream)
dc_debug_fmt dc_debug_fmt_scope_begin(dc_debug_fmt fmt)
static void dc_debug_fmt_print(dc_debug_fmt fmt, FILE *stream, const char *format,...)
#define EXPAND_STRING(NAME)
static FILE * stream(SELF *self)
Opens a file for.
◆ delete()
| void delete |
( |
SELF * | self | ) |
|
|
static |
Definition at line 204 of file template.h.
204 {
208 }
209}
#define INVARIANT_CHECK(self)
◆ empty() [1/2]
| bool empty |
( |
ITER const * | iter | ) |
|
|
static |
Definition at line 239 of file template.h.
239 {
242 return iter->pos >= iter->vec->size;
243}
static void mutation_version_check(mutation_version const *self)
◆ empty() [2/2]
Definition at line 282 of file template.h.
282 {
285 return iter->pos >= iter->vec->size;
286}
◆ empty_item() [1/2]
| bool empty_item |
( |
ITEM *const * | item | ) |
|
|
static |
◆ empty_item() [2/2]
| bool empty_item |
( |
ITEM const *const * | item | ) |
|
|
static |
◆ get_iter()
Definition at line 245 of file template.h.
245 {
247 return (
ITER){.vec = self,
248 .pos = 0,
250}
static mutation_version mutation_tracker_get(mutation_tracker const *self)
mutation_tracker iterator_invalidation_tracker
◆ get_iter_const()
Definition at line 288 of file template.h.
288 {
291 .vec = self,
292 .pos = 0,
294 };
295}
◆ ITEM_CLONE()
◆ ITEM_DEBUG()
◆ ITEM_DELETE()
| void ITEM_DELETE |
( |
item_t * | self | ) |
|
|
static |
◆ max_size()
◆ new()
Definition at line 77 of file template.h.
77 {
79 .size = 0,
82 };
83 return self;
84}
static dc_gdb_marker dc_gdb_marker_new()
static mutation_tracker mutation_tracker_new()
◆ next() [1/2]
Definition at line 222 of file template.h.
222 {
229 }
230 return NULL;
231}
◆ next() [2/2]
Definition at line 265 of file template.h.
265 {
272 }
273 return NULL;
274}
◆ pop()
Definition at line 193 of file template.h.
193 {
196 return entry;
197}
static bool try_pop(SELF *self, ITEM *destination)
#define DC_ASSERT(expr,...)
◆ position() [1/2]
Definition at line 233 of file template.h.
233 {
236 return iter->pos;
237}
◆ position() [2/2]
Definition at line 276 of file template.h.
276 {
279 return iter->pos;
280}
◆ push()
Definition at line 176 of file template.h.
176 {
179 return slot;
180}
static ITEM * try_push(SELF *self, ITEM item)
◆ read()
Definition at line 107 of file template.h.
107 {
110 return value;
111}
static VALUE const * try_read(SELF const *self, INDEX index)
◆ remove_at()
Definition at line 160 of file template.h.
160 {
163
164 if (count == 0) {
165 return;
166 }
167
168 for (
INDEX_TYPE i = at; i < at + count; i++) {
170 }
171
172 memmove(&self->
data[at], &self->
data[at + count], (self->
size - (at + count)) *
sizeof(
ITEM));
174}
static INDEX_TYPE size(SELF const *self)
◆ size()
Definition at line 199 of file template.h.
199 {
201 return self->size;
202}
◆ try_insert_at()
Definition at line 139 of file template.h.
140 {
145
147 return NULL;
148 }
149
150 if (count == 0) {
151 return NULL;
152 }
153
154 memmove(&self->
data[at + count], &self->
data[at], (self->
size - at) *
sizeof(
ITEM));
155 memcpy(&self->
data[at], items, count *
sizeof(
ITEM));
157 return &self->
data[at];
158}
static void mutation_tracker_mutate(mutation_tracker *self)
◆ try_pop()
| bool try_pop |
( |
SELF * | self, |
|
|
ITEM * | destination ) |
|
static |
Definition at line 182 of file template.h.
182 {
187 *destination = self->
data[self->
size];
188 return true;
189 }
190 return false;
191}
◆ try_push()
Definition at line 127 of file template.h.
127 {
134 return slot;
135 }
136 return NULL;
137}
◆ try_read()
Definition at line 99 of file template.h.
99 {
102 return &self->data[index];
103 }
104 return NULL;
105}
◆ try_write()
Definition at line 113 of file template.h.
113 {
116 return &self->
data[index];
117 }
118 return NULL;
119}
◆ write()
Definition at line 121 of file template.h.
121 {
124 return value;
125}
static VALUE * try_write(SELF *self, INDEX index)