diff options
author | talha <sarcxd@gmail.com> | 2025-01-15 14:26:29 +0500 |
---|---|---|
committer | talha <sarcxd@gmail.com> | 2025-01-15 14:26:29 +0500 |
commit | d718dc1cfc04f1eabce48159f258a7f2dc281fc3 (patch) | |
tree | bd611715982f37bc22811cfde4ad508d69dbec6f /source/array | |
parent | 7d26a3cc6cfd9c207693ef977b0f0922d52e1d5c (diff) |
Added IVec, setting up level editing
Diffstat (limited to 'source/array')
-rw-r--r-- | source/array/array.cpp | 50 | ||||
-rw-r--r-- | source/array/array.h | 23 |
2 files changed, 73 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; +} + diff --git a/source/array/array.h b/source/array/array.h new file mode 100644 index 0000000..cbe710a --- /dev/null +++ b/source/array/array.h @@ -0,0 +1,23 @@ +#pragma once + +struct r32_array { + r32 *buffer; + size_t size; + size_t capacity; +}; + +struct u32_array { + u32 *buffer; + size_t size; + size_t capacity; +}; + +// @r32_array +void array_init(Arena* a, r32_array* arr, size_t capacity); +void array_insert(r32_array* arr, r32* ele, size_t ele_size); +void array_clear(r32_array* arr); + +// @u32_array +void array_init(Arena* a, u32_array* arr, size_t capacity); +void array_insert(u32_array* arr, u32* ele, size_t ele_size); +void array_clear(u32_array* arr); |