42 lines
788 B
C++
42 lines
788 B
C++
/*
|
||
* IProcess.h
|
||
*
|
||
* Created on: 20 дек. 2017 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#ifndef SOURCE_SYSTEM_IPROCESS_H_
|
||
#define SOURCE_SYSTEM_IPROCESS_H_
|
||
|
||
namespace systemic {
|
||
|
||
//!Интерфейс процесса.
|
||
class IProcess {
|
||
public:
|
||
virtual void process() = 0;
|
||
virtual void setSampleTime( float ts_in_second ) { (void) ts_in_second; };
|
||
|
||
// ~IProcess() = default;
|
||
};
|
||
|
||
struct IProcessControl {
|
||
virtual void enable() = 0;
|
||
virtual void disable() = 0;
|
||
};
|
||
|
||
struct ProcCtrl : public systemic::IProcessControl {
|
||
void enable() {}
|
||
void disable() {}
|
||
virtual ~ProcCtrl() = default;
|
||
};
|
||
|
||
template<typename Condition>
|
||
void do_until( IProcess & obj, const Condition & condition ) {
|
||
while( condition )
|
||
obj.process();
|
||
}
|
||
|
||
}
|
||
|
||
#endif /* SOURCE_SYSTEM_IPROCESS_H_ */
|