diff options
Diffstat (limited to 'source/array/array.cpp')
-rw-r--r-- | source/array/array.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/source/array/array.cpp b/source/array/array.cpp new file mode 100644 index 0000000..ac7fd9a --- /dev/null +++ b/source/array/array.cpp @@ -0,0 +1,50 @@ +#include "array.h" + +// :r32_array_functions +void array_init(Arena* a, r32_array* arr, size_t capacity) { + arr->buffer = (r32*)arena_alloc(a, capacity*sizeof(r32)); + + assert(arr->buffer != NULL); + + arr->size = 0; + arr->capacity = capacity; +} + +void array_insert(r32_array* arr, r32* ele, size_t ele_size) { + b8 assert_cond = arr->size + ele_size <= arr->capacity; + assert(assert_cond); + + void* ptr = &arr->buffer[arr->size]; + memcpy(ptr, ele, sizeof(r32)*ele_size); + arr->size += ele_size; +} + +void array_clear(r32_array* arr) { + memset(arr->buffer, 0, sizeof(r32)*arr->capacity); + arr->size = 0; +} + +// :u32_array_functions +void array_init(Arena* a, u32_array* arr, size_t capacity) { + arr->buffer = (u32*)arena_alloc(a, capacity*sizeof(r32)); + + assert(arr->buffer != NULL); + + arr->size = 0; + arr->capacity = capacity; +} + +void array_insert(u32_array* arr, u32* ele, size_t ele_size) { + b8 assert_cond = arr->size + ele_size <= arr->capacity; + assert(assert_cond); + + void* ptr = &arr->buffer[arr->size]; + memcpy(ptr, ele, sizeof(u32)*ele_size); + arr->size += ele_size; +} + +void array_clear(u32_array* arr) { + memset(arr->buffer, 0, sizeof(u32)*arr->capacity); + arr->size = 0; +} + |