diff options
| author | Tyge <[email protected]> | 2020-04-15 16:02:48 +0200 |
|---|---|---|
| committer | Tyge <[email protected]> | 2020-04-15 16:02:48 +0200 |
| commit | c9db6edd7b173e9d37ea0463d6bdd4076dccbfd6 (patch) | |
| tree | 69fee1a89c192c6c15624427bfba42056cbe2d1a | |
| parent | 466173620bf5775f2ce77beb7b9fd45e8d1ee78a (diff) | |
| download | STC-modified-c9db6edd7b173e9d37ea0463d6bdd4076dccbfd6.tar.gz STC-modified-c9db6edd7b173e9d37ea0463d6bdd4076dccbfd6.zip | |
Last update.
| -rw-r--r-- | stc/carray.h | 36 |
1 files 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; \
@@ -108,8 +106,12 @@ int main() 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
|
