summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2022-11-27 22:57:00 +0100
committerTyge Løvset <[email protected]>2022-11-27 22:57:00 +0100
commit1e0f229b0b044f6df0d0084674f3cf0dc4f4d31d (patch)
treef07039594558b948be69636b16d85a770ba973f0
parentd540332f52fbd9b2c50a402525a5cfca4919ec32 (diff)
downloadSTC-modified-1e0f229b0b044f6df0d0084674f3cf0dc4f4d31d.tar.gz
STC-modified-1e0f229b0b044f6df0d0084674f3cf0dc4f4d31d.zip
Moved c_forfilter macros from ccommon.h to views.h
-rw-r--r--examples/forloops.c1
-rw-r--r--include/stc/ccommon.h21
-rw-r--r--include/stc/views.h22
3 files changed, 23 insertions, 21 deletions
diff --git a/examples/forloops.c b/examples/forloops.c
index d016cb66..2654f095 100644
--- a/examples/forloops.c
+++ b/examples/forloops.c
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <stc/views.h>
#define i_type IVec
#define i_val int
diff --git a/include/stc/ccommon.h b/include/stc/ccommon.h
index f2d21099..0777d0ce 100644
--- a/include/stc/ccommon.h
+++ b/include/stc/ccommon.h
@@ -167,27 +167,6 @@ STC_INLINE char* cstrnstrn(const char *str, const char *needle,
for (C##_iter it = start, *_endref = (C##_iter*)(finish).ref \
; it.ref != (C##_value*)_endref; C##_next(&it))
-#ifndef c_FLT_STACK
- #define c_FLT_STACK 14 /* 22, 30, .. */
-#endif
-#define c_flt_take(i, n) (++(i).s1[(i).s1top++] <= (n))
-#define c_flt_skip(i, n) (++(i).s1[(i).s1top++] > (n))
-#define c_flt_skipwhile(i, pred) ((i).s2[(i).s2top++] |= !(pred))
-#define c_flt_takewhile(i, pred) !c_flt_skipwhile(i, pred)
-
-#define c_forfilter(...) c_MACRO_OVERLOAD(c_forfilter, __VA_ARGS__)
-#define c_forfilter4(i, C, cnt, filter) \
- c_forfilter_s(i, C, C##_begin(&cnt), filter)
-#define c_forfilter5(i, C, cnt, filter, cond) \
- c_forfilter_s(i, C, C##_begin(&cnt), filter) if (!(cond)) break; else
-#define c_forfilter_s(i, C, start, filter) \
- for (struct {C##_iter it; C##_value *ref; \
- uint32_t s1[c_FLT_STACK], index, count; \
- bool s2[c_FLT_STACK]; uint8_t s1top, s2top;} \
- i = {.it=start, .ref=i.it.ref}; i.it.ref \
- ; C##_next(&i.it), i.ref = i.it.ref, ++i.index, i.s1top=0, i.s2top=0) \
- if (!((filter) && ++i.count)) ; else
-
#define c_forwhile(i, C, start, cond) \
for (struct {C##_iter it; C##_value *ref; size_t index;} \
i = {.it=start, .ref=i.it.ref}; i.it.ref && (cond) \
diff --git a/include/stc/views.h b/include/stc/views.h
index d8193c05..8f7a0d78 100644
--- a/include/stc/views.h
+++ b/include/stc/views.h
@@ -63,6 +63,28 @@ int main()
#include <stc/ccommon.h>
+#ifndef c_FLT_STACK
+ #define c_FLT_STACK 14 /* 22, 30, .. */
+#endif
+#define c_flt_take(i, n) (++(i).s1[(i).s1top++] <= (n))
+#define c_flt_skip(i, n) (++(i).s1[(i).s1top++] > (n))
+#define c_flt_skipwhile(i, pred) ((i).s2[(i).s2top++] |= !(pred))
+#define c_flt_takewhile(i, pred) !c_flt_skipwhile(i, pred)
+
+#define c_forfilter(...) c_MACRO_OVERLOAD(c_forfilter, __VA_ARGS__)
+#define c_forfilter4(i, C, cnt, filter) \
+ c_forfilter_s(i, C, C##_begin(&cnt), filter)
+#define c_forfilter5(i, C, cnt, filter, cond) \
+ c_forfilter_s(i, C, C##_begin(&cnt), filter) if (!(cond)) break; else
+#define c_forfilter_s(i, C, start, filter) \
+ for (struct {C##_iter it; C##_value *ref; \
+ uint32_t s1[c_FLT_STACK], index, count; \
+ bool s2[c_FLT_STACK]; uint8_t s1top, s2top;} \
+ i = {.it=start, .ref=i.it.ref}; i.it.ref \
+ ; C##_next(&i.it), i.ref = i.it.ref, ++i.index, i.s1top=0, i.s2top=0) \
+ if (!((filter) && ++i.count)) ; else
+
+
// clview type
#define clview_literal(C, ...) \