]> Creatis software - cpMesh.git/blob - lib/cpm/Algorithms/QuadEdge/MeshFunctionBase.h
First commit
[cpMesh.git] / lib / cpm / Algorithms / QuadEdge / MeshFunctionBase.h
1 #ifndef __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__
2 #define __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__
3
4 #include <itkObject.h>
5 #include <itkObjectFactory.h>
6
7 namespace cpm
8 {
9   namespace Algorithms
10   {
11     namespace QuadEdge
12     {
13       /**
14        */
15       template< class M, class I, class O >
16       class MeshFunctionBase
17         : public itk::Object
18       {
19       public:
20         typedef MeshFunctionBase                Self;
21         typedef itk::Object                     Superclass;
22         typedef itk::SmartPointer< Self >       Pointer;
23         typedef itk::SmartPointer< const Self > ConstPointer;
24
25         typedef M TMesh;
26         typedef I TInput;
27         typedef O TOutput;
28
29       public:
30         itkTypeMacro( MeshFunctionBase, itkObject );
31
32         itkGetObjectMacro( Mesh, M );
33         itkSetObjectMacro( Mesh, M );
34
35       public:
36         virtual O Evaluate( const I& input ) = 0;
37
38       protected:
39         MeshFunctionBase( )
40           : Superclass( ),
41             m_Mesh( NULL )
42           { }
43         virtual ~MeshFunctionBase( )
44           { }
45
46       private:
47         // Purposely not implemented
48         MeshFunctionBase( const Self& );
49         void operator=( const Self& );
50
51       protected:
52         typename M::Pointer m_Mesh;
53       };
54
55     } // ecapseman
56
57   } // ecapseman
58
59 } // ecapseman
60
61 #endif // __CPM__ALGORITHMS__QUADEDGE__MESHFUNCTIONBASE__H__
62
63 // eof - $RCSfile$