From 5d3ee795417ad5e0cad8e05a829b143cfb9652e6 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Wed, 29 Apr 2026 17:59:47 +0300 Subject: chore: Reorganize and comment codebase --- Vector.c | 70 ++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 30 deletions(-) (limited to 'Vector.c') diff --git a/Vector.c b/Vector.c index 2236c64..d2906d8 100644 --- a/Vector.c +++ b/Vector.c @@ -2,6 +2,8 @@ #include "Types.h" #include +/** Metadata **/ + struct VectorMeta { MemoryManager *mm; usize element_size; @@ -14,6 +16,8 @@ V_metadata(void *arr) { return arr - sizeof(struct VectorMeta); } +/* Create */ + Vector V_new(MemoryManager *mm, usize element_size, usize length) { if (NULL == mm) @@ -37,33 +41,20 @@ V_new(MemoryManager *mm, usize element_size, usize length) { return start + sizeof(vm); } -usize -V_length(Vector arr) { - if (NULL == arr) - return 0; - return V_metadata(arr)->length; -} +/* Free */ -usize -V_count(Vector arr) { - if (NULL == arr) - return 0; - return V_metadata(arr)->count; -} - -void* -V_top(Vector arr) { - if (NULL == arr) - return NULL; - - struct VectorMeta *vm = V_metadata(arr); - - if (0 == vm->count) - return NULL; +Result +V_free(Vector *arr) { + if (NULL == arr || NULL == *arr) + return R_NullArgument; - return arr + (vm->count - 1) * vm->element_size; + struct VectorMeta *vm = V_metadata(*arr); + *arr = vm; + return vm->mm->free(*vm->mm, arr); } +/* Modify */ + Result V_push(Vector *arr, void *pvalue) { if (NULL == arr || NULL == *arr) @@ -106,12 +97,31 @@ V_pop(Vector *arr) { return R_Ok; } -Result -V_free(Vector *arr) { - if (NULL == arr || NULL == *arr) - return R_NullArgument; +/* Get */ - struct VectorMeta *vm = V_metadata(*arr); - *arr = vm; - return vm->mm->free(*vm->mm, arr); +usize +V_length(Vector arr) { + if (NULL == arr) + return 0; + return V_metadata(arr)->length; +} + +usize +V_count(Vector arr) { + if (NULL == arr) + return 0; + return V_metadata(arr)->count; +} + +void* +V_top(Vector arr) { + if (NULL == arr) + return NULL; + + struct VectorMeta *vm = V_metadata(arr); + + if (0 == vm->count) + return NULL; + + return arr + (vm->count - 1) * vm->element_size; } -- cgit v1.2.3