core/array: use `copy_to` to factorize some code
authorJean Privat <jean@pryen.org>
Tue, 1 Dec 2015 20:15:01 +0000 (15:15 -0500)
committerJean Privat <jean@pryen.org>
Tue, 1 Dec 2015 20:15:01 +0000 (15:15 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

lib/core/collection/array.nit

index b65f282..0896bab 100644 (file)
@@ -220,22 +220,18 @@ abstract class AbstractArray[E]
        do
                assert not_empty: not is_empty
                var r = first
-               var i = 1
-               var l = length
-               while i < l do
-                       self[i-1] = self[i]
-                       i += 1
-               end
-               _length = l - 1
+               var l = length-1
+               copy_to(1, l, self, 0)
+               _length = l
                return r
        end
 
        redef fun unshift(item)
        do
-               var i = length - 1
-               while i >= 0 do
-                       self[i+1] = self[i]
-                       i -= 1
+               var l = length
+               if l > 0 then
+                       enlarge(l + 1)
+                       copy_to(0, l, self, 1)
                end
                self[0] = item
        end