summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-01-18 10:15:33 +0100
committerTyge Løvset <[email protected]>2023-01-18 10:15:33 +0100
commit17a70908cab0e4064e4913d4f1a109569d24295f (patch)
treef4c4181873d6ed456b1d9382a8bd832d93c1d07f /include
parentb6dea03f0c4b9aece389c8133f7e5f94e12bd8e6 (diff)
downloadSTC-modified-17a70908cab0e4064e4913d4f1a109569d24295f.tar.gz
STC-modified-17a70908cab0e4064e4913d4f1a109569d24295f.zip
using_cspanN(S, T, R) now defines S, S1, S2.. (not S1)
Diffstat (limited to 'include')
-rw-r--r--include/stc/cspan.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/include/stc/cspan.h b/include/stc/cspan.h
index 45e51b79..d91a3460 100644
--- a/include/stc/cspan.h
+++ b/include/stc/cspan.h
@@ -77,7 +77,7 @@ int demo2() {
{ if (++it->ref == it->end) it->ref = NULL; } \
struct stc_nostruct
-#define using_cspan2(Self, T) using_cspan(Self##1, T, 1); using_cspan(Self##2, T, 2)
+#define using_cspan2(Self, T) using_cspan(Self, T, 1); using_cspan(Self##2, T, 2)
#define using_cspan3(Self, T) using_cspan2(Self, T); using_cspan(Self##3, T, 3)
#define using_cspan4(Self, T) using_cspan3(Self, T); using_cspan(Self##4, T, 4)
@@ -109,11 +109,11 @@ int demo2() {
(void)memcpy((self)->dim, (uint32_t[]){__VA_ARGS__}, \
sizeof((self)->dim) + cspan_rank_ok(*(self), c_NUMARGS(__VA_ARGS__)))
-#define cspan_at(spn, ...) ((spn).data + cspan_index((spn), __VA_ARGS__))
+#define cspan_at(spn, ...) ((spn).data + cspan_index(spn, __VA_ARGS__))
+#define cspan_front(spn) ((spn).data)
+#define cspan_back(spn) ((spn).data + cspan_size(spn) - 1)
#define cspan_subspan(spn, offset, count) \
- cspan_subspan1(spn, offset, count)
-#define cspan_subspan1(spn, offset, count) \
{.data=cspan_at(spn, offset), .dim={count}}
#define cspan_subspan2(spn, offset, count) \
{.data=cspan_at(spn, offset, 0), .dim={count, (spn).dim[1]}}
@@ -122,6 +122,13 @@ int demo2() {
#define cspan_subspan4(spn, offset, count) \
{.data=cspan_at(spn, offset, 0, 0, 0), .dim={count, (spn).dim[1], (spn).dim[2], (spn).dim[3]}}
+#define cspan_subspan2(spn, offset, count) \
+ {.data=cspan_at(spn, offset, 0), .dim={count, (spn).dim[1]}}
+#define cspan_subspan3(spn, offset, count) \
+ {.data=cspan_at(spn, offset, 0, 0), .dim={count, (spn).dim[1], (spn).dim[2]}}
+#define cspan_subspan4(spn, offset, count) \
+ {.data=cspan_at(spn, offset, 0, 0, 0), .dim={count, (spn).dim[1], (spn).dim[2], (spn).dim[3]}}
+
#define cspan_at4(...) c_MACRO_OVERLOAD(cspan_at4, __VA_ARGS__)
#define cspan_at3(...) c_MACRO_OVERLOAD(cspan_at3, __VA_ARGS__)
#define cspan_at2(spn, x) \