// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Functors__BaseVertexFunction__h__ #define __fpa__Functors__BaseVertexFunction__h__ #include #include namespace fpa { namespace Functors { /** */ template< class _TVertex > class LightBaseVertexFunction : public itk::Object { public: typedef _TVertex TVertex; typedef itk::Object Superclass; typedef LightBaseVertexFunction Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: itkTypeMacro( fpa::Functors::LightBaseVertexFunction, itk::Object ); itkSetConstObjectMacro( DataObject, itk::DataObject ); public: template< class _TDataObject = itk::DataObject > const _TDataObject* GetDataObject( ) const { return( dynamic_cast< const _TDataObject* >( this->m_DataObject.GetPointer( ) ) ); } protected: LightBaseVertexFunction( ) : Superclass( ), m_DataObject( NULL ) { } virtual ~LightBaseVertexFunction( ) { } private: // Purposely not implemented. LightBaseVertexFunction( const Self& other ); Self& operator=( const Self& other ); protected: itk::DataObject::ConstPointer m_DataObject; }; /** */ template< class _TVertex, class _TValue > class BaseVertexFunction : public LightBaseVertexFunction< _TVertex > { public: typedef _TVertex TVertex; typedef _TValue TValue; typedef LightBaseVertexFunction< _TVertex > Superclass; typedef BaseVertexFunction Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: itkTypeMacro( fpa::Functors::RegionGrow::BaseVertexFunction, fpa::Functors::RegionGrow::LightBaseVertexFunction ); public: virtual TValue Evaluate( const TVertex& vertex, const TVertex& parent ) const = 0; protected: BaseVertexFunction( ) : Superclass( ) { } virtual ~BaseVertexFunction( ) { } private: // Purposely not implemented. BaseVertexFunction( const Self& other ); Self& operator=( const Self& other ); }; } // ecapseman } // ecapseman #endif // __fpa__Functors__BaseVertexFunction__h__ // eof - $RCSfile$