#ifndef __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__ #define __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__ // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > unsigned int fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: GetNumberOfMembershipFunctions( ) const { return( this->m_Functions.size( ) ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: ClearMembershipFunctions( ) { this->m_Functions.clear( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: AddMembershipFunction( TMembershipFunction* function ) { this->m_Functions.push_back( function ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: RegionGrowWithMultipleCriteria( ) : Superclass( ) { } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: ~RegionGrowWithMultipleCriteria( ) { } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: _BeforeLoop( ) { this->_BeforeLoop( ); this->m_ActualFunction = this->m_Functions.begin( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > typename fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: _TNode fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: _QueuePop( ) { _TNode node = this->Superclass::_QueuePop( ); if( this->_IsQueueEmpty( ) ) { std::cerr << "ERROR!!!!" << std::endl; } // fi return( node ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > bool fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >:: _CheckMembership( const _TNode& n ) const { bool ret = ( *( this->m_ActualFunction ) )->Evaluate( n.Vertex ); if( !ret ) this->m_AuxiliaryQueue.push( n ); return( ret ); } #endif // __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__ // eof - $RCSfile$