summaryrefslogtreecommitdiff
path: root/source/array
diff options
context:
space:
mode:
authortalha <sarcxd@gmail.com>2025-01-15 14:26:29 +0500
committertalha <sarcxd@gmail.com>2025-01-15 14:26:29 +0500
commitd718dc1cfc04f1eabce48159f258a7f2dc281fc3 (patch)
treebd611715982f37bc22811cfde4ad508d69dbec6f /source/array
parent7d26a3cc6cfd9c207693ef977b0f0922d52e1d5c (diff)
Added IVec, setting up level editing
Diffstat (limited to 'source/array')
-rw-r--r--source/array/array.cpp50
-rw-r--r--source/array/array.h23
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);