aboutsummaryrefslogtreecommitdiff
path: root/src/array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/array.cpp')
-rw-r--r--src/array.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/array.cpp b/src/array.cpp
index 3df688e2e..6fe54b847 100644
--- a/src/array.cpp
+++ b/src/array.cpp
@@ -41,6 +41,7 @@ template <typename T> void array_reserve (Array<T> *array, isize capac
template <typename T> void array_resize (Array<T> *array, isize count);
template <typename T> void array_set_capacity (Array<T> *array, isize capacity);
template <typename T> Array<T> array_slice (Array<T> const &array, isize lo, isize hi);
+template <typename T> Array<T> array_clone (gbAllocator const &a, Array<T> const &array);
@@ -243,6 +244,15 @@ gb_inline Array<T> array_slice(Array<T> const &array, isize lo, isize hi) {
}
return out;
}
+
+template <typename T>
+Array<T> array_clone(gbAllocator const &allocator, Array<T> const &array) {
+ auto clone = array_make<T>(allocator, array.count, array.count);
+ array_copy(&clone, array, 0);
+ return clone;
+}
+
+
template <typename T>
void array_ordered_remove(Array<T> *array, isize index) {
GB_ASSERT(0 <= index && index < array->count);