aboutsummaryrefslogtreecommitdiff
path: root/builtins
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-03-26 14:59:52 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-03-26 14:59:52 -0400
commitd94053ca7768037016cbcacc4cadf843dad1bea6 (patch)
treecfca6501f96d46c15adb40651de8213ee83d0f31 /builtins
parent135e23094c42b33acdd05dd522bbe0fd691b9eee (diff)
Add array:reversed()
Diffstat (limited to 'builtins')
-rw-r--r--builtins/array.c8
-rw-r--r--builtins/array.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/builtins/array.c b/builtins/array.c
index 3380d4d3..6ebc6429 100644
--- a/builtins/array.c
+++ b/builtins/array.c
@@ -223,6 +223,14 @@ public array_t Array__slice(array_t *array, int64_t first, int64_t length, int64
};
}
+public array_t Array__reversed(array_t array)
+{
+ array_t reversed = array;
+ reversed.stride = -array.stride;
+ reversed.data = array.data + (array.length-1)*array.stride;
+ return reversed;
+}
+
public array_t Array__concat(array_t x, array_t y, const TypeInfo *type)
{
int64_t item_size = get_item_size(type);
diff --git a/builtins/array.h b/builtins/array.h
index b538be30..dad72b7e 100644
--- a/builtins/array.h
+++ b/builtins/array.h
@@ -63,6 +63,7 @@ void Array__clear(array_t *array);
void Array__compact(array_t *arr, const TypeInfo *type);
bool Array__contains(array_t array, void *item, const TypeInfo *type);
array_t Array__slice(array_t *array, int64_t first, int64_t length, int64_t stride, const TypeInfo *type);
+array_t Array__reversed(array_t array);
array_t Array__concat(array_t x, array_t y, const TypeInfo *type);
uint32_t Array__hash(const array_t *arr, const TypeInfo *type);
int32_t Array__compare(const array_t *x, const array_t *y, const TypeInfo *type);