#ifndef __FPA__BASE__INCREMENTALREGIONGROW__HXX__ #define __FPA__BASE__INCREMENTALREGIONGROW__HXX__ // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > typename fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: TGrowingFunction* fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: GetGrowingFunction( unsigned int i ) { if( i < this->m_Functions.size( ) ) return( this->m_Functions[ i ] ); else return( NULL ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > const typename fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: TGrowingFunction* fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: GetGrowingFunction( unsigned int i ) const { if( i < this->m_Functions.size( ) ) return( this->m_Functions[ i ] ); else return( NULL ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > unsigned long fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: GetGrowingFunctionVolume( unsigned int i ) const { if( i < this->m_Volumes.size( ) ) return( this->m_Volumes[ i ] ); else return( NULL ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > unsigned int fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: GetNumberOfGrowingFunctions( ) const { return( this->m_Functions.size( ) ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: ClearGrowingFunctions( ) { this->m_Functions.clear( ); this->m_Volumes.clear( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > unsigned int fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: AddGrowingFunction( TGrowingFunction* function ) { this->m_Functions.push_back( function ); this->m_Volumes.push_back( 0 ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: IncrementalRegionGrow( ) : Superclass( ) { } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: ~IncrementalRegionGrow( ) { } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: _BeforeGenerateData( ) { this->Superclass::_BeforeGenerateData( ); this->m_ActualFunction = 0; } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: _AfterLoop( ) { /* TODO this->Superclass::_AfterLoop( ); // Replace queue this->_QueueClear( ); while( !( this->m_AuxiliaryQueue.empty( ) ) ) { // Get node _TNode node = this->m_AuxiliaryQueue.front( ); this->m_AuxiliaryQueue.pop( ); this->_QueuePush( node ); // Unmark it typename _TMarks::iterator mIt = this->m_Marks.find( node.Vertex ); if( mIt != this->m_Marks.end( ) ) this->m_Marks.erase( mIt ); } // elihw // Move to next function this->m_ActualFunction++; */ } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > void fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: _Loop( ) { while( this->m_ActualFunction < this->m_Functions.size( ) ) this->Superclass::_Loop( ); } // ------------------------------------------------------------------------- template< class V, class R, class VV, class VC, class B > bool fpa::Base::IncrementalRegionGrow< V, R, VV, VC, B >:: _CheckMembership( const TVertex& v ) const { /* TODO if( this->m_ActualFunction < this->m_Functions.size( ) ) { bool ret = this->m_Functions[ this->m_ActualFunction ]->Evaluate( v ); if( !ret ) this->m_AuxiliaryQueue.push( n ); else this->m_Volumes[ this->m_ActualFunction ]++; return( ret ); } else return( false ); */ return( false ); } #endif // __FPA__BASE__INCREMENTALREGIONGROW__HXX__ // eof - $RCSfile$