summaryrefslogtreecommitdiffhomepage
path: root/misc/examples/coroutines.c
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2023-05-02 13:09:16 +0200
committerTyge Løvset <[email protected]>2023-05-02 13:09:16 +0200
commitab7a91c501fb3b7054e836a931754caae578c5f2 (patch)
treeb7cb26e6e351dac4b1e8302501131665382b2d58 /misc/examples/coroutines.c
parent2adea8b3b06ebe1b2152870862100f7e7985cfdf (diff)
downloadSTC-modified-ab7a91c501fb3b7054e836a931754caae578c5f2.tar.gz
STC-modified-ab7a91c501fb3b7054e836a931754caae578c5f2.zip
Removed cco_alive(), was same as !cco_done()
Diffstat (limited to 'misc/examples/coroutines.c')
-rw-r--r--misc/examples/coroutines.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/misc/examples/coroutines.c b/misc/examples/coroutines.c
index 3fddf913..bbe85874 100644
--- a/misc/examples/coroutines.c
+++ b/misc/examples/coroutines.c
@@ -17,20 +17,20 @@ struct prime {
int cco_state;
};
-bool prime(struct prime* U) {
- cco_begin(U);
- if (U->result < 2) U->result = 2;
- if (U->result == 2) {
- if (U->count-- == 0) cco_return;
- ++U->idx;
+bool prime(struct prime* g) {
+ cco_begin(g);
+ if (g->result < 2) g->result = 2;
+ if (g->result == 2) {
+ if (g->count-- == 0) cco_return;
+ ++g->idx;
cco_yield(false);
}
- U->result += !(U->result & 1);
- for (U->pos = U->result; U->count > 0; U->pos += 2) {
- if (is_prime(U->pos)) {
- --U->count;
- ++U->idx;
- U->result = U->pos;
+ g->result += !(g->result & 1);
+ for (g->pos = g->result; g->count > 0; g->pos += 2) {
+ if (is_prime(g->pos)) {
+ --g->count;
+ ++g->idx;
+ g->result = g->pos;
cco_yield(false);
}
}
@@ -48,20 +48,20 @@ struct fibonacci {
int cco_state;
};
-bool fibonacci(struct fibonacci* F) {
- assert(F->count < 94);
+bool fibonacci(struct fibonacci* g) {
+ assert(g->count < 94);
- cco_begin(F);
- F->idx = 0;
- F->result = 0;
- F->b = 1;
+ cco_begin(g);
+ g->idx = 0;
+ g->result = 0;
+ g->b = 1;
for (;;) {
- if (F->count-- == 0)
+ if (g->count-- == 0)
cco_return;
- if (++F->idx > 1) {
- int64_t sum = F->result + F->b; // NB! locals only lasts until next cco_yield!
- F->result = F->b;
- F->b = sum;
+ if (++g->idx > 1) {
+ int64_t sum = g->result + g->b; // NB! locals only lasts until next cco_yield!
+ g->result = g->b;
+ g->b = sum;
}
cco_yield(false);
}