UniSet  1.4.0
Открытые типы | Открытые члены | Защищенные члены | Защищенные данные
Шаблон класса TriggerAND< Caller, InputType >

#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

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

template<class Caller, typename InputType>
class 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_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);

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

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

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

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

Объявления и описания членов классов находятся в файлах: