+// -------------------------------------------------------------------------
+template< class O >
+void cpPlugins::Interface::ProcessObject::
+_AddOutput( const std::string& name )
+{
+ auto i = this->m_Outputs.find( name );
+ if( i == this->m_Outputs.end( ) )
+ {
+ typename O::Pointer o = O::New( );
+ o->SetSource( this );
+ this->m_Outputs[ name ] = o;
+ this->Modified( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+template< class F >
+F* cpPlugins::Interface::ProcessObject::
+_CreateITK( )
+{
+ F* filter = this->GetITK< F >( );
+ if( filter == NULL )
+ {
+ typename F::Pointer filter_ptr = F::New( );
+ this->m_ITKObject = filter_ptr;
+ this->m_VTKObject = NULL;
+ filter = filter_ptr.GetPointer( );
+ this->Modified( );
+
+ } // fi
+ return( filter );
+}
+
+// -------------------------------------------------------------------------
+template< class F >
+F* cpPlugins::Interface::ProcessObject::
+_CreateVTK( )
+{
+ F* filter = this->GetVTK< F >( );
+ if( filter == NULL )
+ {
+ vtkSmartPointer< F > filter_ptr = vtkSmartPointer< F >::New( );
+ this->m_ITKObject = NULL;
+ this->m_VTKObject = filter_ptr;
+ filter = filter_ptr.GetPointer( );
+ this->Modified( );
+
+ } // fi
+ return( filter );
+}
+