Changes in / [833ba13:a25f64b]


Ignore:
Location:
libcfa/src/bits
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/bits/queue.hfa

    r833ba13 ra25f64b  
    187187                } // post: curr = {e in q}
    188188
    189                 bool ?>>?( QueueIter(T) & qi, T && tp ) with( qi ) {
     189                bool ?>>?( QueueIter(T) & qi, T *& tp ) with( qi ) {
    190190                        if ( curr ) {
    191                                 &tp = Curr( qi );
     191                                tp = Curr( qi );
    192192                                T * n = Next( Curr( qi ) );
    193193                                curr = (n == Curr( qi ) ) ? 0p : n;
    194                         } else &tp = 0p;
    195                         return &tp != 0p;
     194                        } else tp = 0p;
     195                        return tp != 0p;
    196196                }
    197197                // post: elts == null & !operator>>(tp) | elts != null & *tp' in elts & elts' == elts - *tp & operator>>(tp)
  • libcfa/src/bits/queue_example.cfa

    r833ba13 ra25f64b  
    1717        Queue(Fred) fred;
    1818        QueueIter(Fred) fredIter = { fred };
    19         Fred & f;
     19        Fred * f;
     20        int i;
    2021
    2122        sout | nlOff;                                                                           // turn off auto newline
    2223
    2324        for ( ; fredIter >> f; ) {                                                      // empty list
    24                 sout | f.i | ' ';
     25                sout | f->i | ' ';
    2526        }
    2627        sout | "empty" | nl;
    2728       
    28         for ( i; 10 ) {
     29        for ( i = 0; i < 10; i += 1 ) {
    2930                add( fred, new( 2 * i ) );
    3031        }
    3132
    32         for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
    33                 sout | f.i | ' ';
     33        for ( over( fredIter, fred ); fredIter >> f; ) {
     34                sout | f->i | ' ';
    3435        }
    3536        sout | nl;
    3637
    37         for ( i; 9 ) {
     38        for ( i = 0; i < 9; i += 1 ) {
    3839                delete( drop( fred ) );
    3940        }
    4041
    4142        for ( over( fredIter, fred ); fredIter >> f; ) {
    42                 sout | f.i | ' ';
     43                sout | f->i | ' ';
    4344        }
    4445        sout | nl;
    4546       
    46         for ( i; 10 ) {
     47        for ( i = 0; i < 10; i += 1 ) {
    4748                add( fred, new( 2 * i + 1 ) );
    4849        }
    4950        for ( over( fredIter, fred ); fredIter >> f; ) {
    50                 sout | f.i | ' ';
     51                sout | f->i | ' ';
    5152        }
    5253        sout | nl;
    5354
    5455        for ( over( fredIter, fred ); fredIter >> f; ) {
    55                 delete( &f );
     56                delete( f );
    5657        }
    5758
     
    7071        Queue(Mary) mary;
    7172        QueueIter(Mary) maryIter = { mary };
    72         Mary & m;
     73        Mary * m;
    7374
    7475        for ( ; maryIter >> m; ) {                                                      // empty list
    75                 sout | m.i | m.j | ' ';
     76                sout | m->i | m->j | ' ';
    7677        }
    7778        sout | "empty" | nl;
    7879       
    79         for ( i; 10 ) {
     80        for ( i = 0; i < 10; i += 1 ) {
    8081                add( mary, new( 2 * i ) );
    8182        }
    8283
    83         for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
    84                 sout | m.i | m.j | ' ';
     84        for ( over( maryIter, mary ); maryIter >> m; ) {
     85                sout | m->i | m->j | ' ';
    8586        }
    8687        sout | nl;
    8788       
    88         for ( i; 9 ) {
     89        for ( i = 0; i < 9; i += 1 ) {
    8990                delete( drop( mary ) );
    9091        }
    9192
    9293        for ( over( maryIter, mary ); maryIter >> m; ) {
    93                 sout | m.i | m.j | ' ';
     94                sout | m->i | m->j | ' ';
    9495        }
    9596        sout | nl;
    9697       
    97         for ( i; 10 ) {
     98        for ( i = 0; i < 10; i += 1 ) {
    9899                add( mary, new( 2 * i + 1 ) );
    99100        }
    100101        for ( over( maryIter, mary ); maryIter >> m; ) {
    101                 sout | m.i | m.j | ' ';
     102                sout | m->i | m->j | ' ';
    102103        }
    103104        sout | nl;
    104105
    105106        for ( over( maryIter, mary ); maryIter >> m; ) {
    106                 delete( &m );
     107                delete( m );
    107108        }
    108109}
  • libcfa/src/bits/sequence.hfa

    r833ba13 ra25f64b  
    116116
    117117                // Insert *n into the sequence after *aft, or at the beginning if aft == 0.
    118                 void insertAft( Sequence(T) & s, T * aft, T * n ) with( s ) {   // pre: !n->listed() & *aft in *s
     118                void insertAft( Sequence(T) & s, T *aft, T *n ) with( s ) {     // pre: !n->listed() & *aft in *s
    119119#ifdef __CFA_DEBUG__
    120120                        if ( listed( n ) ) abort( "(Sequence &)%p.insertAft( %p, %p ) : Node is already on another list.", &s, aft, n );
     
    145145               
    146146                // pre: n->listed() & *n in *s
    147                 void remove( Sequence(T) & s, T * n ) with( s ) { // O(1)
     147                void remove( Sequence(T) & s, T *n ) with( s ) { // O(1)
    148148#ifdef __CFA_DEBUG__
    149149                        if ( ! listed( n ) ) abort( "(Sequence &)%p.remove( %p ) : Node is not on a list.", &s, n );
     
    159159
    160160                // Add an element to the head of the sequence.
    161                 void addHead( Sequence(T) & s, T * n ) {                // pre: !n->listed(); post: n->listed() & head() == n
     161                void addHead( Sequence(T) & s, T *n ) {                 // pre: !n->listed(); post: n->listed() & head() == n
    162162                        insertAft( s, 0, n );
    163163                }
    164164                // Add an element to the tail of the sequence.
    165                 void addTail( Sequence(T) & s, T * n ) {                // pre: !n->listed(); post: n->listed() & head() == n
     165                void addTail( Sequence(T) & s, T *n ) {                 // pre: !n->listed(); post: n->listed() & head() == n
    166166                        insertBef( s, n, 0 );
    167167                }
    168168                // Add an element to the tail of the sequence.
    169                 void add( Sequence(T) & s, T * n ) {                    // pre: !n->listed(); post: n->listed() & head() == n
     169                void add( Sequence(T) & s, T *n ) {                             // pre: !n->listed(); post: n->listed() & head() == n
    170170                        addTail( s, n );
    171171                }
     
    244244                        ((ColIter &) si){};
    245245                        seq = &s;
    246                         curr = head( s );
    247246                } // post: elts = null.
    248247               
     
    252251                } // post: elts = {e in s}.
    253252
    254                 bool ?>>?( SeqIter(T) & si, T && tp ) with( si ) {
     253                bool ?>>?( SeqIter(T) & si, T *& tp ) with( si ) {
    255254                        if ( curr ) {
    256                                 &tp = Curr( si );
    257                                 T * n = succ( *seq, Curr( si ) );
     255                                tp = Curr( si );
     256                                T *n = succ( *seq, Curr( si ) );
    258257                                curr = n == head( *seq ) ? 0p : n;
    259                         } else &tp = 0p;
    260                         return &tp != 0p;
     258                        } else tp = 0p;
     259                        return tp != 0p;
    261260                }
    262261        } // distribution
     
    283282                        ((ColIter &) si){};
    284283                        seq = &s;
    285                         curr = tail( s );
    286284                } // post: elts = null.
    287285               
     
    291289                } // post: elts = {e in s}.
    292290
    293                 bool ?>>?( SeqIterRev(T) & si, T && tp ) with( si ) {
     291                bool ?>>?( SeqIterRev(T) & si, T *&tp ) with( si ) {
    294292                        if ( curr ) {
    295                                 &tp = Curr( si );
    296                                 T * n = pred( *seq, Curr( si ) );
     293                                tp = Curr( si );
     294                                T *n = pred( *seq, Curr( si ) );
    297295                                curr = n == tail( *seq ) ? 0p : n;
    298                         } else &tp = 0p;
    299                         return &tp != 0p;
     296                        } else tp = 0p;
     297                        return tp != 0p;
    300298                }
    301299        } // distribution
  • libcfa/src/bits/sequence_example.cfa

    r833ba13 ra25f64b  
    1717        Sequence(Fred) fred;
    1818        SeqIter(Fred) fredIter = { fred };
    19         Fred & f;
     19        Fred * f;
     20        int i;
    2021
    2122        sout | nlOff;                                                                           // turn off auto newline
    2223
    2324        for ( ; fredIter >> f; ) {                                                      // empty list
    24                 sout | f.i | ' ';
     25                sout | f->i | ' ';
    2526        }
    2627        sout | "empty" | nl;
    2728       
    28         for ( i; 10 ) {
     29        for ( i = 0; i < 10; i += 1 ) {
    2930                add( fred, new( 2 * i ) );
    3031        }
    3132
    32         for ( SeqIter(Fred) iter = { fred }; iter >> f; ) {
    33                 sout | f.i | ' ';
     33        for ( over( fredIter, fred ); fredIter >> f; ) {
     34                sout | f->i | ' ';
    3435        }
    3536        sout | nl;
    3637
    37         for ( i; 9 ) {
     38        for ( i = 0; i < 9; i += 1 ) {
    3839                delete( dropHead( fred ) );
    3940        }
    4041
    4142        for ( over( fredIter, fred ); fredIter >> f; ) {
    42                 sout | f.i | ' ';
     43                sout | f->i | ' ';
    4344        }
    4445        sout | nl;
    4546       
    46         for ( i; 10 ) {
     47        for ( i = 0; i < 10; i += 1 ) {
    4748                addTail( fred, new( 2 * i + 1 ) );
    4849        }
    4950        for ( over( fredIter, fred ); fredIter >> f; ) {
    50                 sout | f.i | ' ';
     51                sout | f->i | ' ';
    5152        }
    5253        sout | nl;
    5354
    54         for ( i; 9 ) {
    55                 delete( &dropTail( fred ) );
     55        for ( i = 0; i < 9; i += 1 ) {
     56                delete( dropTail( fred ) );
    5657        }
    5758        for ( over( fredIter, fred ); fredIter >> f; ) {
    58                 sout | f.i | ' ';
     59                sout | f->i | ' ';
    5960        }
    6061        sout | nl;
    6162
    6263        for ( over( fredIter, fred ); fredIter >> f; ) {
    63                 delete( &f );
     64                delete( f );
    6465        }
    6566
     
    7980        Sequence(Mary) baz;
    8081        SeqIter(Mary) maryIter = { mary };
    81         Mary & m;
     82        Mary * m;
    8283
    8384        for ( ; maryIter >> m; ) {                                                      // empty list
    84                 sout | m.i | m.j | ' ';
     85                sout | m->i | m->j | ' ';
    8586        }
    8687        sout | "empty" | nl;
    8788       
    88         for ( i; 10 ) {
     89        for ( i = 0; i < 10; i += 1 ) {
    8990                add( mary, new( 2 * i ) );
    9091                add( baz, new( 2 * i ) );
    9192        }
    9293
    93         for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
    94                 sout | m.i | m.j | ' ';
     94        for ( over( maryIter, mary ); maryIter >> m; ) {
     95                sout | m->i | m->j | ' ';
    9596        }
    9697        sout | nl;
    9798       
    98         for ( i; 9 ) {
     99        for ( i = 0; i < 9; i += 1 ) {
    99100                delete( dropHead( mary ) );
    100101        }
    101102
    102103        for ( over( maryIter, mary ); maryIter >> m; ) {
    103                 sout | m.i | m.j | ' ';
     104                sout | m->i | m->j | ' ';
    104105        }
    105106        sout | nl;
    106107       
    107         for ( i; 10 ) {
     108        for ( i = 0; i < 10; i += 1 ) {
    108109                addTail( mary, new( 2 * i + 1 ) );
    109110        }
    110111        for ( over( maryIter, mary ); maryIter >> m; ) {
    111                 sout | m.i | m.j | ' ';
     112                sout | m->i | m->j | ' ';
    112113        }
    113114        sout | nl;
    114115
    115         for ( i; 9 ) {
    116                 delete( &dropTail( mary ) );
     116        for ( i = 0; i < 9; i += 1 ) {
     117                delete( dropTail( mary ) );
    117118        }
    118119        for ( over( maryIter, mary ); maryIter >> m; ) {
    119                 sout | m.i | m.j | ' ';
     120                sout | m->i | m->j | ' ';
    120121        }
    121122        sout | nl;
     
    124125
    125126        for ( over( maryIter, baz ); maryIter >> m; ) {
    126                 sout | m.i | m.j | ' ';
     127                sout | m->i | m->j | ' ';
    127128        }
    128129        sout | "empty" | nl;
    129130
    130131        for ( over( maryIter, mary ); maryIter >> m; ) {
    131                 sout | m.i | m.j | ' ';
     132                sout | m->i | m->j | ' ';
    132133        }
    133134        sout | nl;
    134135
    135136        for ( over( maryIter, mary ); maryIter >> m; ) {
    136                 delete( &m );
     137                delete( m );
    137138        }
    138139}
    139140
    140141// Local Variables: //
    141 // compile-command: "cfa sequence_example.cfa" //
     142// compile-command: "cfa sequence_example.cc" //
    142143// End: //
  • libcfa/src/bits/stack.hfa

    r833ba13 ra25f64b  
    9999                } // post: curr = {e in s}
    100100
    101                 bool ?>>?( StackIter(T) & si, T && tp ) with( si ) {
     101                bool ?>>?( StackIter(T) & si, T *& tp ) with( si ) {
    102102                        if ( curr ) {
    103                                 &tp = Curr( si );
     103                                tp = Curr( si );
    104104                                T * n = Next( Curr( si ) );
    105105                                curr = (n == Curr( si ) ) ? 0p : n;
    106                         } else &tp = 0p;
    107                         return &tp != 0p;
     106                        } else tp = 0p;
     107                        return tp != 0p;
    108108                }
    109109        } // distribution
  • libcfa/src/bits/stack_example.cfa

    r833ba13 ra25f64b  
    1717        Stack(Fred) fred;
    1818        StackIter(Fred) fredIter = { fred };
    19         Fred & f;
     19        Fred * f;
     20        int i;
    2021
    2122        sout | nlOff;                                                                           // turn off auto newline
    2223
    2324        for ( ; fredIter >> f; ) {                                                      // empty list
    24                 sout | f.i | ' ';
     25                sout | f->i | ' ';
    2526        }
    2627        sout | "empty" | nl;
    2728       
    28         for ( i; 10 ) {
     29        for ( i = 0; i < 10; i += 1 ) {
    2930                push( fred, new( 2 * i ) );
    3031        }
    3132
    32         for ( StackIter(Fred) iter = { fred }; iter >> f; ) {
    33                 sout | f.i | ' ';
     33        for ( over( fredIter, fred ); fredIter >> f; ) {
     34                sout | f->i | ' ';
    3435        }
    3536        sout | nl;
    3637       
    37         for ( i; 9 ) {
     38        for ( i = 0; i < 9; i += 1 ) {
    3839                delete( pop( fred ) );
    3940        }
    4041
    4142        for ( over( fredIter, fred ); fredIter >> f; ) {
    42                 sout | f.i | ' ';
     43                sout | f->i | ' ';
    4344        }
    4445        sout | nl;
    4546       
    46         for ( i; 10 ) {
     47        for ( i = 0; i < 10; i += 1 ) {
    4748                push( fred, new( 2 * i + 1 ) );
    4849        }
    4950        for ( over( fredIter, fred ); fredIter >> f; ) {
    50                 sout | f.i | ' ';
     51                sout | f->i | ' ';
    5152        }
    5253        sout | nl;
    5354
    5455        for ( over( fredIter, fred ); fredIter >> f; ) {
    55                 delete( &f );
     56                delete( f );
    5657        }
    5758
     
    7071        Stack(Mary) mary;
    7172        StackIter(Mary) maryIter = { mary };
    72         Mary & m;
     73        Mary * m;
    7374
    7475        for ( ; maryIter >> m; ) {                                                      // empty list
    75                 sout | m.i | m.j | ' ';
     76                sout | m->i | m->j | ' ';
    7677        }
    7778        sout | "empty" | nl;
    7879       
    79         for ( i; 10 ) {
     80        for ( i = 0; i < 10; i += 1 ) {
    8081                push( mary, new( 2 * i ) );
    8182        }
    8283
    83         for ( StackIter(Mary) iter = { mary }; iter >> m; ) {
    84                 sout | m.i | m.j | ' ';
     84        for ( over( maryIter, mary ); maryIter >> m; ) {
     85                sout | m->i | m->j | ' ';
    8586        }
    8687        sout | nl;
    8788       
    88         for ( i; 9 ) {
     89        for ( i = 0; i < 9; i += 1 ) {
    8990                delete( pop( mary ) );
    9091        }
    9192
    9293        for ( over( maryIter, mary ); maryIter >> m; ) {
    93                 sout | m.i | m.j | ' ';
     94                sout | m->i | m->j | ' ';
    9495        }
    9596        sout | nl;
    9697       
    97         for ( i; 10 ) {
     98        for ( i = 0; i < 10; i += 1 ) {
    9899                push( mary, new( 2 * i + 1 ) );
    99100        }
    100101        for ( over( maryIter, mary ); maryIter >> m; ) {
    101                 sout | m.i | m.j | ' ';
     102                sout | m->i | m->j | ' ';
    102103        }
    103104        sout | nl;
    104105
    105106        for ( over( maryIter, mary ); maryIter >> m; ) {
    106                 delete( &m );
     107                delete( m );
    107108        }
    108109}
Note: See TracChangeset for help on using the changeset viewer.