#ifndef __cpPlugins__BaseObjects__DataObject__h__ #define __cpPlugins__BaseObjects__DataObject__h__ #include namespace cpPlugins { namespace BaseObjects { // Some forward declarations class ProcessObject; /** */ class cpPlugins_EXPORT DataObject : public Object { friend class ProcessObject; public: typedef DataObject Self; typedef Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: cpPluginsNewMacro( Self ); itkTypeMacro( DataObject, Object ); cpPlugins_Id_Macro( DataObject, Object ); public: virtual bool IsCompatible( const Self* other ) const; ProcessObject* GetSource( ); const ProcessObject* GetSource( ) const; void SetSource( ProcessObject* src ); void DisconnectFromPipeline( ); protected: DataObject( ); virtual ~DataObject( ); template< class _TType > inline bool _DisconnectVTK( ); private: // Purposely not implemented DataObject( const Self& ); Self& operator=( const Self& ); protected: ProcessObject* m_Source; }; } // ecapseman } // ecapseman #endif // __cpPlugins__BaseObjects__DataObject__h__ // eof - $RCSfile$