Changes in libcfa/src/bits/sequence.hfa [a5a67ab8:a78c3ff]
- File:
-
- 1 edited
-
libcfa/src/bits/sequence.hfa (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/bits/sequence.hfa
ra5a67ab8 ra78c3ff 2 2 3 3 #include "collection.hfa" 4 #include <stdlib.hfa> 5 #include <stdio.h> 4 6 5 7 struct Seqable { … … 48 50 T & tail( Sequence(T) & s ) with( s ) { 49 51 return root ? (T &)*Back( &head( s ) ) : *0p; 50 } // post: empty() & tail() == 0 | !empty() & tail() in *s 52 } // post: empty() & tail() == 0 | !empty() & tail() in *s\ 51 53 52 54 // Return a pointer to the element after *n, or 0p if there isn't one. 53 T * succ( Sequence(T) & s, T *n ) with( s ) { // pre: *n in *s54 #ifdef __CFA_DEBUG__ 55 if ( ! listed( n ) ) abort( "(Sequence &)%p.succ( %p ) : Node is not on a list.", &s,n );56 #endif // __CFA_DEBUG__ 57 return Next( n ) == &head( s ) ? 0p : Next(n );58 } // post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *s55 T & succ( Sequence(T) & s, T & n ) with( s ) { // pre: *n in *s 56 #ifdef __CFA_DEBUG__ 57 if ( ! listed( &n ) ) abort( "(Sequence &)%p.succ( %p ) : Node is not on a list.", &s, &n ); 58 #endif // __CFA_DEBUG__ 59 return Next( &n ) == &head( s ) ? *0p : *Next( &n ); 60 } // post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *s 59 61 60 62 // Return a pointer to the element before *n, or 0p if there isn't one. 61 T * pred( Sequence(T) & s, T *n ) with( s ) { // pre: *n in *s62 #ifdef __CFA_DEBUG__ 63 if ( ! listed( n ) ) abort( "(Sequence &)%p.pred( %p ) : Node is not on a list.", &s,n );64 #endif // __CFA_DEBUG__ 65 return n == &head( s ) ? 0p : Back(n );63 T & pred( Sequence(T) & s, T & n ) with( s ) { // pre: *n in *s 64 #ifdef __CFA_DEBUG__ 65 if ( ! listed( &n ) ) abort( "(Sequence &)%p.pred( %p ) : Node is not on a list.", &s, &n ); 66 #endif // __CFA_DEBUG__ 67 return &n == &head( s ) ? *0p : *Back( &n ); 66 68 } // post: n == head() & head(n) == 0 | n != head() & *pred(n) in *s 67 69 … … 135 137 if ( &n == &head( s ) ) { 136 138 if ( Next( &head( s ) ) == &head( s ) ) root = 0p; 137 else root = Next( &head( s ) );139 else root = Next( &head(s ) ); 138 140 } // if 139 141 Back( Next( &n ) ) = Back( &n ); … … 225 227 curr = &head( s ); 226 228 } // post: elts = null. 227 228 void ?{}( SeqIter(T) & si, Sequence(T) & s, T & start ) with( si ) { 229 ((ColIter &) si){}; 230 seq = &s; 231 curr = &start; 232 } // post: elts = null. 233 229 234 230 void over( SeqIter(T) & si, Sequence(T) & s ) with( si ) { 235 231 seq = &s; … … 240 236 if ( curr ) { 241 237 &tp = Curr( si ); 242 T * n = succ( *seq,Curr( si ) );238 T * n = &succ( *seq, *Curr( si ) ); 243 239 curr = n == &head( *seq ) ? 0p : n; 244 240 } else &tp = 0p; … … 265 261 curr = &tail( s ); 266 262 } // post: elts = null. 267 268 void ?{}( SeqIterRev(T) & si, Sequence(T) & s, T & start ) with( si ) { 269 ((ColIter &) si){}; 270 seq = &s; 271 curr = &start; 272 } // post: elts = null. 273 263 274 264 void over( SeqIterRev(T) & si, Sequence(T) & s ) with( si ) { 275 265 seq = &s; … … 280 270 if ( curr ) { 281 271 &tp = Curr( si ); 282 T * n = pred( *seq,Curr( si ) );272 T * n = &pred( *seq, *Curr( si ) ); 283 273 curr = n == &tail( *seq ) ? 0p : n; 284 274 } else &tp = 0p; … … 289 279 290 280 // Local Variables: // 291 // compile-command: " cfa sequence.hfa" //281 // compile-command: "make install" // 292 282 // End: //
Note:
See TracChangeset
for help on using the changeset viewer.