summaryrefslogtreecommitdiff
path: root/src/array.h
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik.ramaekers@protonmail.com>2020-01-30 21:11:12 +0100
committerAldrik Ramaekers <aldrik.ramaekers@protonmail.com>2020-01-30 21:11:12 +0100
commit260f05025631031b7cc4904805d5017feaf53eda (patch)
treed5a723bb7bbbc9f8b598712723fe3d8290c0a54c /src/array.h
initial commit
Diffstat (limited to 'src/array.h')
-rw-r--r--src/array.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/array.h b/src/array.h
new file mode 100644
index 0000000..f18f780
--- /dev/null
+++ b/src/array.h
@@ -0,0 +1,32 @@
+/*
+* BSD 2-Clause “Simplified” License
+* Copyright (c) 2019, Aldrik Ramaekers, aldrik.ramaekers@protonmail.com
+* All rights reserved.
+*/
+
+#ifndef INCLUDE_ARRAY
+#define INCLUDE_ARRAY
+
+typedef struct t_array
+{
+ u32 length;
+ u32 reserved_length;
+ u64 entry_size;
+ u16 reserve_jump;
+ void *data;
+ mutex mutex;
+} array;
+
+array array_create(u64 entry_size);
+int array_push(array *array, void *data);
+int array_push_size(array *array, void *data, s32 data_size);
+void array_remove_at(array *array, u32 at);
+void array_remove(array *array, void *ptr);
+void array_remove_by(array *array, void *data);
+void *array_at(array *array, u32 at);
+void array_destroy(array *array);
+void array_swap(array *array, u32 swap1, u32 swap2);
+void array_reserve(array *array, u32 reserve_count);
+array array_copy(array *array);
+
+#endif \ No newline at end of file