Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/coroutine.c

    rf802e46 r83a071f9  
    1010// Created On       : Thu Jun  8 07:29:37 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Sep 17 21:38:15 2017
    13 // Update Count     : 7
     12// Last Modified On : Thu Jun  8 07:37:12 2017
     13// Update Count     : 5
    1414//
    1515
     
    1818
    1919coroutine Fibonacci {
    20         int fn;                                                                                         // used for communication
     20        int fn;                                         // used for communication
    2121};
    2222
     
    2626
    2727void main( Fibonacci & this ) {
    28         int fn1, fn2;                                                                           // retained between resumes
    29         this.fn = 0;                                                                            // case 0
     28        int fn1, fn2;                                   // retained between resumes
     29        this.fn = 0;                                    // case 0
    3030        fn1 = this.fn;
    31         suspend();                                                                                      // restart last resume
     31        suspend();                                              // return to last resume
    3232
    33         this.fn = 1;                                                                            // case 1
    34         fn2 = fn1;  fn1 = this.fn;
    35         suspend();                                                                                      // restart last resume
     33        this.fn = 1;                                    // case 1
     34        fn2 = fn1;
     35        fn1 = this.fn;
     36        suspend();                                              // return to last resume
    3637
    37         for ( ;; ) {                                                                            // general case
     38        for ( ;; ) {                                    // general case
    3839                this.fn = fn1 + fn2;
    39                 fn2 = fn1;  fn1 = this.fn;
    40                 suspend();                                                                              // restart last resume
     40                fn2 = fn1;
     41                fn1 = this.fn;
     42                suspend();                                      // return to last resume
    4143        } // for
    4244}
    4345
    4446int next( Fibonacci & this ) {
    45         resume( this );                                                                         // restart last suspend
     47        resume( this );                                 // transfer to last suspend
    4648        return this.fn;
    4749}
     
    5052        Fibonacci f1, f2;
    5153        for ( int i = 1; i <= 10; i += 1 ) {
    52                 sout | next( f1 ) | next( f2 ) | endl;
     54                sout | next( f1 ) | ' ' | next( f2 ) | endl;
    5355        } // for
    5456}
Note: See TracChangeset for help on using the changeset viewer.