40 lines
1.0 KiB
C++
40 lines
1.0 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_ */
|