UniSet 2.32.1
Открытые типы | Открытые члены | Защищенные члены | Защищенные данные | Полный список членов класса
Шаблон класса uniset::TriggerAND< Caller, InputType >

#include <TriggerAND.h>

Граф связей класса uniset::TriggerAND< Caller, InputType >:
Collaboration graph
[см. легенду]

Открытые типы

typedef void(Caller::* Action) (bool newstate)
 
typedef std::unordered_map< InputType, bool > InputMap
 

Открытые члены

 TriggerAND (Caller *r, Action a) noexcept
 
bool state () const noexcept
 
bool getState (InputType in) const noexcept
 
bool commit (InputType in, bool state)
 
void add (InputType in, bool state)
 
void remove (InputType in)
 
InputMap::const_iterator begin () noexcept
 
InputMap::const_iterator end () noexcept
 
void update ()
 
void reset ()
 

Защищенные члены

void check ()
 

Защищенные данные

InputMap inputs
 
bool out = { false }
 
Caller * cal
 
Action act
 

Подробное описание

template<class Caller, typename InputType = int>
class uniset::TriggerAND< Caller, InputType >

Триггер "И", со множеством входов. Логика включения следующая: только "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(&rec, &MyClass::out);
// Добавление 'входов' (формирование списка входов)
tr.add(1,false);
tr.add(2,true);
tr.add(3,true);
tr.add(4,true);
...
// Использование:
// подаём на вход N1 единицу
// после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится
// фактическая обработка 'изменения состояния'
tr.commit(1,true);

Определения типов

◆ Action

template<class Caller , typename InputType = int>
typedef void(Caller::* uniset::TriggerAND< Caller, InputType >::Action) (bool newstate)

прототип функции вызова

Аргументы
newstate- новое состояние 'выхода'