35 lines482 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 bool canceled;
11 void *cancel_value;
12};
13
14
15static inline bool Task_IsCanceled(
16 Task *tsk
17){
18 return tsk->canceled;
19}
20
21
22static inline bool Task_Await(
23 Task *tsk,
24 void **res
25){
26 return Future_Await(&tsk->base, res);
27}
28
29
30static inline Future *Task_GetAwaitedFuture(
31 Task *tsk
32){
33 return tsk->awaiting_future;
34}
35