]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/RegionGrowWithMultipleCriteria.hxx
34420b24ad029a8e3164486082e632def436e652
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrowWithMultipleCriteria.hxx
1 #ifndef __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
2 #define __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
3
4 // -------------------------------------------------------------------------
5 template< class V, class R, class VV, class VC, class B >
6 unsigned int fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
7 GetNumberOfMembershipFunctions( ) const
8 {
9   return( this->m_Functions.size( ) );
10 }
11
12 // -------------------------------------------------------------------------
13 template< class V, class R, class VV, class VC, class B >
14 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
15 ClearMembershipFunctions( )
16 {
17   this->m_Functions.clear( );
18   this->Modified( );
19 }
20
21 // -------------------------------------------------------------------------
22 template< class V, class R, class VV, class VC, class B >
23 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
24 AddMembershipFunction( TMembershipFunction* function )
25 {
26   this->m_Functions.push_back( function );
27   this->Modified( );
28 }
29
30 // -------------------------------------------------------------------------
31 template< class V, class R, class VV, class VC, class B >
32 fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
33 RegionGrowWithMultipleCriteria( )
34   : Superclass( )
35 {
36 }
37
38 // -------------------------------------------------------------------------
39 template< class V, class R, class VV, class VC, class B >
40 fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
41 ~RegionGrowWithMultipleCriteria( )
42 {
43 }
44
45 // -------------------------------------------------------------------------
46 template< class V, class R, class VV, class VC, class B >
47 void fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
48 _BeforeLoop( )
49 {
50   this->_BeforeLoop( );
51   this->m_ActualFunction = this->m_Functions.begin( );
52 }
53
54 // -------------------------------------------------------------------------
55 template< class V, class R, class VV, class VC, class B >
56 typename fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
57 _TNode fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
58 _QueuePop( )
59 {
60   _TNode node = this->Superclass::_QueuePop( );
61   if( this->_IsQueueEmpty( ) )
62   {
63     std::cerr << "ERROR!!!!" << std::endl;
64
65   } // fi
66   return( node );
67 }
68
69 // -------------------------------------------------------------------------
70 template< class V, class R, class VV, class VC, class B >
71 bool fpa::Base::RegionGrowWithMultipleCriteria< V, R, VV, VC, B >::
72 _CheckMembership( const _TNode& n ) const
73 {
74   bool ret = ( *( this->m_ActualFunction ) )->Evaluate( n.Vertex );
75   if( !ret )
76     this->m_AuxiliaryQueue.push( n );
77   return( ret );
78 }
79
80 #endif // __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__HXX__
81
82 // eof - $RCSfile$