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

#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

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

template<class Caller, typename InputType>
class TriggerOR< Caller, InputType >

Триггер "ИЛИ", со множеством входов. Логика включения следующая:

В конструкторе указывается функция, которая будет вызываться при ИЗМЕНЕНИИ состояния выхода.

Предупреждения:
Нет блокирования совместного доступа(не рассчитан на работу в многопоточной среде).
Пример использования
    #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);

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

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

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

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

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