#ifndef __CPPLUGINS__PROCESSOBJECT__H__ #define __CPPLUGINS__PROCESSOBJECT__H__ #include #include #include #include #include namespace cpPlugins { /** */ class cpPlugins_EXPORT ProcessObject : public Object { public: typedef ProcessObject Self; typedef Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; public: itkTypeMacro( ProcessObject, Object ); cpPlugins_Id_Macro( ProcessObject, Object ); public: Parameters* GetParameters( ); const Parameters* GetParameters( ) const; virtual void SetITK( itk::LightObject* o ) final; virtual void SetVTK( vtkObjectBase* o ) final; // IO management std::set< std::string > GetInputsNames( ) const; std::set< std::string > GetOutputsNames( ) const; unsigned int GetNumberOfInputs( ) const; unsigned int GetNumberOfOutputs( ) const; OutputPort& GetOutput( const std::string& id ); const OutputPort& GetOutput( const std::string& id ) const; DataObject* GetInputData( const std::string& id ); const DataObject* GetInputData( const std::string& id ) const; DataObject* GetOutputData( const std::string& id ); const DataObject* GetOutputData( const std::string& id ) const; bool SetInput( const std::string& id, const OutputPort& port ); void DisconnectInputs( ); void DisconnectOutputs( ); void Disconnect( ); // Pipeline execution virtual itk::ModifiedTimeType GetMTime( ) const; virtual std::string Update( ); // Qt dialog creation virtual ParametersQtDialog* CreateQtDialog( ); virtual bool IsInteractive( ); virtual void SetInteractionObjects( const std::vector< void* >& objs ); protected: ProcessObject( ); virtual ~ProcessObject( ); void _AddInput( const std::string& name, bool required = true ); template< class O > inline void _AddOutput( const std::string& name ); template< class F > inline F* _CreateITK( ); template< class F > inline F* _CreateVTK( ); virtual std::string _GenerateData( ) = 0; private: // Purposely not implemented ProcessObject( const Self& ); Self& operator=( const Self& ); protected: Parameters m_Parameters; typedef std::map< std::string, InputPort > _TInputs; typedef std::map< std::string, OutputPort > _TOutputs; _TInputs m_Inputs; _TOutputs m_Outputs; itk::ModifiedTimeType m_LastExecutionTime; }; } // ecapseman #include #endif // __CPPLUGINS__PROCESSOBJECT__H__ // eof - $RCSfile$