#ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__ // ------------------------------------------------------------------------- template< class T > T* cpPlugins::Interface::ProcessObject:: GetInputData( const std::string& id ) { auto i = this->m_Inputs.find( id ); if( i != this->m_Inputs.end( ) ) return( dynamic_cast< T* >( i->second.GetPointer( ) ) ); else return( NULL ); } // ------------------------------------------------------------------------- template< class T > const T* cpPlugins::Interface::ProcessObject:: GetInputData( const std::string& id ) const { auto i = this->m_Inputs.find( id ); if( i != this->m_Inputs.end( ) ) return( dynamic_cast< const T* >( i->second.GetPointer( ) ) ); else return( NULL ); } // ------------------------------------------------------------------------- template< class T > T* cpPlugins::Interface::ProcessObject:: GetOutputData( const std::string& id ) { auto i = this->m_Outputs.find( id ); if( i != this->m_Outputs.end( ) ) return( dynamic_cast< T* >( i->second.GetPointer( ) ) ); else return( NULL ); } // ------------------------------------------------------------------------- template< class T > const T* cpPlugins::Interface::ProcessObject:: GetOutputData( const std::string& id ) const { auto i = this->m_Outputs.find( id ); if( i != this->m_Outputs.end( ) ) return( dynamic_cast< const T* >( i->second.GetPointer( ) ) ); else return( NULL ); } // ------------------------------------------------------------------------- template< class O > void cpPlugins::Interface::ProcessObject:: _AddOutput( const std::string& name ) { typedef typename _TDataContainer::value_type _TValue; 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->SetITK( filter_ptr.GetPointer( ) ); this->SetVTK( 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->SetITK( NULL ); this->SetVTK( filter_ptr ); filter = filter_ptr.GetPointer( ); this->Modified( ); } // fi return( filter ); } #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__HXX__ // eof - $RCSfile$