DiaDes  0.1
DIAgnosis of Discrete-Event System
Public Types | Public Member Functions | Static Public Member Functions | Private Types | List of all members
Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash > Class Template Reference

#include <Event.hh>

Public Types

using IM = InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
 
using Event = typename IM::Info
 
using EventId = typename IM::InfoId
 
using Exception = Diades::Utils::Exception< EventManager >
 
- Public Types inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
using Info = _Event
 
using InfoId = _EventId
 
using NullInfo = NullEvent
 
using NullInfoId = NullEventId
 
using Hash = Hash
 
using Exception = Diades::Utils::Exception< InfoManager >
 
using InfoIdRangeInfoIterator = Diades::Utils::RangeMapperIterator< GetInfo< InfoIdIterator > >
 

Public Member Functions

 EventManager ()=default
 
 EventManager (EventManager const &other)=default
 
EventManageroperator= (EventManager const &other)=default
 
 EventManager (EventManager &&other)=default
 
EventManageroperator= (EventManager &&other)=default
 
virtual ~EventManager ()=default
 
bool hasEvent (const Event &event) const
 
bool hasEventId (EventId id) const
 
bool setEvent (const Event &event, EventId id)
 
EventId eventId (const Event &event)
 
const EventgetEvent (EventId id) const
 
size_t numberOfEvents () const
 
EventId nullEventId () const
 
Event nullEvent () const
 
- Public Member Functions inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
 InfoManager ()=default
 
 InfoManager (InfoManager const &other)=default
 
 InfoManager (InfoManager &&other)
 
InfoManageroperator= (InfoManager const &other)
 
InfoManageroperator= (InfoManager &&other)
 
virtual ~InfoManager ()=default
 
bool hasInfo (const Info &info) const
 
bool hasInfoId (InfoId id) const
 
bool setInfo (const Info &info, InfoId id)
 
InfoId infoId (const Info &info)
 
const InfogetInfo (InfoId id) const
 
InfoManagerinitialise (unsigned capacity)
 
const std::vector< Info > & storage () const
 
InfoIdIterator begin () const
 
InfoIdIterator end () const
 
InfoIdRangeInfoIterator< InfoIdIteratorinfoIdRangeInfoIterator (InfoIdIterator iterator) const
 
size_t numberOfInfos () const
 
bool isConsistentWith (const InfoManager &manager) const
 
bool isEquivalentTo (const InfoManager &manager) const
 
InfoManagerappendWith (const InfoManager &manager)
 
InfoManagermakeIntersection (const InfoManager &m1, const InfoManager &m2)
 
InfoManagermakeUnion (const InfoManager &m1, const InfoManager &m2)
 
bool isNull (const Info &info) const
 
bool isNullId (const InfoId &infoId) const
 

Static Public Member Functions

static string typeName ()
 
- Static Public Member Functions inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
static string typeName ()
 

Private Types

using EventIdIterator = typename IM::InfoIdIterator
 

Additional Inherited Members

- Public Attributes inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
const Info nullInfo
 
const InfoId nullInfoId
 
- Protected Types inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
using Map = std::unordered_map< size_t, std::vector< InfoId > >
 
using InfoIdIterator = typename std::vector< InfoId >::const_iterator
 
- Protected Attributes inherited from Diades::Utils::InfoManager< _Event, _EventId, NullEvent, NullEventId, Hash >
Map _infoMap
 
std::vector< Info_infos
 
std::vector< InfoId_infoIds
 

Detailed Description

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
class Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >

A EventManager is a InfoManager dedicated to the association of Event (Info) and EventId (InfoId)

See also
InfoManager for details

An EventManager is a container of EventStructure. An EventStructure associates to an identifier an EventLabel. Based on this class it is then possible to manipulate Event as simple ids. No pointers/references are embedded in an Event. To get the effective label of a given Event ask the EventManager (hash table + vector). For efficiency purpose, an Event does not even hold a pointer about the EventManager that creates it. It means that an Event may have several meanings depending on the EventManagers that are available. It is up to the client to manage Event's ownership.

An EventManager aims at being very flexible. It can be copied. We can perform intersection, union of EventManagers. But be aware that two EventManagers are totally independent. A consistency check can be performed to attest that an EventManager owns a subset of events from another manager with the same codes. If two EventManagers own the same EventLabel with the same codes they are equivalent.

