1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __fpa__Filters__QueueAlgorithm__hxx__
6 #define __fpa__Filters__QueueAlgorithm__hxx__
8 // -------------------------------------------------------------------------
9 template< class _TDataInterface >
10 fpa::Filters::QueueAlgorithm< _TDataInterface >::
11 QueueAlgorithm( bool double_buffer )
14 m_DoubleBuffer( double_buffer )
18 // -------------------------------------------------------------------------
19 template< class _TDataInterface >
20 fpa::Filters::QueueAlgorithm< _TDataInterface >::
25 // -------------------------------------------------------------------------
26 template< class _TDataInterface >
27 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
30 if( this->m_DoubleBuffer )
31 this->m_CurrQueue = ( this->m_CurrQueue + 1 ) % 2;
33 this->m_CurrQueue = 0;
36 // -------------------------------------------------------------------------
37 template< class _TDataInterface >
38 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
41 this->m_Queues[ 0 ].clear( );
42 this->m_Queues[ 1 ].clear( );
43 this->m_CurrQueue = 0;
46 // -------------------------------------------------------------------------
47 template< class _TDataInterface >
48 typename fpa::Filters::QueueAlgorithm< _TDataInterface >::
49 TNode fpa::Filters::QueueAlgorithm< _TDataInterface >::
52 TNode n = this->m_Queues[ this->m_CurrQueue ].front( );
53 this->m_Queues[ this->m_CurrQueue ].pop_front( );
57 // -------------------------------------------------------------------------
58 template< class _TDataInterface >
59 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
60 _QueuePush( const TNode& n )
62 this->m_Queues[ this->m_CurrQueue ].push_back( n );
65 // -------------------------------------------------------------------------
66 template< class _TDataInterface >
67 unsigned long fpa::Filters::QueueAlgorithm< _TDataInterface >::
70 return( this->m_Queues[ this->m_CurrQueue ].size( ) );
73 #endif // __fpa__Filters__QueueAlgorithm__hxx__