diff options
| author | Tyge Løvset <[email protected]> | 2023-01-29 17:24:33 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2023-01-29 17:24:33 +0100 |
| commit | 209bf743e0c1253a4bc81d2ffb6897f657a84c8a (patch) | |
| tree | 9631a2a79e1890cb7c46515aae0ef105710ad59c /misc | |
| parent | a344b43728ff40a2e1ee25f2f1b592f33432aee7 (diff) | |
| download | STC-modified-209bf743e0c1253a4bc81d2ffb6897f657a84c8a.tar.gz STC-modified-209bf743e0c1253a4bc81d2ffb6897f657a84c8a.zip | |
Some method renaming in cspan: cspan_multidim() ctor => cspan_md(). cspan_atN() => cspan_submdN().
cstr_replace_ex() merged as overload of cstr_replace().
Diffstat (limited to 'misc')
| -rw-r--r-- | misc/examples/demos.c | 2 | ||||
| -rw-r--r-- | misc/examples/multidim.c | 6 | ||||
| -rw-r--r-- | misc/tests/cspan_test.c | 39 |
3 files changed, 38 insertions, 9 deletions
diff --git a/misc/examples/demos.c b/misc/examples/demos.c index 4455b840..c92f95b2 100644 --- a/misc/examples/demos.c +++ b/misc/examples/demos.c @@ -13,7 +13,7 @@ void stringdemo1() cstr_erase(&cs, 7, 5); // -nine printf("%s.\n", cstr_str(&cs)); - cstr_replace_ex(&cs, "seven", "four", 1); + cstr_replace(&cs, "seven", "four", 1); printf("%s.\n", cstr_str(&cs)); cstr_take(&cs, cstr_from_fmt("%s *** %s", cstr_str(&cs), cstr_str(&cs))); diff --git a/misc/examples/multidim.c b/misc/examples/multidim.c index e25d727e..b7ee46fb 100644 --- a/misc/examples/multidim.c +++ b/misc/examples/multidim.c @@ -16,7 +16,7 @@ int main() ispan ms1 = cspan_from(&v); // View the same data as a 3D array 2 x 3 x 4 - ispan3 ms3 = cspan_multidim(v.data, 2, 3, 4); + ispan3 ms3 = cspan_md(v.data, 2, 3, 4); puts("ms3:"); for (unsigned i=0; i != ms3.dim[0]; i++) { @@ -47,7 +47,7 @@ int main() printf(" %d", *i.ref); puts(""); - ispan2 ms2 = cspan_at3(&ms3, 0); + ispan2 ms2 = cspan_submd3(&ms3, 0); // write data using 2D view for (unsigned i=0; i != ms2.dim[0]; i++) @@ -60,7 +60,7 @@ int main() puts(""); puts("iterate subspan ms3[1]:"); - ispan2 sub = cspan_at3(&ms3, 1); + ispan2 sub = cspan_submd3(&ms3, 1); c_FOREACH (i, ispan2, sub) printf(" %d", *i.ref); puts(""); diff --git a/misc/tests/cspan_test.c b/misc/tests/cspan_test.c index 6b85af00..32634795 100644 --- a/misc/tests/cspan_test.c +++ b/misc/tests/cspan_test.c @@ -7,12 +7,12 @@ using_cspan3(intspan, int); CTEST(cspan, subdim) { int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; - intspan3 m = cspan_multidim(array, 2, 2, 3); + intspan3 m = cspan_md(array, 2, 2, 3); for (size_t i = 0; i < m.dim[0]; ++i) { - intspan2 sub_i = cspan_at3(&m, i); + intspan2 sub_i = cspan_submd3(&m, i); for (size_t j = 0; j < m.dim[1]; ++j) { - intspan sub_i_j = cspan_at2(&sub_i, j); + intspan sub_i_j = cspan_submd2(&sub_i, j); for (size_t k = 0; k < m.dim[2]; ++k) { ASSERT_EQ(*cspan_at(&sub_i_j, k), *cspan_at(&m, i, j, k)); } @@ -22,7 +22,7 @@ CTEST(cspan, subdim) { CTEST(cspan, slice) { int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; - intspan2 m1 = cspan_multidim(array, 3, 4); + intspan2 m1 = cspan_md(array, 3, 4); size_t sum1 = 0; for (size_t i = 0; i < m1.dim[0]; ++i) { @@ -32,7 +32,7 @@ CTEST(cspan, slice) { } intspan2 m2 = m1; - cspan_slice(&m2, c_SLICE(0), c_SLICE(2,4)); + cspan_slice(&m2, {0}, {2,4}); size_t sum2 = 0; for (size_t i = 0; i < m2.dim[0]; ++i) { @@ -43,3 +43,32 @@ CTEST(cspan, slice) { ASSERT_EQ(78, sum1); ASSERT_EQ(45, sum2); } + +#define i_val int +#include <stc/cstack.h> + +CTEST(cspan, slice2) { + c_AUTO (cstack_int, stack) + { + c_FORRANGE (i, 10*20*30) + cstack_int_push(&stack, i); + + intspan3 ms3 = cspan_md(stack.data, 10, 20, 30); + cspan_slice(&ms3, {1,4}, {3,7}, {20,24}); + + size_t sum = 0; + for (size_t i = 0; i < ms3.dim[0]; ++i) { + for (size_t j = 0; j < ms3.dim[1]; ++j) { + for (size_t k = 0; k < ms3.dim[2]; ++k) { + sum += *cspan_at(&ms3, i, j, k); + } + } + } + ASSERT_EQ(65112, sum); + + sum = 0; + c_FOREACH (i, intspan3, ms3) + sum += *i.ref; + ASSERT_EQ(65112, sum); + } +} |
