1 #ifndef __cpPlugins__BaseObjects__Port__h__
2 #define __cpPlugins__BaseObjects__Port__h__
5 #include <cpPlugins/BaseObjects/DataObject.h>
13 class cpPlugins_EXPORT Port
19 Port( bool required = true );
22 virtual void Add( DataObject* o ) = 0;
23 virtual DataObject* Get( unsigned int i = 0 ) = 0;
24 virtual const DataObject* Get( unsigned int i = 0 ) const = 0;
25 virtual unsigned int Size( ) const = 0;
26 virtual bool IsValid( ) const = 0;
28 virtual bool IsRequired( ) const;
29 virtual void Clear( );
31 template< class _TType >
32 inline void Configure( ) { this->m_Sample = _TType::New( ); }
36 DataObject::Pointer m_Sample;
41 class cpPlugins_EXPORT SingleDataPort
45 typedef SingleDataPort Self;
46 typedef Port Superclass;
49 SingleDataPort( bool required = true );
50 virtual ~SingleDataPort( );
52 virtual void Add( DataObject* o ) cpPlugins_OVERRIDE;
53 virtual DataObject* Get( unsigned int i = 0 ) cpPlugins_OVERRIDE;
54 virtual const DataObject* Get( unsigned int i = 0 ) const cpPlugins_OVERRIDE;
55 virtual unsigned int Size( ) const cpPlugins_OVERRIDE;
56 virtual bool IsValid( ) const cpPlugins_OVERRIDE;
57 virtual void Clear( ) cpPlugins_OVERRIDE;
60 DataObject::Pointer m_Data;
65 class cpPlugins_EXPORT OutputPort
66 : public SingleDataPort
69 typedef OutputPort Self;
70 typedef SingleDataPort Superclass;
71 typedef Port BaseClass;
74 OutputPort( bool required = true );
75 virtual ~OutputPort( );
77 void Set( DataObject* o );
82 class cpPlugins_EXPORT InputPort
83 : public SingleDataPort
86 typedef InputPort Self;
87 typedef SingleDataPort Superclass;
88 typedef Port BaseClass;
91 InputPort( bool required = true );
92 virtual ~InputPort( );
97 class cpPlugins_EXPORT MultipleInputsPort
101 typedef MultipleInputsPort Self;
102 typedef Port Superclass;
105 MultipleInputsPort( bool required = true );
106 virtual ~MultipleInputsPort( );
108 virtual void Add( DataObject* o ) cpPlugins_OVERRIDE;
109 virtual DataObject* Get( unsigned int i = 0 ) cpPlugins_OVERRIDE;
110 virtual const DataObject* Get( unsigned int i = 0 ) const cpPlugins_OVERRIDE;
111 virtual unsigned int Size( ) const cpPlugins_OVERRIDE;
112 virtual bool IsValid( ) const cpPlugins_OVERRIDE;
113 virtual void Clear( ) cpPlugins_OVERRIDE;
116 std::vector< DataObject::Pointer > m_Data;
123 #endif // __cpPlugins__BaseObjects__Port__h__