#ifndef __cpPlugins__Pipeline__Functor__h__ #define __cpPlugins__Pipeline__Functor__h__ #include // ------------------------------------------------------------------------- namespace cpPlugins { namespace Pipeline { /** */ class cpPlugins_EXPORT Functor : public ProcessObject { public: typedef Functor Self; typedef ProcessObject Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: itkTypeMacro( Functor, ProcessObject ); cpPlugins_Id_Macro( Functor, Object ); public: virtual void Instantiate( itk::LightObject* filter ) = 0; template< class _TFunctor > _TFunctor* GetFunctor( ) { return( dynamic_cast< _TFunctor* >( this->m_Functor.GetPointer( ) ) ); } template< class _TFunctor > const _TFunctor* GetFunctor( ) const { return( dynamic_cast< const _TFunctor* >( this->m_Functor.GetPointer( ) ) ); } protected: Functor( ); virtual ~Functor( ); private: // Purposely not implemented Functor( const Self& ); Self& operator=( const Self& ); protected: itk::LightObject::Pointer m_Functor; }; } // ecapseman } // ecapseman #endif // __cpPlugins__Pipeline__Functor__h__ // eof - $RCSfile$