#ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECTPORT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECTPORT__H__ #include namespace cpPlugins { namespace Interface { /** */ class cpPlugins_Interface_EXPORT ProcessObjectPort { public: typedef ProcessObjectPort Self; public: ProcessObjectPort( ); virtual ~ProcessObjectPort( ); Self& operator=( DataObject* obj ); Self& operator=( const Self& other ); bool IsValid( ) const; // This could be seen as a pointer to DataObject's inline DataObject* GetPointer( ) { return( this->m_Data.GetPointer( ) ); } inline const DataObject* GetPointer( ) const { return( this->m_Data.GetPointer( ) ); } inline DataObject* operator->( ) const { return( this->m_Data.GetPointer( ) ); } protected: cpPlugins::Interface::DataObject::Pointer m_Data; }; /** */ class cpPlugins_Interface_EXPORT InputProcessObjectPort : public ProcessObjectPort { public: typedef InputProcessObjectPort Self; typedef ProcessObjectPort Superclass; public: InputProcessObjectPort( bool required = false ); virtual ~InputProcessObjectPort( ); Self& operator=( DataObject* obj ); Self& operator=( const Superclass& other ); bool IsRequired( ) const; void RequiredOn( ); void RequiredOff( ); void SetRequired( bool required ); protected: bool m_Required; }; /** */ class cpPlugins_Interface_EXPORT OutputProcessObjectPort : public ProcessObjectPort { public: typedef OutputProcessObjectPort Self; typedef ProcessObjectPort Superclass; public: OutputProcessObjectPort( ); virtual ~OutputProcessObjectPort( ); Self& operator=( DataObject* obj ); Self& operator=( const Superclass& other ); }; } // ecapseman } // ecapseman #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECTPORT__H__ // eof - $RCSfile$