#ifndef __CPPLUGINS__INTERFACE__DATAOBJECT__H__ #define __CPPLUGINS__INTERFACE__DATAOBJECT__H__ #include #include #include #include namespace cpPlugins { namespace Interface { // Some forward declarations class ProcessObject; /** */ class cpPlugins_Interface_EXPORT DataObject : public Object { public: typedef DataObject Self; typedef Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: itkNewMacro( Self ); itkTypeMacro( DataObject, Object ); cpPlugins_Id_Macro( DataObject, "BasicObject" ); public: ProcessObject* GetSource( ); const ProcessObject* GetSource( ) const; void SetSource( ProcessObject* src ); void DisconnectPipeline( ); template< class T > inline T* GetITK( ); template< class T > inline const T* GetITK( ) const; template< class T > inline T* GetVTK( ); template< class T > inline const T* GetVTK( ) const; protected: DataObject( ); virtual ~DataObject( ); private: // Purposely not implemented DataObject( const Self& ); Self& operator=( const Self& ); protected: itk::Object::Pointer m_ITKObject; vtkSmartPointer< vtkObject > m_VTKObject; ProcessObject* m_Source; }; } // ecapseman } // ecapseman #include #endif // __CPPLUGINS__INTERFACE__DATAOBJECT__H__ // eof - $RCSfile$