3 |
* LinuxSampler - modular, streaming capable sampler * |
* LinuxSampler - modular, streaming capable sampler * |
4 |
* * |
* * |
5 |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
6 |
* Copyright (C) 2005 - 2008 Christian Schoenebeck * |
* Copyright (C) 2005 - 2012 Christian Schoenebeck * |
7 |
* * |
* * |
8 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
9 |
* it under the terms of the GNU General Public License as published by * |
* it under the terms of the GNU General Public License as published by * |
381 |
RTList(Pool<T>* pPool) : RTListBase<T>::RTListBase() { |
RTList(Pool<T>* pPool) : RTListBase<T>::RTListBase() { |
382 |
this->pPool = pPool; |
this->pPool = pPool; |
383 |
} |
} |
384 |
|
|
385 |
|
/** |
386 |
|
* Copy constructor |
387 |
|
*/ |
388 |
|
RTList(RTList<T>& list) : RTListBase<T>::RTListBase() { |
389 |
|
this->pPool = list.pPool; |
390 |
|
Iterator it = list.first(); |
391 |
|
Iterator end = list.end(); |
392 |
|
for(; it != end; ++it) { |
393 |
|
if (poolIsEmpty()) break; |
394 |
|
*(allocAppend()) = *it; |
395 |
|
} |
396 |
|
} |
397 |
|
|
398 |
virtual ~RTList() { |
virtual ~RTList() { |
399 |
clear(); |
clear(); |
406 |
inline Iterator allocAppend() { |
inline Iterator allocAppend() { |
407 |
if (pPool->poolIsEmpty()) return RTListBase<T>::begin(); |
if (pPool->poolIsEmpty()) return RTListBase<T>::begin(); |
408 |
Iterator element = pPool->alloc(); |
Iterator element = pPool->alloc(); |
409 |
append(element); |
this->append(element); |
410 |
#if CONFIG_DEVMODE |
#if CONFIG_DEVMODE |
411 |
element.list = this; |
element.list = this; |
412 |
#endif // CONFIG_DEVMODE |
#endif // CONFIG_DEVMODE |