1 #ifndef __cpPlugins__Pipeline__Functor__h__
2 #define __cpPlugins__Pipeline__Functor__h__
4 #include <cpPlugins/Pipeline/ProcessObject.h>
6 // -------------------------------------------------------------------------
13 class cpPlugins_EXPORT Functor
14 : public ProcessObject
18 typedef ProcessObject Superclass;
19 typedef itk::SmartPointer< Self > Pointer;
20 typedef itk::SmartPointer< const Self > ConstPointer;
23 itkTypeMacro( Functor, ProcessObject );
24 cpPlugins_Id_Macro( Functor, Object );
27 virtual void Instantiate( itk::LightObject* filter ) = 0;
29 template< class _TFunctor >
30 _TFunctor* GetFunctor( )
33 dynamic_cast< _TFunctor* >( this->m_Functor.GetPointer( ) )
37 template< class _TFunctor >
38 const _TFunctor* GetFunctor( ) const
41 dynamic_cast< const _TFunctor* >( this->m_Functor.GetPointer( ) )
50 // Purposely not implemented
51 Functor( const Self& );
52 Self& operator=( const Self& );
55 itk::LightObject::Pointer m_Functor;
62 #endif // __cpPlugins__Pipeline__Functor__h__