12#ifndef __clang_analyzer__
13#error "The contained type must be defined for a vector template"
17} derive_c_parameter_t;
18#define T derive_c_parameter_t
19static void derive_c_parameter_t_delete(derive_c_parameter_t*
UNUSED(self)) {}
20#define T_DELETE derive_c_parameter_t_delete
24#define T_DELETE(value)
27#ifndef INPLACE_CAPACITY
28#ifndef __clang_analyzer__
29#error "The number of elements to store in-place must be defined"
31#define INPLACE_CAPACITY 8
34#if INPLACE_CAPACITY <= 255
35#define INPLACE_TYPE uint8_t
36#elif INPLACE_CAPACITY <= 65535
37#define INPLACE_TYPE uint16_t
39#error "INPLACE_CAPACITY must be less than or equal to 65535"
40#define INPLACE_TYPE size_t
53 new_self.
size = self->size;
58 new_self.
data[i] = self->data[i];
66 return &self->data[index];
80 return &self->data[index];
94 T* slot = &self->data[self->size];
110 if (
LIKELY(self->size > 0)) {
112 *destination = self->data[self->size];
136#define ITER NAME(SELF, iter)
145 if (iter->pos < iter->vec->size) {
146 T* item = &iter->vec->data[iter->pos];
160 return iter->pos >= iter->vec->size;
173#define ITER_CONST NAME(SELF, iter_const)
180static T const*
NAME(ITER_CONST,
next)(ITER_CONST* iter) {
182 if (iter->pos < iter->vec->size) {
183 T const* item = &iter->vec->data[iter->pos];
195static bool NAME(ITER_CONST,
empty)(ITER_CONST
const* iter) {
197 return iter->pos >= iter->vec->size;
214#undef INPLACE_CAPACITY
#define DEBUG_ASSERT(expr)
gdb_marker derive_c_staticvec
static ITER_CONST get_iter_const(SELF const *self)
static bool empty(ITER const *iter)
static ITER get_iter(SELF *self)
static INDEX_TYPE size(SELF const *self)
static IV_PAIR const * next(ITER *iter)
static V const * try_read(SELF const *self, INDEX index)
static V * write(SELF *self, INDEX index)
static SELF shallow_clone(SELF const *self)
static V * try_write(SELF *self, INDEX index)
static size_t position(ITER const *iter)
static V const * read(SELF const *self, INDEX index)
static bool try_pop(SELF *self, T *destination)
static T * push(SELF *self, T value)
static T * try_push(SELF *self, T value)