diff options
Diffstat (limited to 'builtins/array.c')
| -rw-r--r-- | builtins/array.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/builtins/array.c b/builtins/array.c index 2d45591c..4e8bf20c 100644 --- a/builtins/array.c +++ b/builtins/array.c @@ -261,54 +261,54 @@ public array_t Array$sample(array_t arr, int64_t n, array_t weights, const TypeI return selected; } -public array_t Array$from(array_t *array, int64_t first) +public array_t Array$from(array_t array, int64_t first) { if (first < 0) - first = array->length + first + 1; + first = array.length + first + 1; - if (first < 1 || first > array->length) - return (array_t){.atomic=array->atomic}; + if (first < 1 || first > array.length) + return (array_t){.atomic=array.atomic}; return (array_t){ - .atomic=array->atomic, - .data=array->data + array->stride*(first-1), - .length=array->length - first + 1, - .stride=array->stride, - .data_refcount=array->data_refcount, + .atomic=array.atomic, + .data=array.data + array.stride*(first-1), + .length=array.length - first + 1, + .stride=array.stride, + .data_refcount=array.data_refcount, }; } -public array_t Array$to(array_t *array, int64_t last) +public array_t Array$to(array_t array, int64_t last) { if (last < 0) - last = array->length + last + 1; + last = array.length + last + 1; - if (last > array->length) - last = array->length; + if (last > array.length) + last = array.length; if (last == 0) - return (array_t){.atomic=array->atomic}; + return (array_t){.atomic=array.atomic}; return (array_t){ - .atomic=array->atomic, - .data=array->data, + .atomic=array.atomic, + .data=array.data, .length=last, - .stride=array->stride, - .data_refcount=array->data_refcount, + .stride=array.stride, + .data_refcount=array.data_refcount, }; } -public array_t Array$by(array_t *array, int64_t stride) +public array_t Array$by(array_t array, int64_t stride) { if (stride == 0) - return (array_t){.atomic=array->atomic}; + return (array_t){.atomic=array.atomic}; return (array_t){ - .atomic=array->atomic, - .data=(stride < 0 ? array->data + (array->stride * (array->length - 1)) : array->data), - .length=(stride < 0 ? array->length / -stride : array->length / stride) + ((array->length % stride) != 0), - .stride=array->stride * stride, - .data_refcount=array->data_refcount, + .atomic=array.atomic, + .data=(stride < 0 ? array.data + (array.stride * (array.length - 1)) : array.data), + .length=(stride < 0 ? array.length / -stride : array.length / stride) + ((array.length % stride) != 0), + .stride=array.stride * stride, + .data_refcount=array.data_refcount, }; } |
