Changes in libcfa/src/bits/containers.hfa [768bd556:92e7631]
- File:
-
- 1 edited
-
libcfa/src/bits/containers.hfa (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/bits/containers.hfa
r768bd556 r92e7631 146 146 static inline forall( dtype T | is_node(T) ) { 147 147 void ?{}( __queue(T) & this ) with( this ) { 148 head{ 0p };148 head{ 1p }; 149 149 tail{ &head }; 150 verify(*tail == 1p); 150 151 } 151 152 152 153 void append( __queue(T) & this, T * val ) with( this ) { 153 154 verify(tail != 0p); 155 verify(*tail == 1p); 154 156 *tail = val; 155 157 tail = &get_next( *val ); 158 *tail = 1p; 156 159 } 157 160 158 161 T * pop_head( __queue(T) & this ) { 162 verify(*this.tail == 1p); 159 163 T * head = this.head; 160 if( head ) {164 if( head != 1p ) { 161 165 this.head = get_next( *head ); 162 if( !get_next( *head )) {166 if( get_next( *head ) == 1p ) { 163 167 this.tail = &this.head; 164 168 } 165 169 get_next( *head ) = 0p; 166 } 167 return head; 170 verify(*this.tail == 1p); 171 verify( get_next(*head) == 0p ); 172 return head; 173 } 174 verify(*this.tail == 1p); 175 return 0p; 168 176 } 169 177 … … 180 188 get_next( *val ) = 0p; 181 189 182 verify( (head == 0p) == (&head == tail) );183 verify( *tail == 0p );190 verify( (head == 1p) == (&head == tail) ); 191 verify( *tail == 1p ); 184 192 return val; 185 193 } … … 266 274 return this.head != 0; 267 275 } 276 277 void move_to_front( __dllist(T) & src, __dllist(T) & dst, T & node ) { 278 remove (src, node); 279 push_front(dst, node); 280 } 268 281 } 269 282 #undef next
Note:
See TracChangeset
for help on using the changeset viewer.