40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
|
|
/*
|
|||
|
|
* DiscreteSwitch.h
|
|||
|
|
*
|
|||
|
|
* Created on: 21 мая 2021 г.
|
|||
|
|
* Author: sozonov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_SCHEMATIC_DISCRETESWITCH_HH_
|
|||
|
|
#define UMLIBRARY_SCHEMATIC_DISCRETESWITCH_H_
|
|||
|
|
#include "../systemic/IFunctor.hh"
|
|||
|
|
|
|||
|
|
//!Класс вызова функции при наличии разрешающего статуса.
|
|||
|
|
class DiscreteSwitchLogics {
|
|||
|
|
public:
|
|||
|
|
bool enable; //!<Значение разрешающего статуса.
|
|||
|
|
DiscreteSwitchLogics(){}
|
|||
|
|
|
|||
|
|
//!Входной сигнал. При выставленном разрешающем статусе вызов выходного сигнала.
|
|||
|
|
void inputSignal(){if(enable) outputSignal();}
|
|||
|
|
//!Выходной сигнал.
|
|||
|
|
virtual void outputSignal();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
namespace application { namespace schematic {
|
|||
|
|
class DiscreteSwitchInterface : public systemic::IFunctor<void>{
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
systemic::IFunctor<void> & output; //!<Колбэк выходного сигнала.
|
|||
|
|
systemic::IStatus & enable;
|
|||
|
|
DiscreteSwitchInterface(systemic::IFunctor<void> & _out, systemic::IStatus &_enable):output(_out), enable(_enable){}
|
|||
|
|
|
|||
|
|
virtual void operator()() {
|
|||
|
|
if(enable) output();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}}
|
|||
|
|
#endif /* UMLIBRARY_SCHEMATIC_DISCRETESWITCH_HH_ */
|