1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __cpPlugins__Ports__h__
5 #define __cpPlugins__Ports__h__
8 #include <cpPlugins/Config.h>
18 class CPPLUGINS_EXPORT BasePort
27 class CPPLUGINS_EXPORT InputPort
31 typedef InputPort Self;
32 typedef BasePort Superclass;
34 typedef std::shared_ptr< DataObject > SharedPtr;
35 typedef std::weak_ptr< DataObject > WeakPtr;
39 virtual ~InputPort( );
41 template< class _TObject >
42 void Configure( bool required, bool multiple )
44 this->m_Required = required;
45 this->m_Multiple = multiple;
46 this->m_Data.clear( );
47 this->m_Template = _TObject::New( );
50 DataObject* Get( const unsigned int& i );
51 const DataObject* Get( const unsigned int& i ) const;
52 unsigned int Count( ) const;
53 bool IsValid( ) const;
54 bool Set( DataObject* data );
58 std::vector< SharedPtr > m_Data;
66 class CPPLUGINS_EXPORT OutputPort
70 typedef OutputPort Self;
71 typedef BasePort Superclass;
73 typedef std::shared_ptr< DataObject > SharedPtr;
74 typedef std::weak_ptr< DataObject > WeakPtr;
78 virtual ~OutputPort( );
81 const DataObject* Get( ) const;
83 template< class _TObject >
86 this->m_Data = _TObject::New( );
95 class CPPLUGINS_EXPORT FunctorPort
99 typedef FunctorPort Self;
100 typedef BasePort Superclass;
102 typedef std::shared_ptr< Functor > SharedPtr;
103 typedef std::weak_ptr< Functor > WeakPtr;
107 virtual ~FunctorPort( );
109 template< class _TFunctor >
110 void Configure( bool required )
112 this->m_Required = required;
116 const Functor* Get( ) const;
117 bool Set( Functor* f );
126 #endif // __cpPlugins__Ports__h__