9 #ifndef __DIADES__AUTOMATA__CONTROLPATTERN_HH__ 10 #define __DIADES__AUTOMATA__CONTROLPATTERN_HH__ 11 #include <unordered_set> 18 namespace Experimental
36 template<
typename Fsm>
40 using Event =
typename Fsm::EventPropertyId;
41 using Events = std::unordered_set<Event>;
58 _enabled.insert(_fsm.eventBegin(),_fsm.eventEnd());
70 return _enabled.find(e) != _enabled.end();
82 return _disabled.find(e) != _disabled.end();
112 if(!_fsm.containsEvent(e))
137 if(!_fsm.containsEvent(e))
156 return _enabled.begin();
164 return _enabled.begin();
172 return _disabled.begin();
180 return _disabled.begin();
bool unknown(const Event &e) const
Check whether the event is currently unknown.
bool disabled(const Event &e) const
Check whether the event is currently disabled.
FaultyEventStateMachine< CandidateId, EventInfoId > Fsm
A control pattern is a mapping between the set of Events of a StateMachine and a Boolean.
EventIterator enabledEventEnd() const
end iterator over the range of enabled events
typename Fsm::EventPropertyId Event
bool disable(const Event &e)
Disable an event of the StateMachine.
EventIterator disabledEventEnd() const
end iterator over the range of disabled events
bool enable(const Event &e)
Enable an event of the StateMachine.
Namespace of the Diades project.
std::unordered_set< Event > Events
ControlPattern(const Fsm &fsm)
Default constructor (every event is enabled)
typename Events::const_iterator EventIterator
bool enabled(const Event &e) const
Check whether the event is currently enabled.
EventIterator enabledEventBegin() const
start iterator over the range of enabled events
EventIterator disabledEventBegin() const
start iterator over the range of disabled events