summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Lovset <[email protected]>2023-03-10 07:30:43 +0100
committerTyge Lovset <[email protected]>2023-03-10 07:30:43 +0100
commitfde6d44c76efdfc8752705122204c38281a844dd (patch)
treec283da4c8b0084771c6a69038135de690b242500
parentc2338d717937c2649926acf7c10e9dcd23804626 (diff)
downloadSTC-modified-fde6d44c76efdfc8752705122204c38281a844dd.tar.gz
STC-modified-fde6d44c76efdfc8752705122204c38281a844dd.zip
Rename cco_alive() => cco_suspended(). Replaced cco_done() with cco_alive().
-rw-r--r--include/stc/algo/coroutine.h8
-rw-r--r--misc/examples/generator.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/include/stc/algo/coroutine.h b/include/stc/algo/coroutine.h
index 5607897a..1c849d49 100644
--- a/include/stc/algo/coroutine.h
+++ b/include/stc/algo/coroutine.h
@@ -62,8 +62,8 @@ enum {
cco_state_done = -2,
};
-#define cco_alive(ctx) ((ctx)->cco_state > 0)
-#define cco_done(ctx) ((ctx)->cco_state == cco_state_done)
+#define cco_suspended(ctx) ((ctx)->cco_state > 0)
+#define cco_alive(ctx) ((ctx)->cco_state != cco_state_done)
#define cco_begin(ctx) \
int *_state = &(ctx)->cco_state; \
@@ -91,9 +91,9 @@ enum {
do { \
*_state = __LINE__; \
do { \
- corocall; if (cco_alive(ctx)) return retval; \
+ corocall; if (cco_suspended(ctx)) return retval; \
case __LINE__:; \
- } while (!cco_done(ctx)); \
+ } while (cco_alive(ctx)); \
} while (0)
#define cco_final \
diff --git a/misc/examples/generator.c b/misc/examples/generator.c
index f83ff3f2..2bccc489 100644
--- a/misc/examples/generator.c
+++ b/misc/examples/generator.c
@@ -20,8 +20,8 @@ bool Triple_next(Triple_iter* it) {
for (t->a = 1; t->a < t->c; ++t->a) {
for (t->b = t->a; t->b < t->c; ++t->b) {
if (t->a*t->a + t->b*t->b == t->c*t->c) {
+ if (t->n-- == 0) cco_return;
cco_yield(true);
- if (t->n-- == 1) cco_return;
}
}
}