]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface/ProcessObject.h
362cd762461234eeefcd53ae2e8300dda9db9829
[cpPlugins.git] / lib / cpPlugins / Interface / ProcessObject.h
1 #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__
2 #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__
3
4 #include <map>
5 #include <string>
6 #include <itkDataObject.h>
7 #include <cpPlugins/Interface/Object.h>
8
9 namespace cpPlugins
10 {
11   namespace Interface
12   {
13     class DataObject;
14
15     /**
16      */
17     class ProcessObject
18       : public Object
19     {
20     public:
21       typedef ProcessObject Self;
22       typedef Object        Superclass;
23
24       typedef std::pair< std::string, std::string > TParameter;
25       typedef std::map< std::string, TParameter >   TParameters;
26
27     public:
28       ProcessObject( );
29       virtual ~ProcessObject( );
30
31       virtual std::string GetClassName( ) const;
32       virtual const TParameters& GetDefaultParameters( ) const;
33       virtual void SetParameters( const TParameters& params );
34
35       virtual unsigned int GetNumberOfInputs( ) const;
36       virtual unsigned int GetNumberOfOutputs( ) const;
37
38       virtual void SetNumberOfInputs( unsigned int n );
39       virtual void SetNumberOfOutputs( unsigned int n );
40
41       virtual void SetInput( unsigned int idx, const DataObject* dobj );
42       virtual DataObject* GetOutput( unsigned int idx );
43
44       virtual std::string Update( );
45
46     protected:
47       virtual itk::DataObject* _GetInput( unsigned int idx );
48       virtual void _SetOutput( unsigned int idx, itk::DataObject* dobj );
49       virtual std::string _GenerateData( ) = 0;
50
51     protected:
52       TParameters m_DefaultParameters;
53       TParameters m_Parameters;
54
55       std::vector< const DataObject* > m_Inputs;
56       std::vector< DataObject >        m_Outputs;
57     };
58
59   } // ecapseman
60
61 } // ecapseman
62
63 #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__
64
65 // eof - $RCSfile$