| 1 | #ifndef TASK_H |
| 2 | #define TASK_H |
| 3 | #include <stdbool.h> |
| 4 | #include "future.h" |
| 5 | #include "cor_platform.h" |
| 6 | |
| 7 | typedef struct Task Task; |
| 8 | |
| 9 | extern _Cor_thread_local Task *current_task; |
| 10 | |
| 11 | typedef bool (*Task_Entry)(void *param, void **res); |
| 12 | |
| 13 | extern void Task_ctor(Task *tsk, size_t stack_size, Task_Entry entry, void *param); |
| 14 | extern Task *Task_New(size_t stack_size, Task_Entry entry, void *param); |
| 15 | extern void Task_dtor(Task *tsk); |
| 16 | extern void Task_Delete(Task *tsk); |
| 17 | static inline bool Task_Await(Task *tsk, void **res); |
| 18 | extern void Task_Cancel(Task *tsk, void *cancel_value); |
| 19 | static inline bool Task_IsCanceled(Task *tsk); |
| 20 | static inline Future *Task_GetAwaitedFuture(Task *tsk); |
| 21 | extern bool Task_Run(size_t stack_size, Task_Entry start, void *value, void **res); |
| 22 | |
| 23 | #include "task.def.h" |
| 24 | #endif |
| 25 | |