]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/BaseObjects/Port.h
Cast image filter added. ROI filter modified.
[cpPlugins.git] / lib / cpPlugins / BaseObjects / Port.h
1 #ifndef __cpPlugins__BaseObjects__Port__h__
2 #define __cpPlugins__BaseObjects__Port__h__
3
4 #include <vector>
5 #include <cpPlugins/BaseObjects/DataObject.h>
6
7 namespace cpPlugins
8 {
9   namespace BaseObjects
10   {
11     /**
12      */
13     class cpPlugins_EXPORT Port
14     {
15     public:
16       typedef Port Self;
17
18     public:
19       Port( bool required = true );
20       virtual ~Port( );
21
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;
27
28       virtual bool IsRequired( ) const;
29       virtual void Clear( );
30
31       template< class _TType >
32       inline void Configure( ) { this->m_Sample = _TType::New( ); }
33
34     protected:
35       bool                m_Required;
36       DataObject::Pointer m_Sample;
37     };
38
39     /**
40      */
41     class cpPlugins_EXPORT SingleDataPort
42       : public Port
43     {
44     public:
45       typedef SingleDataPort Self;
46       typedef Port           Superclass;
47
48     public:
49       SingleDataPort( bool required = true );
50       virtual ~SingleDataPort( );
51
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;
58
59     protected:
60       DataObject::Pointer m_Data;
61     };
62
63     /**
64      */
65     class cpPlugins_EXPORT OutputPort
66       : public SingleDataPort
67     {
68     public:
69       typedef OutputPort     Self;
70       typedef SingleDataPort Superclass;
71       typedef Port           BaseClass;
72
73     public:
74       OutputPort( bool required = true );
75       virtual ~OutputPort( );
76
77       void Set( DataObject* o );
78     };
79
80     /**
81      */
82     class cpPlugins_EXPORT InputPort
83       : public SingleDataPort
84     {
85     public:
86       typedef InputPort      Self;
87       typedef SingleDataPort Superclass;
88       typedef Port           BaseClass;
89
90     public:
91       InputPort( bool required = true );
92       virtual ~InputPort( );
93     };
94
95     /**
96      */
97     class cpPlugins_EXPORT MultipleInputsPort
98       : public Port
99     {
100     public:
101       typedef MultipleInputsPort Self;
102       typedef Port               Superclass;
103
104     public:
105       MultipleInputsPort( bool required = true );
106       virtual ~MultipleInputsPort( );
107
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;
114
115       void Delete( unsigned int id );
116
117     protected:
118       std::vector< DataObject::Pointer > m_Data;
119     };
120
121   } // ecapseman
122
123 } // ecapseman
124
125 #endif // __cpPlugins__BaseObjects__Port__h__
126
127 // eof - $RCSfile$