- File:
-
- 1 edited
-
libcfa/src/concurrency/coroutine.hfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/coroutine.hfa
r8fc9a5f r1c01c58 22 22 //----------------------------------------------------------------------------- 23 23 // Exception thrown from resume when a coroutine stack is cancelled. 24 FORALL_DATA_EXCEPTION(CoroutineCancelled, (dtype coroutine_t), (coroutine_t)) ( 24 // Should not have to be be sized (see trac #196). 25 FORALL_DATA_EXCEPTION(CoroutineCancelled, 26 (dtype coroutine_t | sized(coroutine_t)), (coroutine_t)) ( 25 27 coroutine_t * the_coroutine; 26 28 exception_t * the_exception; … … 28 30 29 31 forall(dtype T) 32 void mark_exception(CoroutineCancelled(T) *); 33 34 forall(dtype T | sized(T)) 30 35 void copy(CoroutineCancelled(T) * dst, CoroutineCancelled(T) * src); 31 36 … … 37 42 // Anything that implements this trait can be resumed. 38 43 // Anything that is resumed is a coroutine. 39 trait is_coroutine(dtype T | IS_RESUMPTION_EXCEPTION(CoroutineCancelled, (T))) { 44 trait is_coroutine(dtype T | sized(T) 45 | is_resumption_exception(CoroutineCancelled(T)) 46 | VTABLE_ASSERTION(CoroutineCancelled, (T))) { 40 47 void main(T & this); 41 48 $coroutine * get_coroutine(T & this);
Note:
See TracChangeset
for help on using the changeset viewer.