From 92e70b9a589038bdcfd0f715bb1172b15432caa6 Mon Sep 17 00:00:00 2001 From: Andrea Piseri Date: Tue, 28 Dec 2021 16:19:38 +0100 Subject: [PATCH] use multipointers instead of simple pointers --- core/slice/slice.odin | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/core/slice/slice.odin b/core/slice/slice.odin index 992efb3f1..426829a22 100644 --- a/core/slice/slice.odin +++ b/core/slice/slice.odin @@ -306,21 +306,17 @@ filter :: proc(s: $S/[]$U, f: proc(U) -> bool, allocator := context.allocator) - scanner :: proc (s: $S/[]$U, initializer: $V, f: proc(V, U)->V, allocator := context.allocator) -> []V { if len(s) == 0 { return {} } - p := as_ptr(s) res := make([]V, len(s), allocator) - + p := as_ptr(s) q := as_ptr(res) - l := len(res) + r := initializer - r := initializer - - for l > 0 { - r = f(r, p^) - q^ = r - p = intrinsics.ptr_offset(p, 1) - q = intrinsics.ptr_offset(q, 1) - l -= 1 + for l := len(s); l > 0; l -= 1 { + r = f(r, p[0]) + q[0] = r + p = p[1:] + q = q[1:] } return res