44 cu_Destructor_Optional destructor);
57static inline size_t cu_Vector_size(
const cu_Vector *vector) {
62static inline size_t cu_Vector_capacity(
const cu_Vector *vector) {
67static inline cu_Slice_Optional cu_Vector_data(
const cu_Vector *vector) {
68 CU_IF_NULL(vector) {
return cu_Slice_Optional_none(); }
85static inline bool cu_Vector_is_empty(
const cu_Vector *vector) {
87 return vector->
length == 0;
#define CU_IF_NULL(expr)
Definition macro.h:6
#define CU_OPTIONAL_DECL(NAME, T)
Definition optional.h:25
#define CU_RESULT_DECL(NAME, T, E)
Definition result.h:23
Definition allocator.h:24
Growable array of elements.
Definition vector.h:18
cu_Allocator allocator
Definition vector.h:23
cu_Destructor_Optional destructor
Definition vector.h:24
cu_Slice_Optional data
Definition vector.h:19
cu_Layout layout
Definition vector.h:22
size_t capacity
Definition vector.h:21
size_t length
Definition vector.h:20
cu_Vector_Error
Error codes returned by vector operations.
Definition vector.h:30
@ CU_VECTOR_ERROR_NONE
Definition vector.h:31
@ CU_VECTOR_ERROR_INVALID
Definition vector.h:34
@ CU_VECTOR_ERROR_OOM
Definition vector.h:32
@ CU_VECTOR_ERROR_INVALID_LAYOUT
Definition vector.h:33
@ CU_VECTOR_ERROR_OOB
Definition vector.h:35
void cu_Vector_destroy(cu_Vector *vector)
Definition vector.c:130
cu_Vector_Error_Optional cu_Vector_pop_back(cu_Vector *vector, void *out_elem)
Definition vector.c:177
cu_Vector_Error_Optional cu_Vector_pop_front(cu_Vector *vector, void *out_elem)
Definition vector.c:236
cu_Vector_Error_Optional cu_Vector_push_back(cu_Vector *vector, void *elem)
Definition vector.c:147
void cu_Vector_clear(cu_Vector *vector)
Definition vector.c:322
cu_Vector_Error_Optional cu_Vector_push_front(cu_Vector *vector, void *elem)
Definition vector.c:203
cu_Vector_Result cu_Vector_copy(const cu_Vector *src)
Definition vector.c:267
cu_Vector_Error_Optional cu_Vector_reserve(cu_Vector *vector, size_t capacity)
Definition vector.c:290
cu_Vector_Result cu_Vector_create(cu_Allocator allocator, cu_Layout layout, Size_Optional initial_capacity, cu_Destructor_Optional destructor)
Definition vector.c:19
bool cu_Vector_iter(const cu_Vector *vector, size_t *index, void **out_elem)
Iterate over the vector elements.
Definition vector.c:346
cu_Slice_Optional cu_Vector_subslice(const cu_Vector *vector, size_t index, size_t count)
Definition vector.c:372
Ptr_Optional cu_Vector_at(const cu_Vector *vector, size_t index)
Return a pointer to the element at index.
Definition vector.c:336
cu_Slice_Optional cu_Vector_slice(const cu_Vector *vector)
Definition vector.c:363
cu_Vector_Error_Optional cu_Vector_resize(cu_Vector *vector, size_t size)
Change the number of stored elements.
Definition vector.c:105
cu_Vector_Error_Optional cu_Vector_shrink_to_fit(cu_Vector *vector)
Definition vector.c:300