Go to the documentation of this file. 119 #define DECL_CORO_STATE(f) int _coro_state ## f = 0; 121 #define RESET_CORO(f) _coro_state ## f = 0; 122 #define RESET_CLASS_CORO(obj, f) obj._coro_state ## f = 0; 123 #define CALL_CORO(f, ...) f(__VA_ARGS__) 124 #define CALL_CORO_RESET(f, ...) {_coro_state ## f = 0; f(__VA_ARGS__);} 125 #define CORO_BEGIN(f) int& _coro_state = _coro_state ## f; switch(_coro_state) { case 0: 126 #define CORO_YIELD(x) _coro_state=__LINE__; return x; \ 128 #define CORO_END _coro_state = 0; break; } 129 #define CORO_DONE(f) (_coro_state ##f == 0) 130 #define CORO_RUNNING(f) (_coro_state ##f != 0) 131 #define CLASS_CALL_CORO(obj, f, ...) (obj).f(__VA_ARGS__) 132 #define CLASS_CORO_DONE(obj, f) ((obj)._coro_state ##f == 0) 133 #define CLASS_CORO_RUNNING(obj, f) ((obj)._coro_state ##f != 0)