5 #include <ctu_std_api.h>
CT_NODISCARD STA_WRITES(size) void *dst
#define CT_PUREFN
mark a function as pure, always returns the same value for the same arguments
#define CT_NODISCARD
mark a function as returning a value that must be used
#define IN_NOTNULL
annotate a parameter as not being null
#define STA_READS(size)
annotate a parameter as reading expr elements
#define IN_DOMAIN(cmp, it)
annotate a parameter as being bounded by the expression of cmp and it
CT_STD_API void typevec_set(typevec_t *vec, size_t index, const void *src)
set an element in the vector
CT_STD_API void typevec_pop(typevec_t *vec, void *dst)
pop a value from the vector
CT_STD_API void typevec_sort(typevec_t *vec, int(*cmp)(const void *, const void *))
sort a vector
CT_NODISCARD CT_STD_API typevec_t * typevec_of(size_t width, size_t len, arena_t *arena)
create a new typed vector with an initial size and length
CT_STD_API typevec_t typevec_make(size_t width, size_t len, arena_t *arena)
create a new typed vector on the stack
CT_STD_API void typevec_init(typevec_t *vec, size_t width, size_t len, arena_t *arena)
initialize a typed vector
CT_NODISCARD CT_STD_API typevec_t * typevec_of_array(size_t width, STA_READS(count *width) const void *src, size_t count, arena_t *arena)
create a new typed vector from an array this copies count * width bytes from src to the vector
CT_STD_API void typevec_tail(const typevec_t *vec, void *dst)
get the last element from the vector
CT_STD_API const typevec_t kEmptyTypevec
CT_STD_API void * typevec_push(typevec_t *vec, const void *src)
push a value onto the vector
CT_STD_API void typevec_reset(typevec_t *vec)
reset a vector
CT_NODISCARD CT_PUREFN CT_STD_API size_t typevec_len(const typevec_t *vec)
get the length of a vector
CT_NODISCARD CT_PUREFN CT_STD_API void * typevec_data(const typevec_t *vec)
get a pointer to the underlying data
CT_NODISCARD CT_STD_API typevec_t * typevec_slice(const typevec_t *vec, size_t start, size_t end)
create a new typevec from an existing typevec
CT_STD_API void typevec_get(const typevec_t *vec, size_t index, STA_WRITES(vec->width) void *dst)
get an element from the vector
CT_STD_API void typevec_append(typevec_t *vec, const void *src, size_t len)
append multiple values onto the vector
CT_NODISCARD CT_STD_API typevec_t * typevec_new(size_t width, size_t len, arena_t *arena)
create a new typed vector on the heap
CT_NODISCARD CT_PUREFN CT_STD_API void * typevec_offset(const typevec_t *vec, size_t index)
get a pointer to the value at the given index
A vector with a fixed type size.
size_t used
The number of elements used.
STA_FIELD_SIZE(size) void *data
The data of the vector.
size_t width
The size of each element.
size_t size
The number of elements allocated.