diff options
| author | gingerBill <bill@gingerbill.org> | 2021-03-24 12:31:05 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-03-24 12:31:05 +0000 |
| commit | d969d0b264749b2231d2cb014672f6fcdb9b61cd (patch) | |
| tree | 397372bd105c0cbe180d1d27317dccef47c23899 /src/array.cpp | |
| parent | 0e3ecc350abfce97029276d03a8c79c885784ae4 (diff) | |
Make `for in` logic a bit more generic
Diffstat (limited to 'src/array.cpp')
| -rw-r--r-- | src/array.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/array.cpp b/src/array.cpp index dc52eeb8d..db51e2bfb 100644 --- a/src/array.cpp +++ b/src/array.cpp @@ -103,12 +103,19 @@ Slice<T> slice_clone_from_array(gbAllocator const &allocator, Array<T> const &a) template <typename T> +void slice_copy(Slice<T> *slice, Slice<T> const &data) { + isize n = gb_min(slice->count, data.count); + gb_memmove(slice->data, data.data, gb_size_of(T)*n); +} +template <typename T> void slice_copy(Slice<T> *slice, Slice<T> 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 <typename T> void slice_copy(Slice<T> *slice, Slice<T> 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); } |