#ifndef __FPA__BASE__REGIONGROWING__HXX__ #define __FPA__BASE__REGIONGROWING__HXX__ // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > fpa::Base::RegionGrow< V, C, R, S, VC, B >:: RegionGrow( ) : Superclass( ), m_InsideValue( TResult( 1 ) ), m_OutsideValue( TResult( 0 ) ) { } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > fpa::Base::RegionGrow< V, C, R, S, VC, B >:: ~RegionGrow( ) { } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > bool fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _CheckMembership( const TVertex& v ) const { if( this->m_GrowingFunction.IsNotNull( ) ) return( this->m_GrowingFunction->Evaluate( v ) ); else return( false ); } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > bool fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _ComputeNeighborResult( TResult& result, const TVertex& neighbor, const TVertex& parent ) const { if( this->_CheckMembership( neighbor ) ) { result = this->m_InsideValue; return( true ); } else { result = this->m_OutsideValue; return( false ); } // fi } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > bool fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _IsQueueEmpty( ) const { return( this->m_Queue.empty( ) ); } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > void fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _QueuePush( const TVertex& v, const _TNode& n ) { this->m_Queue.push( std::pair< TVertex, _TNode >( v, n ) ); } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > void fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _QueuePop( TVertex& v, _TNode& n ) { v = this->m_Queue.front( ).first; n = this->m_Queue.front( ).second; this->m_Queue.pop( ); } // ------------------------------------------------------------------------- template< class V, class C, class R, class S, class VC, class B > void fpa::Base::RegionGrow< V, C, R, S, VC, B >:: _QueueClear( ) { while( this->m_Queue.size( ) > 0 ) this->m_Queue.pop( ); } #endif // __FPA__BASE__REGIONGROWING__HXX__ // eof - $RCSfile$