Changeset 3d0560d for libcfa/src/bits/sequence.hfa
- Timestamp:
- Dec 2, 2020, 12:31:42 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 833ba13
- Parents:
- 4f0c520
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/bits/sequence.hfa
r4f0c520 r3d0560d 116 116 117 117 // 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 *s118 void insertAft( Sequence(T) & s, T * aft, T * n ) with( s ) { // pre: !n->listed() & *aft in *s 119 119 #ifdef __CFA_DEBUG__ 120 120 if ( listed( n ) ) abort( "(Sequence &)%p.insertAft( %p, %p ) : Node is already on another list.", &s, aft, n ); … … 145 145 146 146 // 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) 148 148 #ifdef __CFA_DEBUG__ 149 149 if ( ! listed( n ) ) abort( "(Sequence &)%p.remove( %p ) : Node is not on a list.", &s, n ); … … 159 159 160 160 // Add an element to the head of the sequence. 161 void addHead( Sequence(T) & s, T * n ) {// pre: !n->listed(); post: n->listed() & head() == n161 void addHead( Sequence(T) & s, T * n ) { // pre: !n->listed(); post: n->listed() & head() == n 162 162 insertAft( s, 0, n ); 163 163 } 164 164 // Add an element to the tail of the sequence. 165 void addTail( Sequence(T) & s, T * n ) {// pre: !n->listed(); post: n->listed() & head() == n165 void addTail( Sequence(T) & s, T * n ) { // pre: !n->listed(); post: n->listed() & head() == n 166 166 insertBef( s, n, 0 ); 167 167 } 168 168 // Add an element to the tail of the sequence. 169 void add( Sequence(T) & s, T * n ) {// pre: !n->listed(); post: n->listed() & head() == n169 void add( Sequence(T) & s, T * n ) { // pre: !n->listed(); post: n->listed() & head() == n 170 170 addTail( s, n ); 171 171 } … … 244 244 ((ColIter &) si){}; 245 245 seq = &s; 246 curr = head( s ); 246 247 } // post: elts = null. 247 248 … … 251 252 } // post: elts = {e in s}. 252 253 253 bool ?>>?( SeqIter(T) & si, T *& tp ) with( si ) {254 bool ?>>?( SeqIter(T) & si, T && tp ) with( si ) { 254 255 if ( curr ) { 255 tp = Curr( si );256 T * n = succ( *seq, Curr( si ) );256 &tp = Curr( si ); 257 T * n = succ( *seq, Curr( si ) ); 257 258 curr = n == head( *seq ) ? 0p : n; 258 } else tp = 0p;259 return tp != 0p;259 } else &tp = 0p; 260 return &tp != 0p; 260 261 } 261 262 } // distribution … … 282 283 ((ColIter &) si){}; 283 284 seq = &s; 285 curr = tail( s ); 284 286 } // post: elts = null. 285 287 … … 289 291 } // post: elts = {e in s}. 290 292 291 bool ?>>?( SeqIterRev(T) & si, T *&tp ) with( si ) {293 bool ?>>?( SeqIterRev(T) & si, T && tp ) with( si ) { 292 294 if ( curr ) { 293 tp = Curr( si );294 T * n = pred( *seq, Curr( si ) );295 &tp = Curr( si ); 296 T * n = pred( *seq, Curr( si ) ); 295 297 curr = n == tail( *seq ) ? 0p : n; 296 } else tp = 0p;297 return tp != 0p;298 } else &tp = 0p; 299 return &tp != 0p; 298 300 } 299 301 } // distribution
Note: See TracChangeset
for help on using the changeset viewer.