1 #ifndef __DIADES__AUTOMATA__OBSERVABLEMASK__HH 2 #define __DIADES__AUTOMATA__OBSERVABLEMASK__HH 11 #include <boost/archive/text_oarchive.hpp> 12 #include <boost/archive/text_iarchive.hpp> 13 #include <boost/serialization/vector.hpp> 14 #include <boost/serialization/set.hpp> 15 #include <boost/serialization/map.hpp> 16 #include <unordered_map> 28 class ObservableComponent;
48 static string typeName() {
return "Automata::ObservableMask"; }
67 template<
class Archive>
68 void serialize(Archive & ar,
const unsigned int version)
100 const vector<const ObservableComponent *> & components);
136 return _observableEvents.size();
154 return _events.begin();
165 return _events.end();
177 return _observableEvents.begin();
189 return _observableEvents.end();
201 return _observableOfEvent.find(e) != _observableOfEvent.end();
214 return _eventOfObservable.find(obs) != _eventOfObservable.end();
278 Msg(
"isIdentifiable: event %1% must be in the mask") % e);
279 return (_identifiable.size() > e.
id()) && (_identifiable[e.
id()]);
296 Msg(
"isDetectable: event %1% must be in the mask") % e);
297 return (_detectable.size() > e.
id()) && (_detectable[e.
id()]);
const ObservableMask & _mask
EventIterator eventBegin() const
unordered_map< Event, set< Event > > _observableOfEvent
bool containsObservableEvent(const Event &obs) const
void project(const ObservableMask &mask, const set< Event > &events)
EventIterator endOfSourceEvent(const Event &obs) const
const ObservableMask & _mask
IsUnobservable(const ObservableMask &mask)
IsObservable(const ObservableMask &mask)
EventIterator beginOfSourceEvent(const Event &obs) const
Diades::Utils::Exception< ObservableMask > Exception
vector< bool > _detectable
void makeUnobservable(const Event &e)
void removeMask(const Event &e, const Event &obs)
bool operator()(const Event &event) const
set< Event >::const_iterator ObservableEventIterator
set< Event > _observableEvents
unordered_map< Event, set< Event > > _eventOfObservable
bool matches(const Event &e, const Event &obs) const
bool operator()(const Event &event) const
set< Event >::const_iterator EventIterator
unsigned numberOfIdentifiableEvents() const
const Event & noEvent() const
bool sometimesObservable(const Event &e) const
bool containsEvent(const Event &e) const
const ObservableMask & _mask
#define require(Exception, expr, message)
Namespace of the Diades project.
ObservableEventIterator observableBegin() const
bool isDetectable(const Event &e) const
EventIterator eventEnd() const
ObservableMask & operator=(const ObservableMask &mask)
const ObservableMask & _mask
bool isIdentifiable(const Event &e) const
ObservableEventIterator observableEnd() const
bool isObservable(const Event &e) const
IsNonIdentifiable(const ObservableMask &mask)
IsIdentifiable(const ObservableMask &mask)
void serialize(Archive &ar, const unsigned int version)
void addMask(const Event &e, const Event &obs)
bool operator()(const Event &event) const
unsigned numberOfAssociatedEvents(const Event &e) const
bool isUnobservable(const Event &e) const
unsigned numberOfObservableEvents() const
vector< bool > _identifiable
bool operator()(const Event &event) const