36 lines511 bytes
1#include "coroutine.h"
2
3
4struct Task {
5 Future base;
6 Coroutine *cor;
7 Task_Entry entry;
8 void *param;
9 Future *awaiting_future;
10 void *cancel_value;
11 bool canceled;
12 bool cor_owned;
13};
14
15
16static inline bool Task_IsCanceled(
17 Task *tsk
18){
19 return tsk->canceled;
20}
21
22
23static inline Coroutine_Err Task_Await(
24 Task *tsk,
25 void **res
26){
27 return Future_Await(&tsk->base, res);
28}
29
30
31static inline Future *Task_GetAwaitedFuture(
32 Task *tsk
33){
34 return tsk->awaiting_future;
35}
36