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