Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/coroutine.c

    rc3acb841 re04b636  
    22#include <coroutine>
    33
    4 struct Fibonacci {
     4coroutine Fibonacci {
    55      int fn; // used for communication
    6       coroutine_desc c;
    76};
    87
     
    1110}
    1211
    13 coroutine_desc* get_coroutine(Fibonacci* this) {
    14       return &this->c;
    15 }
    16 
    1712void 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
    2213      int fn1, fn2;             // retained between resumes
    2314      this->fn = 0;
     
    4536int main() {
    4637      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
    6038      for ( int i = 1; i <= 10; i += 1 ) {
    6139            sout | next(&f1) | ' ' | next(&f2) | endl;
Note: See TracChangeset for help on using the changeset viewer.