From 482ea0261cb9f0def49ce3df542b2a7f811262d1 Mon Sep 17 00:00:00 2001 From: Daniel Hader Date: Sun, 14 Jun 2026 12:58:14 -0500 Subject: build and test environment using makefile and basic SDL3 setup --- src/util/vec.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/util/vec.h (limited to 'src/util/vec.h') diff --git a/src/util/vec.h b/src/util/vec.h new file mode 100644 index 0000000..2b86e17 --- /dev/null +++ b/src/util/vec.h @@ -0,0 +1,38 @@ +#ifndef LEO_VEC_H +#define LEO_VEC_H + +#include + +#include "alloc.h" + +static const size_t LEO_Vec_GROWTH_FACTOR_NUMER = 3; +static const size_t LEO_Vec_GROWTH_FACTOR_DENOM = 2; +static const size_t LEO_Vec_DEFAULT_CAPACITY = 8; + +struct LEO_Vec { + struct LEO_Allocator allocator; + void *data; + size_t item_size; + size_t length; + size_t capacity; +}; + +enum LEO_Vec_Error { + LEO_Vec_OK = 0, + LEO_Vec_NULL_VEC_POINTER = 1, + LEO_Vec_NULL_ITEM_POINTER = 2, + LEO_Vec_INVALID_ITEM_SIZE = 3, + LEO_Vec_ALLOCATION_FAILURE = 4, + LEO_Vec_TOO_BIG = 5, + LEO_Vec_OUT_OF_BOUNDS = 6, +}; + +enum LEO_Vec_Error LEO_Vec_init (struct LEO_Vec *vec, size_t item_size, + struct LEO_Allocator allocator); + +void LEO_Vec_free (struct LEO_Vec *vec); +enum LEO_Vec_Error LEO_Vec_push (struct LEO_Vec *vec, const void *item); +enum LEO_Vec_Error LEO_Vec_pop (struct LEO_Vec *vec, void *item); +enum LEO_Vec_Error LEO_Vec_get (struct LEO_Vec *vec, size_t i, void *item); + +#endif -- cgit v1.2.3