#ifndef __CPPLUGINS__PORT__H__ #define __CPPLUGINS__PORT__H__ #include namespace cpPlugins { /** */ class cpPlugins_EXPORT Port { public: typedef Port Self; public: Port( ); virtual ~Port( ); 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( ) ); } inline void SetPointer( DataObject* ptr ) { this->m_Data = ptr; } protected: cpPlugins::DataObject::Pointer m_Data; }; /** */ class cpPlugins_EXPORT InputPort : public Port { public: typedef InputPort Self; typedef Port Superclass; public: InputPort( bool required = false ); virtual ~InputPort( ); 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_EXPORT OutputPort : public Port { public: typedef OutputPort Self; typedef Port Superclass; public: OutputPort( ); virtual ~OutputPort( ); Self& operator=( DataObject* obj ); Self& operator=( const Superclass& other ); }; } // ecapseman #endif // __CPPLUGINS__PORT__H__ // eof - $RCSfile$