From aa0b903240d5c0ea5b0af8f5dc5aeb0845fd69b7 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 22 Mar 2019 18:30:27 +0100 Subject: ndarray: add utility macros to simplify indexing arrays --- ndarray.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ndarray.h b/ndarray.h index f10ac80..c0d964b 100644 --- a/ndarray.h +++ b/ndarray.h @@ -45,6 +45,14 @@ typedef struct NDArray { #define NDARRAY_ALLOC_ZERO (1 << 0) +#define NDIDX1D(arr, x) (arr->stride[0] * x) +#define NDIDX2D(arr, x, y) (arr->stride[0] * y + arr->stride[1] * x) +#define NDIDX3D(arr, x, y, z) (arr->stride[0] * z + arr->stride[1] * y + arr->stride[0] * x) + +#define NDPTR1D(arr, x) (arr->data + NDIDX1D(arr, x)) +#define NDPTR2D(arr, x, y) (arr->data + NDIDX2D(arr, x, y)) +#define NDPTR3D(arr, x, y, z) (arr->data + NDIDX2D(arr, x, y, z)) + int mg2di_ndarray_alloc(NDArray **result, unsigned int dims, const size_t * const size, unsigned int flags); void mg2di_ndarray_free(NDArray **a); -- cgit v1.2.3