diff options
Diffstat (limited to 'stackless_coroutine.c')
-rw-r--r-- | stackless_coroutine.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/stackless_coroutine.c b/stackless_coroutine.c index 73a55e4..79d93ae 100644 --- a/stackless_coroutine.c +++ b/stackless_coroutine.c @@ -67,11 +67,13 @@ typedef struct { #define CORO_PROMISE_FROM(coro_) (*((Coro_Promise_Void *) (coro_))) -#ifdef CORO_ENABLE_CUSTOM_DISPATCH +// TODO: Only use static dispatch? + +#ifdef ENABLE_CORO_CUSTOM_DISPATCH // Application should implement this procedure if custom dispatch is enabled. -void stackless_coroutine_dispatch(void *promise); +void dispatch_stackless_coroutine(void *promise); #else -static void stackless_coroutine_dispatch(void *promise) { +static void dispatch_stackless_coroutine(void *promise) { // Dynamic dispatch by default. CORO_PROMISE_FROM(promise)._state_machine(promise); } @@ -131,10 +133,10 @@ static void stackless_coroutine_dispatch(void *promise) { CORO_STATIC(coro_, Coro_Void_, __VA_ARGS__) #define coro_resume(promise_) \ - stackless_coroutine_dispatch(&(promise_)) + dispatch_stackless_coroutine(&(promise_)) #define coro_next(promise_) \ - (stackless_coroutine_dispatch(&(promise_)), (promise_).return_value) + (dispatch_stackless_coroutine(&(promise_)), (promise_).return_value) #define yield(...) \ do { \ @@ -175,7 +177,7 @@ static void stackless_coroutine_dispatch(void *promise) { case CORO_LINE_(): \ if ((promise_)._index != -1) { \ self->_index = CORO_LINE_(); \ - stackless_coroutine_dispatch(&(promise_)); \ + dispatch_stackless_coroutine(&(promise_)); \ } \ if ((promise_)._index != -1) \ return; \ @@ -188,7 +190,7 @@ static void stackless_coroutine_dispatch(void *promise) { case CORO_LINE_(): \ if ((promise_)._index != -1) { \ self->_index = CORO_LINE_(); \ - stackless_coroutine_dispatch(&(promise_)); \ + dispatch_stackless_coroutine(&(promise_)); \ self->return_value = (promise_).return_value; \ return; \ } \ |