#include "coroutine.h"


struct Task {
    Future base;
    Coroutine *cor;
    Task_Entry entry;
    void *param;
    Future *awaiting_future;
    bool canceled;
    void *cancel_value;
};


static inline bool Task_IsCanceled(
    Task *tsk
){
    return tsk->canceled;
}


static inline bool Task_Await(
    Task *tsk,
    void **res
){
    return Future_Await(&tsk->base, res);
}


static inline Future *Task_GetAwaitedFuture(
    Task *tsk
){
    return tsk->awaiting_future;
}
