UniSet  2.0.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 = int>
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> tr(&rec, &MyClass::out);

    // Добавление 'входов'
    tr.add(1,true);
    tr.add(2,false);
    tr.add(3,false);
    tr.add(4,false);
    ...

    // Использование:
    // подаём на вход N1 "0"
    // после чего, при изменении состояния 'выхода' будет вызвана функция MyClass::out, в которой производится
    // фактическая обработка 'изменения состояния'

    tr.commit(1,false);

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

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

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

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

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