| #ifndef TASK_H |
| #define TASK_H |
| #include <stdbool.h> |
| #include "future.h" |
| #include "cor_platform.h" |
|
| typedef struct Task Task; |
|
| extern _Cor_thread_local Task *current_task; |
|
| typedef bool (*Task_Entry)(void *param, void **res); |
|
| extern void Task_ctor(Task *tsk, Task_Entry entry, void *param); |
| extern Task *Task_New(Task_Entry entry, void *param); |
| extern void Task_dtor(Task *tsk); |
| extern void Task_Delete(Task *tsk); |
| static inline bool Task_Await(Task *tsk, void **res); |
| extern void Task_Cancel(Task *tsk, void *cancel_value); |
| static inline bool Task_IsCanceled(Task *tsk); |
| static inline Future *Task_GetAwaitedFuture(Task *tsk); |
| extern bool Task_Run(Task_Entry start, void *value, void **res); |
|
| #include "task.def.h" |
| #endif |
|