#ifndef __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__ #define __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__ #include #include namespace cpm { namespace Algorithms { namespace QuadEdge { /** */ template< class M, class I, class O > class MeshFunctionBase : public itk::Object { public: typedef MeshFunctionBase Self; typedef itk::Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef M TMesh; typedef I TInput; typedef O TOutput; public: itkTypeMacro( MeshFunctionBase, itkObject ); itkGetObjectMacro( Mesh, M ); itkSetObjectMacro( Mesh, M ); public: virtual O Evaluate( const I& input ) = 0; protected: MeshFunctionBase( ) : Superclass( ), m_Mesh( NULL ) { } virtual ~MeshFunctionBase( ) { } private: // Purposely not implemented MeshFunctionBase( const Self& ); void operator=( const Self& ); protected: typename M::Pointer m_Mesh; }; } // ecapseman } // ecapseman } // ecapseman #endif // __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__ // eof - $RCSfile$