From 09fb000e678899f4718a4f9300564c7726b133be Mon Sep 17 00:00:00 2001 From: Joe Conigliaro Date: Thu, 18 Jul 2019 02:17:07 +1000 Subject: [PATCH] fix --- vlib/builtin/array.v | 13 +++++++++++++ vlib/builtin/array_test.v | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/vlib/builtin/array.v b/vlib/builtin/array.v index 1559729f3e..3edb566f28 100644 --- a/vlib/builtin/array.v +++ b/vlib/builtin/array.v @@ -189,6 +189,19 @@ pub fn (arr mut array) _push_many(val voidptr, size int) { arr.len += size } +pub fn (a array) reverse() array { + arr := array { + len: a.len + cap: a.cap + element_size: a.element_size + data: malloc(a.cap * a.element_size) + } + for i := 0; i < a.len; i++ { + C.memcpy(arr.data + i * arr.element_size, &a[a.len-1-i], arr.element_size) + } + return arr +} + pub fn (a []int) str() string { mut res := '[' for i := 0; i < a.len; i++ { diff --git a/vlib/builtin/array_test.v b/vlib/builtin/array_test.v index 84eaca3824..af5212f0c8 100644 --- a/vlib/builtin/array_test.v +++ b/vlib/builtin/array_test.v @@ -148,4 +148,10 @@ fn test_push_many() { assert a[5] == 6 } +fn test_reverse() { + mut a := [1, 2, 3, 4] + mut b := ['test', 'array', 'reverse'] + assert a.reverse() == [4, 3, 2, 1] + assert b.reverse() == ['reverse', 'array', 'test'] +}