summaryrefslogtreecommitdiffhomepage
path: root/include/stc/cspan.h
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-01-16 19:29:22 +0100
committerTyge Løvset <[email protected]>2023-01-16 19:29:22 +0100
commit08a1865942349dfcb25a098fc3c0d48111fdc140 (patch)
treed102dbc6bd6da76eaabd668342cf63610b43a3af /include/stc/cspan.h
parent5519490cacb966e4205e9d98869fb9cde981ad4f (diff)
downloadSTC-modified-08a1865942349dfcb25a098fc3c0d48111fdc140.tar.gz
STC-modified-08a1865942349dfcb25a098fc3c0d48111fdc140.zip
Final cspan API changes: cspan_XtoY() => cspan_atX(). Docs updated.
Diffstat (limited to 'include/stc/cspan.h')
-rw-r--r--include/stc/cspan.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/include/stc/cspan.h b/include/stc/cspan.h
index ba4c7daa..45e51b79 100644
--- a/include/stc/cspan.h
+++ b/include/stc/cspan.h
@@ -111,6 +111,8 @@ int demo2() {
#define cspan_at(spn, ...) ((spn).data + cspan_index((spn), __VA_ARGS__))
+#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) \
@@ -120,18 +122,20 @@ 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_2to1(spn, x) \
+#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) \
{.data=cspan_at(spn, x, 0), .dim={(spn).dim[1]}}
-#define cspan_3to1(spn, x, y) \
- {.data=cspan_at(spn, x, y, 0), .dim={(spn).dim[2]}}
-#define cspan_3to2(spn, x) \
+#define cspan_at32(spn, x) \
{.data=cspan_at(spn, x, 0, 0), .dim={(spn).dim[1], (spn).dim[2]}}
-#define cspan_4to1(spn, x, y, z) \
- {.data=cspan_at(spn, x, y, z, 0), .dim={(spn).dim[3]}}
-#define cspan_4to2(spn, x, y) \
- {.data=cspan_at(spn, x, y, 0, 0), .dim={(spn).dim[2], (spn).dim[3]}}
-#define cspan_4to3(spn, x) \
+#define cspan_at33(spn, x, y) \
+ {.data=cspan_at(spn, x, y, 0), .dim={(spn).dim[2]}}
+#define cspan_at42(spn, x) \
{.data=cspan_at(spn, x, 0, 0, 0), .dim={(spn).dim[1], (spn).dim[2], (spn).dim[3]}}
+#define cspan_at43(spn, x, y) \
+ {.data=cspan_at(spn, x, y, 0, 0), .dim={(spn).dim[2], (spn).dim[3]}}
+#define cspan_at44(spn, x, y, z) \
+ {.data=cspan_at(spn, x, y, z, 0), .dim={(spn).dim[3]}}
STC_INLINE size_t _cspan_i1(const uint32_t dim[1], uint32_t x)
{ c_ASSERT(x < dim[0]); return x; }