00001 //-------------------------------------------------- 00012 //--------------------------------------------------- 00013 00014 #ifndef ALGORITHM_HPP__ 00015 #define ALGORITHM_HPP__ 00016 00017 #include "../global/global_definitions.h" 00018 #include "../datasets/dataset_definitions.h" 00019 #include "configuration.h" 00020 00021 #include <QObject> 00022 #include <QThread> 00023 00024 namespace imedgine 00025 { 00026 00027 //-------------------------------------------------- 00030 00031 //-------------------------------------------------- 00047 //--------------------------------------------------- 00048 00049 class Algorithm: public QThread 00050 { 00051 Q_OBJECT 00052 00053 public: 00054 00055 //-------------------------------------------------- 00058 00059 Algorithm(); 00060 00061 00062 //-------------------------------------------------- 00065 00066 virtual ~Algorithm(); 00067 00068 //-------------------------------------------------- 00072 00073 void run() = 0; 00074 00075 //-------------------------------------------------- 00081 00082 void setConfiguration(imedgine::configuration_pointer_type configuration); 00083 00084 00085 public slots: 00086 00087 //-------------------------------------------------- 00092 00093 void cancel(); 00094 00095 signals: 00096 00097 //-------------------------------------------------- 00107 00108 void datasetChangedSignal(dataset_key_type const& dataset_key); 00109 00110 protected: 00111 00112 //-------------------------------------------------- 00115 00116 Algorithm(Algorithm const& src); 00117 00118 bool do_cancel_; 00119 00120 imedgine::configuration_pointer_type configuration_; 00121 00122 private: 00123 00124 //-------------------------------------------------- 00127 00128 Algorithm& operator = (Algorithm const& src); 00129 00130 }; // class Algorithm 00131 00132 } // namespace imedgine 00133 00134 #endif // ALGORITHM_HPP__