]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Filters/QueueAlgorithm.hxx
aa51d5d2cccb3afdc0a422a57dcfdc26c0112d99
[FrontAlgorithms.git] / lib / fpa / Filters / QueueAlgorithm.hxx
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__
7
8 // -------------------------------------------------------------------------
9 template< class _TDataInterface >
10 fpa::Filters::QueueAlgorithm< _TDataInterface >::
11 QueueAlgorithm( bool double_buffer )
12   : Superclass( ),
13     m_CurrQueue( 0 ),
14     m_DoubleBuffer( double_buffer )
15 {
16 }
17
18 // -------------------------------------------------------------------------
19 template< class _TDataInterface >
20 fpa::Filters::QueueAlgorithm< _TDataInterface >::
21 ~QueueAlgorithm( )
22 {
23 }
24
25 // -------------------------------------------------------------------------
26 template< class _TDataInterface >
27 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
28 _QueueSwap( )
29 {
30   if( this->m_DoubleBuffer )
31     this->m_CurrQueue = ( this->m_CurrQueue + 1 ) % 2;
32   else
33     this->m_CurrQueue = 0;
34 }
35
36 // -------------------------------------------------------------------------
37 template< class _TDataInterface >
38 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
39 _QueueClear( )
40 {
41   this->m_Queues[ 0 ].clear( );
42   this->m_Queues[ 1 ].clear( );
43   this->m_CurrQueue = 0;
44 }
45
46 // -------------------------------------------------------------------------
47 template< class _TDataInterface >
48 typename fpa::Filters::QueueAlgorithm< _TDataInterface >::
49 TNode fpa::Filters::QueueAlgorithm< _TDataInterface >::
50 _QueuePop( )
51 {
52   TNode n = this->m_Queues[ this->m_CurrQueue ].front( );
53   this->m_Queues[ this->m_CurrQueue ].pop_front( );
54   return( n );
55 }
56
57 // -------------------------------------------------------------------------
58 template< class _TDataInterface >
59 void fpa::Filters::QueueAlgorithm< _TDataInterface >::
60 _QueuePush( const TNode& n )
61 {
62   this->m_Queues[ this->m_CurrQueue ].push_back( n );
63 }
64
65 // -------------------------------------------------------------------------
66 template< class _TDataInterface >
67 unsigned long fpa::Filters::QueueAlgorithm< _TDataInterface >::
68 _QueueSize( ) const
69 {
70   return( this->m_Queues[ this->m_CurrQueue ].size( ) );
71 }
72
73 #endif // __fpa__Filters__QueueAlgorithm__hxx__
74 // eof - $RCSfile$