diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-03-22 18:30:27 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-03-22 20:12:10 +0100 |
commit | aa0b903240d5c0ea5b0af8f5dc5aeb0845fd69b7 (patch) | |
tree | 1dc2c7c02357a86524f2f1a1fbbf9315d39fb102 | |
parent | afc75fc633c67f19bb18b9b2373ae48b69b0c94e (diff) |
ndarray: add utility macros to simplify indexing arrays
-rw-r--r-- | ndarray.h | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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); |