From 2e51101a5d4846cd47679505378dcf862d72ccec Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sun, 9 Aug 2020 22:47:53 +0200 Subject: Simplified carray API. --- examples/complex.c | 6 +++--- examples/demos.c | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) (limited to 'examples') diff --git a/examples/complex.c b/examples/complex.c index 6a6a268b..cd8a6d78 100644 --- a/examples/complex.c +++ b/examples/complex.c @@ -20,17 +20,17 @@ int main() { carray2f table = carray2f_make(ydim, xdim, 0.f); printf("table: (%zu, %zu)\n", carray2_ydim(table), carray2_xdim(table)); clist_t2 tableList = clist_init; + // Put in some data. cmap_il listMap = cmap_init; - // Put in some data. - carray2f_data(table, y)[x] = 3.1415927; // table[y][x] + *carray2f_at(&table, y, x) = 3.1415927; // table[y][x] clist_t2_push_back(&tableList, table); cmap_il_put(&listMap, tableKey, tableList); cmap_sm_put(&theMap, strKey, listMap); } { // Access the data entry carray2f table = clist_back(cmap_il_find(&cmap_sm_find(&theMap, strKey)->value, tableKey)->value); - printf("value (%d, %d) is: %f\n", y, x, carray2f_value(table, y, x)); + printf("value (%d, %d) is: %f\n", y, x, *carray2f_at(&table, y, x)); } cmap_sm_destroy(&theMap); // free up the whole shebang! diff --git a/examples/demos.c b/examples/demos.c index 458806c3..47ba52aa 100644 --- a/examples/demos.c +++ b/examples/demos.c @@ -179,20 +179,21 @@ declare_carray(f, float); void arraydemo1() { printf("\nARRAYDEMO1\n"); - carray3f a3 = carray3f_make(30, 20, 10, 0.f); - carray3f_data(a3, 5, 4)[3] = 10.2f; // a3[5][4][3] - carray2f a2 = carray3f_at(a3, 5); // sub-array reference (no data copy). + carray3f a3 = carray3f_make(30, 20, 10, 0.0f); + *carray3f_at(&a3, 5, 4, 3) = 10.2f; // a3[5][4][3] + carray2f a2 = carray3f_at1(&a3, 5); // sub-array reference: a2 = a3[5] + carray1f a1 = carray3f_at2(&a3, 5, 4); // sub-array reference: a1 = a3[5][4] printf("a3: %zu: (%zu, %zu, %zu) = %zu\n", sizeof(a3), carray3_xdim(a3), carray3_ydim(a3), carray3_zdim(a3), carray3_size(a3)); printf("a2: %zu: (%zu, %zu) = %zu\n", sizeof(a2), carray2_xdim(a2), carray2_ydim(a2), carray2_size(a2)); - printf("%f\n", carray2f_value(a2, 4, 3)); // readonly lookup a2[4][3] (=10.2f) - printf("%f\n", carray2f_data(a2, 4)[3]); // same, but this is writable. - printf("%f\n", carray2f_at(a2, 4).data[3]); // same, via sub-array access. - - printf("%f\n", carray3f_value(a3, 5, 4, 3)); // same data location, via a3 array. - printf("%f\n", carray3f_data(a3, 5, 4)[3]); - printf("%f\n", carray3f_at2(a3, 5, 4).data[3]); + printf("%f\n", a1.data[3]); // lookup a1[3] (=10.2f) + printf("%f\n", *carray2f_at(&a2, 4, 3)); // lookup a2[4][3] (=10.2f) + printf("%f\n", *carray3f_at(&a3, 5, 4, 3)); // lookup a3[5][4][3] (=10.2f) + + c_foreach (i, carray3f, a3) + *i.item = 1.0f; + printf("%f\n", *carray3f_at(&a3, 29, 19, 9)); carray2f_destroy(&a2); // does nothing, since it is a sub-array. carray3f_destroy(&a3); // also invalidates a2. -- cgit v1.2.3