1 #ifndef __CPPLUGINS__PROCESSOBJECT__H__
2 #define __CPPLUGINS__PROCESSOBJECT__H__
6 #include <cpPlugins/Object.h>
7 #include <cpPlugins/Parameters.h>
8 #include <cpPlugins/Port.h>
14 class cpPlugins_EXPORT ProcessObject
18 typedef ProcessObject Self;
19 typedef Object Superclass;
20 typedef itk::SmartPointer< Self > Pointer;
21 typedef itk::SmartPointer< const Self > ConstPointer;
24 itkTypeMacro( ProcessObject, Object );
25 cpPlugins_Id_Macro( ProcessObject, Object );
28 Parameters* GetParameters( );
29 const Parameters* GetParameters( ) const;
31 virtual void SetITK( itk::LightObject* o ) final;
32 virtual void SetVTK( vtkObjectBase* o ) final;
35 std::set< std::string > GetInputsNames( ) const;
36 std::set< std::string > GetOutputsNames( ) const;
37 unsigned int GetNumberOfInputs( ) const;
38 unsigned int GetNumberOfOutputs( ) const;
40 OutputPort& GetOutput( const std::string& id );
41 const OutputPort& GetOutput( const std::string& id ) const;
43 DataObject* GetInputData( const std::string& id );
44 const DataObject* GetInputData( const std::string& id ) const;
45 DataObject* GetOutputData( const std::string& id );
46 const DataObject* GetOutputData( const std::string& id ) const;
48 bool SetInput( const std::string& id, const OutputPort& port );
50 void DisconnectInputs( );
51 void DisconnectOutputs( );
55 virtual itk::ModifiedTimeType GetMTime( ) const ITK_OVERRIDE;
56 virtual std::string Update( );
59 virtual ParametersQtDialog* CreateQtDialog( );
60 virtual bool IsInteractive( );
61 virtual void SetInteractionObjects( const std::vector< void* >& objs );
65 virtual ~ProcessObject( );
67 void _AddInput( const std::string& name, bool required = true );
70 inline void _AddOutput( const std::string& name );
73 inline F* _CreateITK( );
75 inline F* _CreateVTK( );
77 virtual std::string _GenerateData( ) = 0;
80 // Purposely not implemented
81 ProcessObject( const Self& );
82 Self& operator=( const Self& );
85 Parameters m_Parameters;
87 typedef std::map< std::string, InputPort > _TInputs;
88 typedef std::map< std::string, OutputPort > _TOutputs;
92 itk::ModifiedTimeType m_LastExecutionTime;
97 #include <cpPlugins/ProcessObject.hxx>
99 #endif // __CPPLUGINS__PROCESSOBJECT__H__