#include "coroutine.h" using Study::Coroutine; Coroutine* Coroutine::current = nullptr; long Coroutine::last_cid = 0; std::unordered_map Coroutine::coroutines; size_t Coroutine::stack_size = DEFAULT_C_STACK_SIZE; void* Coroutine::get_current_task() { return current ? current->get_task() : nullptr; } void* Coroutine::get_task() { return task; } Coroutine* Coroutine::get_current() { return current; } void Coroutine::set_task(void *_task) { task = _task; } long Coroutine::create(coroutine_func_t fn, void* args) { return (new Coroutine(fn, args))->run(); }