diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-08-20 22:25:50 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-08-20 22:25:50 +0000 |
commit | 539d6bf53bcece62e29d3d7d900b83dc03275b65 (patch) | |
tree | 913ca2fc435fd94ccbbb67b482b3f59a3cdbcb51 /src/list.h | |
parent | f01674e99a467e9eb99323130a1e1add4c57eda2 (diff) | |
download | libbu++-539d6bf53bcece62e29d3d7d900b83dc03275b65.tar.gz libbu++-539d6bf53bcece62e29d3d7d900b83dc03275b65.tar.bz2 libbu++-539d6bf53bcece62e29d3d7d900b83dc03275b65.tar.xz libbu++-539d6bf53bcece62e29d3d7d900b83dc03275b65.zip |
Added a typedef to the cache, and most list manipulation functions now return
a reference to the list, so you can chain appends and whatnot.
Diffstat (limited to 'src/list.h')
-rw-r--r-- | src/list.h | 42 |
1 files changed, 29 insertions, 13 deletions
@@ -239,10 +239,12 @@ namespace Bu | |||
239 | core->clear(); | 239 | core->clear(); |
240 | } | 240 | } |
241 | 241 | ||
242 | void enqueue( const value &v ) | 242 | MyType &enqueue( const value &v ) |
243 | { | 243 | { |
244 | _hardCopy(); | 244 | _hardCopy(); |
245 | append( v ); | 245 | append( v ); |
246 | |||
247 | return *this; | ||
246 | } | 248 | } |
247 | 249 | ||
248 | value dequeue() | 250 | value dequeue() |
@@ -259,13 +261,15 @@ namespace Bu | |||
259 | * Append a value to the list. | 261 | * Append a value to the list. |
260 | *@param v (const value_type &) The value to append. | 262 | *@param v (const value_type &) The value to append. |
261 | */ | 263 | */ |
262 | void append( const value &v ) | 264 | MyType &append( const value &v ) |
263 | { | 265 | { |
264 | _hardCopy(); | 266 | _hardCopy(); |
265 | core->append( v ); | 267 | core->append( v ); |
268 | |||
269 | return *this; | ||
266 | } | 270 | } |
267 | 271 | ||
268 | void append( const MyType &rSrc ) | 272 | MyType &append( const MyType &rSrc ) |
269 | { | 273 | { |
270 | _hardCopy(); | 274 | _hardCopy(); |
271 | for( typename MyType::const_iterator i = rSrc.begin(); | 275 | for( typename MyType::const_iterator i = rSrc.begin(); |
@@ -273,23 +277,27 @@ namespace Bu | |||
273 | { | 277 | { |
274 | core->append( *i ); | 278 | core->append( *i ); |
275 | } | 279 | } |
280 | |||
281 | return *this; | ||
276 | } | 282 | } |
277 | 283 | ||
278 | /** | 284 | /** |
279 | * Prepend a value to the list. | 285 | * Prepend a value to the list. |
280 | *@param v (const value_type &) The value to prepend. | 286 | *@param v (const value_type &) The value to prepend. |
281 | */ | 287 | */ |
282 | void prepend( const value &v ) | 288 | MyType &prepend( const value &v ) |
283 | { | 289 | { |
284 | _hardCopy(); | 290 | _hardCopy(); |
285 | core->prepend( v ); | 291 | core->prepend( v ); |
292 | |||
293 | return *this; | ||
286 | } | 294 | } |
287 | 295 | ||
288 | /** | 296 | /** |
289 | * Prepend another list to the front of this one. This will prepend | 297 | * Prepend another list to the front of this one. This will prepend |
290 | * the rSrc list in reverse order...I may fix that later. | 298 | * the rSrc list in reverse order...I may fix that later. |
291 | */ | 299 | */ |
292 | void prepend( const MyType &rSrc ) | 300 | MyType &prepend( const MyType &rSrc ) |
293 | { | 301 | { |
294 | _hardCopy(); | 302 | _hardCopy(); |
295 | for( typename MyType::const_iterator i = rSrc.begin(); | 303 | for( typename MyType::const_iterator i = rSrc.begin(); |
@@ -297,13 +305,17 @@ namespace Bu | |||
297 | { | 305 | { |
298 | core->prepend( *i ); | 306 | core->prepend( *i ); |
299 | } | 307 | } |
308 | |||
309 | return *this; | ||
300 | } | 310 | } |
301 | 311 | ||
302 | void insert( MyType::iterator &i, const value &v ) | 312 | MyType &insert( MyType::iterator &i, const value &v ) |
303 | { | 313 | { |
304 | _hardCopy(); | 314 | _hardCopy(); |
305 | 315 | ||
306 | core->insert( i.pLink, v ); | 316 | core->insert( i.pLink, v ); |
317 | |||
318 | return *this; | ||
307 | } | 319 | } |
308 | 320 | ||
309 | /** | 321 | /** |
@@ -313,14 +325,14 @@ namespace Bu | |||
313 | * List all items will be sorted. To use this, the value type must | 325 | * List all items will be sorted. To use this, the value type must |
314 | * support the > operator. | 326 | * support the > operator. |
315 | */ | 327 | */ |
316 | void insertSorted( const value &v ) | 328 | MyType &insertSorted( const value &v ) |
317 | { | 329 | { |
318 | _hardCopy(); | 330 | _hardCopy(); |
319 | if( core->pFirst == NULL ) | 331 | if( core->pFirst == NULL ) |
320 | { | 332 | { |
321 | // Empty list | 333 | // Empty list |
322 | core->append( v ); | 334 | core->append( v ); |
323 | return; | 335 | return *this; |
324 | } | 336 | } |
325 | else | 337 | else |
326 | { | 338 | { |
@@ -330,13 +342,13 @@ namespace Bu | |||
330 | if( !core->cmp( v, *(pCur->pValue)) ) | 342 | if( !core->cmp( v, *(pCur->pValue)) ) |
331 | { | 343 | { |
332 | core->insert( pCur, v ); | 344 | core->insert( pCur, v ); |
333 | return; | 345 | return *this; |
334 | } | 346 | } |
335 | pCur = pCur->pNext; | 347 | pCur = pCur->pNext; |
336 | if( pCur == NULL ) | 348 | if( pCur == NULL ) |
337 | { | 349 | { |
338 | core->append( v ); | 350 | core->append( v ); |
339 | return; | 351 | return *this; |
340 | } | 352 | } |
341 | } | 353 | } |
342 | } | 354 | } |
@@ -641,26 +653,30 @@ namespace Bu | |||
641 | * Erase an item from the list. | 653 | * Erase an item from the list. |
642 | *@param i (iterator) The item to erase. | 654 | *@param i (iterator) The item to erase. |
643 | */ | 655 | */ |
644 | void erase( iterator i ) | 656 | MyType &erase( iterator i ) |
645 | { | 657 | { |
646 | _hardCopy(); | 658 | _hardCopy(); |
647 | core->erase( i.pLink ); | 659 | core->erase( i.pLink ); |
660 | |||
661 | return *this; | ||
648 | } | 662 | } |
649 | 663 | ||
650 | /** | 664 | /** |
651 | * Erase an item from the list if you already know the item. | 665 | * Erase an item from the list if you already know the item. |
652 | *@param v The item to find and erase. | 666 | *@param v The item to find and erase. |
653 | */ | 667 | */ |
654 | void erase( const value &v ) | 668 | MyType &erase( const value &v ) |
655 | { | 669 | { |
656 | for( const_iterator i = begin(); i != end(); i++ ) | 670 | for( const_iterator i = begin(); i != end(); i++ ) |
657 | { | 671 | { |
658 | if( (*i) == v ) | 672 | if( (*i) == v ) |
659 | { | 673 | { |
660 | erase( i ); | 674 | erase( i ); |
661 | return; | 675 | return *this; |
662 | } | 676 | } |
663 | } | 677 | } |
678 | |||
679 | return *this; | ||
664 | } | 680 | } |
665 | 681 | ||
666 | /** | 682 | /** |