// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Filters__QueueAlgorithm__hxx__ #define __fpa__Filters__QueueAlgorithm__hxx__ // ------------------------------------------------------------------------- template< class _TDataInterface > fpa::Filters::QueueAlgorithm< _TDataInterface >:: QueueAlgorithm( bool double_buffer ) : Superclass( ), m_CurrQueue( 0 ), m_DoubleBuffer( double_buffer ) { } // ------------------------------------------------------------------------- template< class _TDataInterface > fpa::Filters::QueueAlgorithm< _TDataInterface >:: ~QueueAlgorithm( ) { } // ------------------------------------------------------------------------- template< class _TDataInterface > void fpa::Filters::QueueAlgorithm< _TDataInterface >:: _QueueSwap( ) { if( this->m_DoubleBuffer ) this->m_CurrQueue = ( this->m_CurrQueue + 1 ) % 2; else this->m_CurrQueue = 0; } // ------------------------------------------------------------------------- template< class _TDataInterface > void fpa::Filters::QueueAlgorithm< _TDataInterface >:: _QueueClear( ) { this->m_Queues[ 0 ].clear( ); this->m_Queues[ 1 ].clear( ); this->m_CurrQueue = 0; } // ------------------------------------------------------------------------- template< class _TDataInterface > typename fpa::Filters::QueueAlgorithm< _TDataInterface >:: TNode fpa::Filters::QueueAlgorithm< _TDataInterface >:: _QueuePop( ) { TNode n = this->m_Queues[ this->m_CurrQueue ].front( ); this->m_Queues[ this->m_CurrQueue ].pop_front( ); return( n ); } // ------------------------------------------------------------------------- template< class _TDataInterface > void fpa::Filters::QueueAlgorithm< _TDataInterface >:: _QueuePush( const TNode& n ) { this->m_Queues[ this->m_CurrQueue ].push_back( n ); } // ------------------------------------------------------------------------- template< class _TDataInterface > unsigned long fpa::Filters::QueueAlgorithm< _TDataInterface >:: _QueueSize( ) const { return( this->m_Queues[ this->m_CurrQueue ].size( ) ); } #endif // __fpa__Filters__QueueAlgorithm__hxx__ // eof - $RCSfile$