5 #include <ctu_std_api.h>
#define RET_NOTNULL
annotate the return value as not being null
#define STA_RELEASE
annotate a pointer as invalid after the function returns
#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 RET_INSPECT
annotate the return value as needing to be inspected this is the same as CT_NODISCARD but implies tha...
CT_NODISCARD CT_PUREFN CT_STD_API void * vector_get(const vector_t *vector, size_t index)
get a value from a vector
CT_NODISCARD CT_STD_API vector_t * vector_new(size_t size, arena_t *arena)
create a new vector with an initial capacity
CT_NODISCARD CT_STD_API vector_t * vector_of(size_t len, arena_t *arena)
create a new vector with a specified length
CT_STD_API const vector_t kEmptyVector
a global empty vector used to avoid allocating alot of empty vectors
CT_STD_API void vector_push(vector_t **vector, void *value)
push a value onto the end of a vector
CT_STD_API void vector_drop(vector_t *vector)
pop a value from the end of a vector
CT_NODISCARD CT_PUREFN CT_STD_API void * vector_tail(const vector_t *vector)
get the last element of a vector
CT_STD_API void vector_set(vector_t *vector, size_t index, void *value)
set a value in a vector
CT_STD_API void vector_delete(STA_RELEASE vector_t *vector)
destroy a vector
CT_STD_API vector_t gEmptyVector
a global empty vector used to avoid allocating alot of empty vectors
CT_NODISCARD CT_STD_API vector_t * vector_init(void *value, arena_t *arena)
create a new vector with a single initial value
CT_NODISCARD CT_STD_API vector_t * vector_clone(vector_t *vector)
clone a vector
CT_PUREFN CT_STD_API size_t vector_find(vector_t *vector, const void *element)
find an element in a vector searches via pointer equality
CT_STD_API void vector_reset(vector_t *vec)
reset the contents of a vector
CT_STD_API void ** vector_data(vector_t *vec)
get the data of a vector
CT_NODISCARD CT_PUREFN CT_STD_API size_t vector_len(const vector_t *vector)
get the length of a vector
CT_STD_API void vector_append(vector_t **vector, const vector_t *other)
append the contents of one vector to another this copies the contents of other into vector
a generic vector of pointers