36 #ifndef CIRCULARMULTICHANNELBUFFEROLD_H
37 #define CIRCULARMULTICHANNELBUFFEROLD_H
89 template<
typename _Tp>
95 typedef QSharedPointer<CircularMultiChannelBuffer_old>
SPtr;
96 typedef QSharedPointer<const CircularMultiChannelBuffer_old>
ConstSPtr;
127 inline void push(
unsigned int uiChannel,
const _Tp* pArray,
unsigned int size);
136 inline void push(
unsigned int uiChannel,
const _Tp& newElement);
144 inline void push(
const QVector<_Tp>& newElements);
152 inline QVector<_Tp>
pop();
161 inline _Tp
pop(
unsigned int uiChannel);
177 QVector< CircularBuffer_old<_Tp>* >* m_qVecBuffers;
179 unsigned int m_uiMaxNumElements;
190 template<
typename _Tp>
192 :
Buffer(typeid(_Tp).name())
194 , m_uiMaxNumElements(uiMaxNumElements)
202 template<
typename _Tp>
206 delete m_qVecBuffers;
212 template<
typename _Tp>
220 for (
typename QVector<
CircularBuffer_old<_Tp>* >::iterator i = m_qVecBuffers->begin(); i != m_qVecBuffers->end(); ++i) {
229 template<
typename _Tp>
232 return m_qVecBuffers->size();
238 template<
typename _Tp>
241 m_qVecBuffers[uiChannel]->push(pArray, size);
247 template<
typename _Tp>
250 (*m_qVecBuffers)[uiChannel]->push(newElement);
256 template<
typename _Tp>
259 for(
int i = 0; i < newElements.size(); ++i)
260 (*m_qVecBuffers)[i]->push(newElements[i]);
266 template<
typename _Tp>
269 QVector<_Tp> elements;
271 for (
typename QVector<
CircularBuffer_old<_Tp>* >::iterator i = m_qVecBuffers->begin(); i != m_qVecBuffers->end(); ++i) {
272 elements.push_back((*i)->pop());
281 template<
typename _Tp>
284 return (*m_qVecBuffers)[uiNumChannels]->pop();
290 template<
typename _Tp>
293 for (
typename QVector<
CircularBuffer_old<_Tp>* >::iterator i = m_qVecBuffers->begin(); i != m_qVecBuffers->end(); ++i) {
317 #endif // CIRCULARMULTICHANNELBUFFEROLD_H
QSharedPointer< const CircularMultiChannelBuffer_old > ConstSPtr
#define GENERICSSHARED_EXPORT
CircularMultiChannelBuffer_old(unsigned int uiNumChannels, unsigned int uiMaxNumElements)
Contains the declaration of the CircularBuffer_old class.
The TEMPLATE CIRCULAR BUFFER provides a template for thread safe circular buffers.
~CircularMultiChannelBuffer_old()
The TEMPLATE CIRCULAR BUFFER provides a template for thread safe circular buffers.
The Buffer class provides a base class for buffers.
void push(unsigned int uiChannel, const _Tp *pArray, unsigned int size)
QSharedPointer< CircularMultiChannelBuffer_old > SPtr