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