From 12de1e8db90bccd5a0eefd21075f07c7b7e3dfaa Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 14 May 2025 21:12:58 +0100 Subject: Refactor for cleanliness Move files into separate folders for ease of reading, include source directory so we can use angle bracket includes, adjust build system to make directories for objects --- lib/vec.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 lib/vec.c (limited to 'lib/vec.c') diff --git a/lib/vec.c b/lib/vec.c new file mode 100644 index 0000000..551f679 --- /dev/null +++ b/lib/vec.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2025 Aryadev Chavali + + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License Version 2 for + * details. + + * You may distribute and modify this code under the terms of the GNU General + * Public License Version 2, which you should have received a copy of along with + * this program. If not, please go to . + + * Created: 2025-04-15 + * Description: Vector implementation + */ + +#include + +#include +#include + +void vec_reserve(arena_t *allocator, vec_t *vec, u32 size) +{ + if (vec->cap - vec->size < size) + { + u32 old_cap = vec->cap; + vec->cap = MAX(vec->cap * 1.5, vec->size + size); + vec->data = arena_realloc(allocator, vec->data, old_cap, vec->cap); + } +} + +u32 vec_append(arena_t *allocator, vec_t *vec, const void *data, u32 size) +{ + vec_reserve(allocator, vec, size); + memcpy(vec->data + vec->size, data, size); + u32 ptr = vec->size; + vec->size += size; + return ptr; +} -- cgit v1.2.3-13-gbd6f