1 #include <cpPlugins/Interface/ProcessObject.h>
2 #include <cpPlugins/Interface/DataObject.h>
4 // -------------------------------------------------------------------------
5 cpPlugins::Interface::ProcessObject::
8 m_OutputsDisconnected( false )
12 // -------------------------------------------------------------------------
13 cpPlugins::Interface::ProcessObject::
16 this->_DeleteOutputs( );
19 // -------------------------------------------------------------------------
20 std::string cpPlugins::Interface::ProcessObject::
23 return( "cpPlugins::Interface::ProcessObject" );
26 // -------------------------------------------------------------------------
27 const cpPlugins::Interface::ProcessObject::
28 TParameters& cpPlugins::Interface::ProcessObject::
29 GetDefaultParameters( ) const
31 return( this->m_DefaultParameters );
34 // -------------------------------------------------------------------------
35 void cpPlugins::Interface::ProcessObject::
36 SetParameters( const TParameters& params )
38 this->m_Parameters = params;
41 // -------------------------------------------------------------------------
42 unsigned int cpPlugins::Interface::ProcessObject::
43 GetNumberOfInputs( ) const
45 return( this->m_Inputs.size( ) );
48 // -------------------------------------------------------------------------
49 unsigned int cpPlugins::Interface::ProcessObject::
50 GetNumberOfOutputs( ) const
52 return( this->m_Outputs.size( ) );
55 // -------------------------------------------------------------------------
56 void cpPlugins::Interface::ProcessObject::
57 SetNumberOfInputs( unsigned int n )
59 this->m_Inputs.clear( );
60 this->m_Inputs.resize( n, NULL );
63 // -------------------------------------------------------------------------
64 void cpPlugins::Interface::ProcessObject::
65 SetNumberOfOutputs( unsigned int n )
67 this->_DeleteOutputs( );
68 this->m_Outputs.clear( );
69 this->m_Outputs.resize( n, NULL );
70 this->m_OutputsDisconnected = false;
73 // -------------------------------------------------------------------------
74 void cpPlugins::Interface::ProcessObject::
76 unsigned int idx, const cpPlugins::Interface::DataObject* dobj
79 if( idx < this->m_Inputs.size( ) )
80 this->m_Inputs[ idx ] = dobj;
83 // -------------------------------------------------------------------------
84 cpPlugins::Interface::DataObject* cpPlugins::Interface::ProcessObject::
85 GetOutput( unsigned int idx )
87 if( idx < this->m_Outputs.size( ) )
88 return( this->m_Outputs[ idx ] );
93 // -------------------------------------------------------------------------
94 std::string cpPlugins::Interface::ProcessObject::
97 // Force upstream updates
98 for( unsigned int idx = 0; idx < this->m_Inputs.size( ); ++idx )
99 this->m_Inputs[ idx ]->GetSource( )->Update( );
102 std::string ret = this->_GenerateData( );
103 this->m_OutputsDisconnected = false;
105 // Return error description, if any
109 // -------------------------------------------------------------------------
110 void cpPlugins::Interface::ProcessObject::
113 this->m_OutputsDisconnected = true;
114 for( unsigned int idx = 0; idx < this->m_Outputs.size( ); ++idx )
115 if( this->m_Outputs[ idx ] != NULL )
116 this->m_Outputs[ idx ]->GetDataObject( )->DisconnectPipeline( );
119 // -------------------------------------------------------------------------
120 itk::DataObject* cpPlugins::Interface::ProcessObject::
121 _GetInput( unsigned int idx )
123 if( idx < this->m_Inputs.size( ) )
124 return( this->m_Inputs[ idx ]->GetDataObject( ) );
129 // -------------------------------------------------------------------------
130 void cpPlugins::Interface::ProcessObject::
131 _SetOutput( unsigned int idx, itk::DataObject* dobj )
133 if( idx < this->m_Outputs.size( ) )
134 if( this->m_Outputs[ idx ] != NULL )
135 this->m_Outputs[ idx ]->SetDataObject( dobj );
138 // -------------------------------------------------------------------------
139 void cpPlugins::Interface::ProcessObject::
142 if( !( this->m_OutputsDisconnected ) )
143 for( unsigned int idx = 0; idx < this->m_Outputs.size( ); ++idx )
144 if( this->m_Outputs[ idx ] != NULL )
145 delete this->m_Outputs[ idx ];