]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/BaseObjects/DataObject.h
debug finished
[cpPlugins.git] / lib / cpPlugins / BaseObjects / DataObject.h
1 #ifndef __cpPlugins__BaseObjects__DataObject__h__
2 #define __cpPlugins__BaseObjects__DataObject__h__
3
4 #include <cpPlugins/BaseObjects/Object.h>
5
6 namespace cpPlugins
7 {
8   namespace BaseObjects
9   {
10     // Some forward declarations
11     class ProcessObject;
12
13     /**
14      */
15     class cpPlugins_EXPORT DataObject
16       : public Object
17     {
18       friend class ProcessObject;
19
20     public:
21       typedef DataObject                      Self;
22       typedef Object                          Superclass;
23       typedef itk::SmartPointer< Self >       Pointer;
24       typedef itk::SmartPointer< const Self > ConstPointer;
25
26     public:
27       cpPluginsNewMacro( Self );
28       itkTypeMacro( DataObject, Object );
29       cpPlugins_Id_Macro( DataObject, Object );
30
31     public:
32       virtual bool IsCompatible( const Self* other ) const;
33
34       ProcessObject* GetSource( );
35       const ProcessObject* GetSource( ) const;
36       void SetSource( ProcessObject* src );
37
38       void DisconnectFromPipeline( );
39
40     protected:
41       DataObject( );
42       virtual ~DataObject( );
43
44       template< class _TType >
45       inline bool _DisconnectVTK( );
46
47     private:
48       // Purposely not implemented
49       DataObject( const Self& );
50       Self& operator=( const Self& );
51
52     protected:
53       ProcessObject* m_Source;
54     };
55
56   } // ecapseman
57
58 } // ecapseman
59
60 #endif // __cpPlugins__BaseObjects__DataObject__h__
61
62 // eof - $RCSfile$