UniSet
1.4.0
|
#include <TriggerOR.h>
Открытые типы | |
typedef void(Caller::* | Action )(bool newstate) |
typedef std::map< InputType, bool > | InputMap |
Открытые члены | |
TriggerOR (Caller *r, Action a) | |
bool | state () |
bool | getState (InputType in) |
bool | commit (InputType in, bool state) |
void | add (InputType in, bool state) |
void | remove (InputType in) |
InputMap::const_iterator | begin () |
InputMap::const_iterator | end () |
void | update () |
void | reset () |
Защищенные члены | |
void | check () |
Защищенные данные | |
InputMap | inputs |
bool | out |
Caller * | cal |
Action | act |
Триггер "ИЛИ", со множеством входов. Логика включения следующая:
В конструкторе указывается функция, которая будет вызываться при ИЗМЕНЕНИИ состояния выхода.
#include "TriggerOR.h" class MyClass { public: MyClass(){}; ~MyClass(){}; void out( bool newstate){ cout << "OR out state="<< newstate <<endl;} ... }; ... MyClass rec; // Создание TriggerOR<MyClass, int> tr_or(&rec, &MyClass::out); // Добавление 'входов' tr_or.add(1,true); tr_or.add(2,false); tr_or.add(3,false); tr_or.add(4,false); ... // Использование // подаёт на вход N1 "0" // после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится // фактическая обработка 'изменения состояния' tr_or.commit(1,false);
typedef void(Caller::* TriggerOR< Caller, InputType >::Action)(bool newstate) |
прототип функции вызова
newstate | - новое состояние 'выхода' |