Changes in src/tests/coroutine.c [e04b636:c3acb841]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/tests/coroutine.c
re04b636 rc3acb841 2 2 #include <coroutine> 3 3 4 coroutineFibonacci {4 struct Fibonacci { 5 5 int fn; // used for communication 6 coroutine_desc c; 6 7 }; 7 8 … … 10 11 } 11 12 13 coroutine_desc* get_coroutine(Fibonacci* this) { 14 return &this->c; 15 } 16 12 17 void main(Fibonacci* this) { 18 #ifdef MORE_DEBUG 19 sout | "Starting main of coroutine " | this | endl; 20 sout | "Started from " | this->c.last | endl; 21 #endif 13 22 int fn1, fn2; // retained between resumes 14 23 this->fn = 0; … … 36 45 int main() { 37 46 Fibonacci f1, f2; 47 #ifdef MORE_DEBUG 48 Fibonacci *pf1 = &f1, *pf2 = &f2; 49 coroutine_desc *cf1 = &f1.c, *cf2 = &f2.c; 50 covptr_t *vf1 = vtable(pf1), *vf2 = vtable(pf2); 51 coroutine_desc *cv1 = get_coroutine(vf1), *cv2 = get_coroutine(vf2); 52 Fibonacci *ov1 = (Fibonacci *)get_object(vf1), *ov2 = (Fibonacci *)get_object(vf2); 53 54 sout | "User coroutines : " | pf1 | ' ' | pf2 | endl; 55 sout | "Coroutine data : " | cf1 | ' ' | cf2 | endl; 56 sout | "Vptr address : " | vf1 | ' ' | vf2 | endl; 57 sout | "Vptr obj data : " | ov1 | ' ' | ov2 | endl; 58 sout | "Vptr cor data : " | cv1 | ' ' | cv2 | endl; 59 #endif 38 60 for ( int i = 1; i <= 10; i += 1 ) { 39 61 sout | next(&f1) | ' ' | next(&f2) | endl;
Note: See TracChangeset
for help on using the changeset viewer.