aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-03-22 18:30:27 +0100
committerAnton Khirnov <anton@khirnov.net>2019-03-22 20:12:10 +0100
commitaa0b903240d5c0ea5b0af8f5dc5aeb0845fd69b7 (patch)
tree1dc2c7c02357a86524f2f1a1fbbf9315d39fb102
parentafc75fc633c67f19bb18b9b2373ae48b69b0c94e (diff)
ndarray: add utility macros to simplify indexing arrays
-rw-r--r--ndarray.h8
1 files changed, 8 insertions, 0 deletions
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);