diff options
| author | gingerBill <bill@gingerbill.org> | 2020-06-10 15:09:04 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2020-06-10 15:09:04 +0100 |
| commit | e86fde3cb16d2977054aa727c32cd4efcb1bd8a7 (patch) | |
| tree | 0a6c76afcbecffef255fd2ce6d50758d2f900d36 /src/array.cpp | |
| parent | 99944f3b02dd8aef610bdc19e31a790939e29cdd (diff) | |
Fix #648
Diffstat (limited to 'src/array.cpp')
| -rw-r--r-- | src/array.cpp | 10 |
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); |