11#error "The contained type must be defined for a vector template"
14} derive_c_parameter_t;
15#define T derive_c_parameter_t
16static void derive_c_parameter_t_delete(derive_c_parameter_t*) {}
17#define T_DELETE derive_c_parameter_t_delete
21#define T_DELETE(value)
24#ifndef INPLACE_CAPACITY
25#error "The number of elements to store in-place must be defined"
26#define INPLACE_CAPACITY 8
29#if INPLACE_CAPACITY <= 255
30#define INPLACE_TYPE uint8_t
31#elif INPLACE_CAPACITY <= 65535
32#define INPLACE_TYPE uint16_t
34#error "INPLACE_CAPACITY must be less than or equal to 65535"
35#define INPLACE_TYPE size_t
48 new_self.
size = self->size;
53 new_self.
data[i] = self->data[i];
61 return &self->data[index];
76 return &self->data[index];
91 T* slot = &self->data[self->size];
108 if (
LIKELY(self->size > 0)) {
110 *destination = self->data[self->size];
135#define ITER NAME(SELF, iter)
144 if (iter->pos < iter->vec->size) {
145 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];
196static bool NAME(ITER_CONST,
empty)(ITER_CONST
const* iter) {
198 return iter->pos >= iter->vec->size;
215#undef INPLACE_CAPACITY
static ITER_CONST get_iter_const(SELF const *self)
static bool empty(ITER const *iter)
static ITER get_iter(SELF *self)
static IV_PAIR next(ITER *iter)
static INDEX_TYPE size(SELF const *self)
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)
#define DEBUG_ASSERT(expr)
static bool try_pop(SELF *self, T *destination)
static T * push(SELF *self, T value)
static T * try_push(SELF *self, T value)
gdb_marker derive_c_staticvec