MNE-CPP  beta 1.0
IAlgorithm.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef IALGORITHM_H
37 #define IALGORITHM_H
38 
39 
40 //*************************************************************************************************************
41 //=============================================================================================================
42 // INCLUDES
43 //=============================================================================================================
44 
45 #include "IPlugin.h"
46 
47 
48 //*************************************************************************************************************
49 //=============================================================================================================
50 // Qt INCLUDES
51 //=============================================================================================================
52 
53 #include <QSharedPointer>
54 
55 //*************************************************************************************************************
56 //=============================================================================================================
57 // DEFINE NAMESPACE MNEX
58 //=============================================================================================================
59 
60 namespace MNEX
61 {
62 
63 
64 //=============================================================================================================
70 class IAlgorithm : public IPlugin
71 {
72 //ToDo virtual methods of IMeasurementSink && IMeasurementSource
73 public:
74  typedef QSharedPointer<IAlgorithm> SPtr;
75  typedef QSharedPointer<const IAlgorithm> ConstSPtr;
77  //=========================================================================================================
81  virtual ~IAlgorithm() {};
82 
83  //=========================================================================================================
87  virtual QSharedPointer<IPlugin> clone() const = 0;
88 
89  //=========================================================================================================
93  virtual void init() = 0;
94 
95  //=========================================================================================================
99  virtual void unload() = 0;
100 
101  //=========================================================================================================
108  virtual bool start() = 0;
109 
110  //=========================================================================================================
117  virtual bool stop() = 0;
118 
119  //=========================================================================================================
126  virtual PluginType getType() const = 0;
127 
128  //=========================================================================================================
135  virtual QString getName() const = 0;
136 
137  //=========================================================================================================
143  virtual inline bool multiInstanceAllowed() const;
144 
145  //=========================================================================================================
152  virtual QWidget* setupWidget() = 0; //setup();
153 
154 protected:
155  //=========================================================================================================
161  virtual void run() = 0;
162 };
163 
164 //*************************************************************************************************************
165 //=============================================================================================================
166 // INLINE DEFINITIONS
167 //=============================================================================================================
168 
170 {
171  return true;
172 }
173 
174 } // NAMESPACE
175 
176 Q_DECLARE_INTERFACE(MNEX::IAlgorithm, "mne_x/1.0")
177 
178 #endif // IALGORITHM_H
QSharedPointer< IAlgorithm > SPtr
Definition: IAlgorithm.h:74
Contains declaration of IPlugin interface class.
virtual bool start()=0
virtual ~IAlgorithm()
Definition: IAlgorithm.h:81
virtual QString getName() const =0
The IPlugin class is the base interface class of all plugins.
Definition: IPlugin.h:92
QSharedPointer< const IAlgorithm > ConstSPtr
Definition: IAlgorithm.h:75
virtual void unload()=0
virtual QSharedPointer< IPlugin > clone() const =0
The IAlgorithm class provides an interface for a real-time algorithm plugin.
Definition: IAlgorithm.h:70
Definition: arrow.h:75
virtual QWidget * setupWidget()=0
virtual void init()=0
virtual bool multiInstanceAllowed() const
Definition: IAlgorithm.h:169
virtual PluginType getType() const =0
virtual void run()=0
virtual bool stop()=0