From c9db6edd7b173e9d37ea0463d6bdd4076dccbfd6 Mon Sep 17 00:00:00 2001 From: Tyge Date: Wed, 15 Apr 2020 16:02:48 +0200 Subject: Last update. --- stc/carray.h | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/stc/carray.h b/stc/carray.h index e8e7e5ba..5d136e87 100644 --- a/stc/carray.h +++ b/stc/carray.h @@ -33,17 +33,19 @@ declare_CArray(f, float); int main() { CArray3f a3 = carray3f_make(30, 20, 10); - carray3f_at2(a3, 5, 4).data[3] = 10.2f; + carray3f_data(a3, 5, 4)[3] = 10.2f; CArray2f a2 = carray3f_at(a3, 5); - printf("%f\n", carray3f_at2(a3, 5, 4).data[3]); - printf("%f\n", carray3f_at3(a3, 5, 4, 3)); - printf("%f\n", carray2f_at(a2, 4).data[3]); + printf("%f\n", carray2f_value(a2, 4, 3)); printf("%f\n", carray2f_data(a2, 4)[3]); - printf("%f\n", carray2f_at2(a2, 4, 3)); + printf("%f\n", carray2f_at(a2, 4).data[3]); + + printf("%f\n", carray3f_value(a3, 5, 4, 3)); + printf("%f\n", carray3f_data(a3, 5, 4)[3]); + printf("%f\n", carray3f_at2(a3, 5, 4).data[3]); - carray_unref(a2); carray_unref(a3); + carray_unref(a2); } */ @@ -51,7 +53,7 @@ int main() #define carray_ydim(a) ((a)._yxdim / (a).xdim) #define carray_zdim(a) ((a).zdim) #define carray_ref(a) (++(a)._refCount, a) -#define carray_unref(a) ({if (--(a)._refCount == 0) free((a).data); 0;}) +#define carray_unref(a) (--(a)._refCount == 0 ? free((a).data) : (void)0) #define declare_CArray(tag, T) \ c_struct (CArray1##tag) { \ @@ -83,23 +85,19 @@ int main() CArray3##tag a = {c_new_2(T, zdim*ydim*xdim), 1, xdim, ydim*xdim, zdim}; return a; \ } \ \ - static inline T* \ - carray2##tag##_data(CArray2##tag a, size_t y) { \ - return a.data + y*a.xdim; \ - } \ static inline CArray1##tag \ carray2##tag##_at(CArray2##tag a, size_t y) { \ CArray1##tag out = {a.data + y*a.xdim, 1000, a.xdim}; return out; \ + } \ + static inline T* \ + carray2##tag##_data(CArray2##tag a, size_t y) { \ + return a.data + y*a.xdim; \ } \ static inline T \ - carray2##tag##_at2(CArray2##tag a, size_t y, size_t x) { \ + carray2##tag##_value(CArray2##tag a, size_t y, size_t x) { \ return a.data[ y*a.xdim + x ]; \ } \ \ - static inline T* \ - carray3##tag##_data(CArray3##tag a, size_t z, size_t y) { \ - return a.data + z*a._yxdim + y*a.xdim; \ - } \ static inline CArray2##tag \ carray3##tag##_at(CArray3##tag a, size_t z) { \ CArray2##tag out = {a.data + z*a._yxdim, 1000, a.xdim, a._yxdim}; return out; \ @@ -107,9 +105,13 @@ int main() static inline CArray1##tag \ carray3##tag##_at2(CArray3##tag a, size_t z, size_t y) { \ CArray1##tag out = {a.data + z*a._yxdim + y*a.xdim, 1000, a.xdim}; return out; \ + } \ + static inline T* \ + carray3##tag##_data(CArray3##tag a, size_t z, size_t y) { \ + return a.data + z*a._yxdim + y*a.xdim; \ } \ static inline T \ - carray3##tag##_at3(CArray3##tag a, size_t z, size_t y, size_t x) { \ + carray3##tag##_value(CArray3##tag a, size_t z, size_t y, size_t x) { \ return a.data[ z*a._yxdim + y*a.xdim + x ]; \ } \ typedef T carray_##tag##_t -- cgit v1.2.3