summaryrefslogtreecommitdiffhomepage
path: root/misc
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-01-29 17:24:33 +0100
committerTyge Løvset <[email protected]>2023-01-29 17:24:33 +0100
commit209bf743e0c1253a4bc81d2ffb6897f657a84c8a (patch)
tree9631a2a79e1890cb7c46515aae0ef105710ad59c /misc
parenta344b43728ff40a2e1ee25f2f1b592f33432aee7 (diff)
downloadSTC-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.c2
-rw-r--r--misc/examples/multidim.c6
-rw-r--r--misc/tests/cspan_test.c39
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);
+ }
+}