Browse Source

use multipointers instead of simple pointers

Andrea Piseri 3 years ago
parent
commit
92e70b9a58
1 changed files with 7 additions and 11 deletions
  1. 7 11
      core/slice/slice.odin

+ 7 - 11
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