#pragma once #include typedef struct vector vector; vector *vec_create(size_t element_size); void vec_destroy(vector *vec); // Checks and grows vector only if necessary void vec_grow(vector *vec); void vec_shrink_to_fit(vector *vec); // Assumes data is the same size as the element size // Which means you can only push one element at a time void vec_push_back(vector *vec, void *data); void vec_push_front(vector *vec, void *data); void vec_push_index(vector *vec, void *data, uint index); void* vec_get(vector *vec, uint index); size_t vec_size(vector *vec); size_t vec_capacity(vector *vec);