From d969d0b264749b2231d2cb014672f6fcdb9b61cd Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 24 Mar 2021 12:31:05 +0000 Subject: Make `for in` logic a bit more generic --- src/array.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/array.cpp') diff --git a/src/array.cpp b/src/array.cpp index dc52eeb8d..db51e2bfb 100644 --- a/src/array.cpp +++ b/src/array.cpp @@ -102,13 +102,20 @@ Slice slice_clone_from_array(gbAllocator const &allocator, Array const &a) } +template +void slice_copy(Slice *slice, Slice const &data) { + isize n = gb_min(slice->count, data.count); + gb_memmove(slice->data, data.data, gb_size_of(T)*n); +} template void slice_copy(Slice *slice, Slice const &data, isize offset) { - gb_memmove(slice->data+offset, data.data, gb_size_of(T)*data.count); + isize n = gb_clamp(slice->count-offset, 0, data.count); + gb_memmove(slice->data+offset, data.data, gb_size_of(T)*n); } template void slice_copy(Slice *slice, Slice const &data, isize offset, isize count) { - gb_memmove(slice->data+offset, data.data, gb_size_of(T)*gb_min(data.count, count)); + isize n = gb_clamp(slice->count-offset, 0, gb_min(data.count, count)); + gb_memmove(slice->data+offset, data.data, gb_size_of(T)*n); } -- cgit v1.2.3