The template parameter EventLabel should implement a static method nullLabel() that returns a null label of class Label

Definition at line 39 of file Event.hh.

Member Typedef Documentation

◆ Event

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
using Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::Event = typename IM::Info

Definition at line 52 of file Event.hh.

◆ EventId

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
using Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::EventId = typename IM::InfoId

Definition at line 53 of file Event.hh.

◆ EventIdIterator

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
using Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::EventIdIterator = typename IM::InfoIdIterator
private

Definition at line 71 of file Event.hh.

◆ Exception

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
using Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::Exception = Diades::Utils::Exception<EventManager>

Definition at line 60 of file Event.hh.

◆ IM

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
using Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::IM = InfoManager<_Event, _EventId, NullEvent, NullEventId, Hash>

Definition at line 51 of file Event.hh.

Constructor & Destructor Documentation

◆ EventManager() [1/3]

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::EventManager ( )
default

Default constructor

◆ EventManager() [2/3]

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::EventManager ( EventManager< _Event, _EventId, NullEvent, NullEventId, Hash > const &  other)
default

Copy constructor (default)

Parameters
other

◆ EventManager() [3/3]

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::EventManager ( EventManager< _Event, _EventId, NullEvent, NullEventId, Hash > &&  other)
default

Move constructor (default)

Parameters
other

◆ ~EventManager()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
virtual Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::~EventManager ( )
virtualdefault

Destructor

Member Function Documentation

◆ eventId()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
EventId Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::eventId ( const Event event)
inline
Parameters
eventa Event
Returns
the id of the manager whose Event is event if the event is the null event then it returns the nullEventId() if the event has not yet an associated id, a new id is created

Definition at line 170 of file Event.hh.

Referenced by getProjectedEvents(), and runGlobalDiagnosisProblem().

◆ getEvent()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
const Event& Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::getEvent ( EventId  id) const
inline

◆ hasEvent()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
bool Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::hasEvent ( const Event event) const
inline
Parameters
Eventa Event
Returns
true if the manager owns the Event

Definition at line 128 of file Event.hh.

Referenced by getProjectedEvents().

◆ hasEventId()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
bool Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::hasEventId ( EventId  id) const
inline
Parameters
ida EventId
Returns
true if the manager owns such an id, be aware that it does not mean the id is associated with a Event it is possibly assigned to an null Event

Definition at line 141 of file Event.hh.

◆ nullEvent()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
Event Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::nullEvent ( ) const
inline
Returns
the null event

Definition at line 212 of file Event.hh.

◆ nullEventId()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
EventId Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::nullEventId ( ) const
inline
Returns
the null event id

Definition at line 203 of file Event.hh.

◆ numberOfEvents()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
size_t Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::numberOfEvents ( ) const
inline
Returns
the number of Event's

Definition at line 194 of file Event.hh.

◆ operator=() [1/2]

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
EventManager& Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::operator= ( EventManager< _Event, _EventId, NullEvent, NullEventId, Hash > const &  other)
default

Assignement (default)

Parameters
other
Returns
the current EventManager

◆ operator=() [2/2]

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
EventManager& Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::operator= ( EventManager< _Event, _EventId, NullEvent, NullEventId, Hash > &&  other)
default

Move assignement (default)

Parameters
other
Returns
the current EventManager

◆ setEvent()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
bool Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::setEvent ( const Event event,
EventId  id 
)
inline

Associate a event to a specific id

Parameters
eventthe Event
idthe EventId
Returns
true if the assignement is a success i.e. event was not present in the manager with another id and id was not present with another association false if event == nullEvent or id = nullEventId

Definition at line 156 of file Event.hh.

Referenced by exportTsToDdAut2(), and Diades::Automata::Experimental::generateSynchronisedDdAutEventLabels().

◆ typeName()

template<typename _Event, typename _EventId, typename NullEvent = NullValue<_Event>, typename NullEventId = NullValue<_EventId>, typename Hash = std::hash<_Event>>
static string Diades::Automata::Experimental::EventManager< _Event, _EventId, NullEvent, NullEventId, Hash >::typeName ( )
inlinestatic

Definition at line 56 of file Event.hh.


The documentation for this class was generated from the following file: