DiaDes  0.1
DIAgnosis of Discrete-Event System
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator > Class Template Reference

#include <ComposableModel.hh>

Public Types

using Exception = Diades::Utils::Exception< ComposableModel >
 
using Component = Fsm
 
using Event = typename Component::EventPropertyId
 
using OutputEventTransitionIterator = typename Component::OutputEventTransitionIterator
 
using InputEventTransitionIterator = typename Component::InputEventTransitionIterator
 
using OutputTransitionIterator = typename Component::OutputTransitionIterator
 
using InputTransitionIterator = typename Component::InputTransitionIterator
 
using InitialStateIterator = typename Component::InitialStateIterator
 
using StateIterator = typename Component::StateIterator
 
using TransitionIterator = typename Component::TransitionIterator
 
using State = typename Component::State
 
using Transition = typename Component::Transition
 
using StateVector = std::vector< State >
 
using StateOfVector = Diades::Utils::NAryTree< State, State, std::unordered_map >
 
using VectorOfState = std::unordered_map< State, StateVector >
 
using InitialStateEnumerator = Diades::Utils::RangesEnumeration< InitialStateIterator >
 
using SyncRules = SynchronisationRules< Fsm >
 
using SyncEvent = typename SyncRules::SyncEvent
 

Public Member Functions

InitialStateIterator initialStateBegin () const
 
InitialStateIterator initialStateEnd () const
 
bool isValid () const
 
 ComposableModel ()=default
 
 ComposableModel (ComposableModel const &other)=default
 
ComposableModeloperator= (ComposableModel const &other)=default
 
 ComposableModel (ComposableModel &&other)=default
 
ComposableModeloperator= (ComposableModel &&other)=default
 
virtual ~ComposableModel ()=default
 
 ComposableModel (const Component &component, const SynchronisationRules< Fsm > &synchronisation)
 
 ComposableModel (const vector< typename Ptr< ComposableModel >::ConstP > &models, const SynchronisationRules< Fsm > &synchronisation, StateCreator &creator)
 
 ComposableModel (const vector< typename Ptr< ComposableModel >::ConstP > &models, const SynchronisationRules< Fsm > &synchronisation, StateCreator &creator, Fsm &result)
 
bool completeSynchronisation (Fsm &synchronisedFsm)
 
StateIterator stateBegin () const
 
StateIterator stateEnd () const
 
TransitionIterator transitionBegin () const
 
TransitionIterator transitionEnd () const
 
const SynchronisationRules< Fsm > & synchronisationLaw () const
 
void init (Fsm &synchronisedFsm)
 
const Componentcomponent () const
 
const vector< typename Ptr< ComposableModel >::ConstP > & models () const
 
vector< typename Ptr< ComposableModel >::ConstP > & models ()
 
const std::string & name () const
 
bool newState (const StateVector &states, State &result) const
 
bool newInitialState (StateVector &initialStates, State &initialState) const
 
void synchroniseOutputs (State state, Event event) const
 
void synchroniseInputs (State state, Event event) const
 
OutputEventTransitionIterator outputEventTransitionBegin (State s, Event e) const
 
OutputEventTransitionIterator outputEventTransitionEnd (State s, Event e) const
 
InputEventTransitionIterator inputEventTransitionBegin (State s, Event e) const
 
InputEventTransitionIterator inputEventTransitionEnd (State s, Event e) const
 
OutputTransitionIterator outputTransitionBegin (State s) const
 
OutputTransitionIterator outputTransitionEnd (State s) const
 
InputTransitionIterator inputTransitionBegin (State s) const
 
InputTransitionIterator inputTransitionEnd (State s) const
 

Static Public Member Functions

static string typeName ()
 

Private Member Functions

void createInitialStates () const
 
void completeSynchronisation ()
 
void initInitialStateEnumeration ()
 
bool computeSynchronisationEventsInUse ()
 
bool checkSynchronisationEvent (const SyncEvent &syncEvent)
 

Private Attributes

vector< typename Ptr< ComposableModel >::ConstP > _models
 
std::unordered_map< typename Ptr< Component >::ConstP, size_t > _compIds
 
Ptr< Component >::ConstP _comp
 
Ptr< Component >::P _synchronisedFsm
 
Ptr< SyncRules >::ConstP _sync
 
StateOfVector _stateOfVector
 
VectorOfState _vectorOfState
 
InitialStateEnumerator _initialStateEnumerator
 
std::unordered_map< typename Ptr< SyncEvent >::ConstP, std::unordered_set< size_t > > _synchronisationEventsInUse
 
std::unordered_map< Event, typename Ptr< SyncEvent >::ConstP > _synchronisationEventsOfSynchronisedEvent
 
std::unordered_map< State, std::unordered_set< Event > > _pendingOutputs
 
std::unordered_map< State, std::unordered_set< Event > > _pendingInputs
 
bool _valid
 
bool _notStarted
 
Ptr< StateCreator >::P _creator
 

Detailed Description

template<typename Fsm, typename StateCreator>
class Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >

This class implements the type of Fsms that can be composed by applying a Synchronisation law. In order to compose two models, it is required that they have the same Synchronisation law. This class can be used in two different manners. To fully compute a synchronised automaton or to compute it on the fly. If set to be on the fly, then the computation of the transitions are performed when calling the methods:

Definition at line 43 of file ComposableModel.hh.

Member Typedef Documentation

◆ Component

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::Component = Fsm

Definition at line 53 of file ComposableModel.hh.

◆ Event

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::Event = typename Component::EventPropertyId

Definition at line 54 of file ComposableModel.hh.

◆ Exception

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::Exception = Diades::Utils::Exception<ComposableModel>

Definition at line 52 of file ComposableModel.hh.

◆ InitialStateEnumerator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::InitialStateEnumerator = Diades::Utils::RangesEnumeration<InitialStateIterator>

Definition at line 67 of file ComposableModel.hh.

◆ InitialStateIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::InitialStateIterator = typename Component::InitialStateIterator

Definition at line 59 of file ComposableModel.hh.

◆ InputEventTransitionIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::InputEventTransitionIterator = typename Component::InputEventTransitionIterator

Definition at line 56 of file ComposableModel.hh.

◆ InputTransitionIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::InputTransitionIterator = typename Component::InputTransitionIterator

Definition at line 58 of file ComposableModel.hh.

◆ OutputEventTransitionIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::OutputEventTransitionIterator = typename Component::OutputEventTransitionIterator

Definition at line 55 of file ComposableModel.hh.

◆ OutputTransitionIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::OutputTransitionIterator = typename Component::OutputTransitionIterator

Definition at line 57 of file ComposableModel.hh.

◆ State

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::State = typename Component::State

Definition at line 62 of file ComposableModel.hh.

◆ StateIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::StateIterator = typename Component::StateIterator

Definition at line 60 of file ComposableModel.hh.

◆ StateOfVector

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::StateOfVector = Diades::Utils::NAryTree<State, State, std::unordered_map>

Definition at line 65 of file ComposableModel.hh.

◆ StateVector

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::StateVector = std::vector<State>

Definition at line 64 of file ComposableModel.hh.

◆ SyncEvent

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::SyncEvent = typename SyncRules::SyncEvent

Definition at line 69 of file ComposableModel.hh.

◆ SyncRules

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::SyncRules = SynchronisationRules<Fsm>

Definition at line 68 of file ComposableModel.hh.

◆ Transition

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::Transition = typename Component::Transition

Definition at line 63 of file ComposableModel.hh.

◆ TransitionIterator

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::TransitionIterator = typename Component::TransitionIterator

Definition at line 61 of file ComposableModel.hh.

◆ VectorOfState

template<typename Fsm , typename StateCreator >
using Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::VectorOfState = std::unordered_map<State, StateVector>

Definition at line 66 of file ComposableModel.hh.

Constructor & Destructor Documentation

◆ ComposableModel() [1/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( )
default

◆ ComposableModel() [2/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( ComposableModel< Fsm, StateCreator > const &  other)
default

Copy constructor (default)

Parameters
other

◆ ComposableModel() [3/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( ComposableModel< Fsm, StateCreator > &&  other)
default

Move constructor (default)

Parameters
other

◆ ~ComposableModel()

template<typename Fsm , typename StateCreator >
virtual Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::~ComposableModel ( )
virtualdefault

◆ ComposableModel() [4/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( const Component component,
const SynchronisationRules< Fsm > &  synchronisation 
)
inline

Basic constructor

Parameters
componenta Component
synchronisationa SynchronisationRules law.

Create a ComposableModel from a Component. The behaviour of the ComposableModel relies on the behaviour of the Component from the initial states in component. The ComposableModel can be synchronised with any other ComposableModel that has the same Synchronisation law. Note that the SynchronisationRules must be encoded before the ComposableModel start perform synchronisation. It is not the responsability of the ComposableModel to encode the event associated with involved in SynchronisationEvent of the SynchronisationRules.

Definition at line 198 of file ComposableModel.hh.

◆ ComposableModel() [5/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( const vector< typename Ptr< ComposableModel< Fsm, StateCreator > >::ConstP > &  models,
const SynchronisationRules< Fsm > &  synchronisation,
StateCreator &  creator 
)
inline

Constructor by composition

Parameters
modelslist of ComposableModels
synchronisationa SynchronisationRules law.

Initialise the ComposableModel resulting from the Synchronisation of the ComposableModel in 'models' It actually does not perform the synchronisation

Definition at line 226 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::component(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::computeSynchronisationEventsInUse(), Diades::Utils::Ptr< T >::get(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::models().

◆ ComposableModel() [6/6]

template<typename Fsm , typename StateCreator >
Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel ( const vector< typename Ptr< ComposableModel< Fsm, StateCreator > >::ConstP > &  models,
const SynchronisationRules< Fsm > &  synchronisation,
StateCreator &  creator,
Fsm &  result 
)
inline

Constructor by composition

Parameters
modelslist of ComposableModels
synchronisationa SynchronisationRules law.
resultthe underlying Fsm which will contain the result of the synchronisation operation.

Initialise the ComposableModel resulting from the Synchronisation of the ComposableModel in 'models' It actually does not perform the synchronisation

Definition at line 259 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::component(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::computeSynchronisationEventsInUse(), Diades::Utils::Ptr< T >::get(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initInitialStateEnumeration(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::models().

Member Function Documentation

◆ checkSynchronisationEvent()

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::checkSynchronisationEvent ( const SyncEvent syncEvent)
inlineprivate
Parameters
syncEventthe SynchronisationEvent to add if required (compute internal support)
Returns
true if the SynchronisationEvent is compatible. A compatible SynchronisationEvent is such that its support is either fully in the ComposableModel or is fully involving Component not in the ComposableModel. Such a compatible event will be stored in _synchronisationEventsInUse associated with its support

Definition at line 979 of file ComposableModel.hh.

References Diades::Utils::Ptr< T >::get(), and Diades::Utils::isIn().

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::computeSynchronisationEventsInUse().

◆ completeSynchronisation() [1/2]

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation ( Fsm &  synchronisedFsm)
inline

Compute the complete synchronisation from the models (from scratch) and returns it as the Fsm 'synchronisedFsm'

Parameters
synchronisedFsmis the resulting synchronised fsm as a whole
Returns
true if the operation is a success

Definition at line 294 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::init(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::isValid().

◆ completeSynchronisation() [2/2]

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation ( )
inlineprivate

◆ component()

template<typename Fsm , typename StateCreator >
const Component& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::component ( ) const
inline

◆ computeSynchronisationEventsInUse()

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::computeSynchronisationEventsInUse ( )
inlineprivate

Called by the constructor, this method looks in the SynchronisationRules to see which SynchronisationEvent will be effectively in use in this ComposableModel

Returns
true if the SynchronisationRules are compatible for a successful synchronisation of the models in the current ComposableModel Compatible SynchronisationEvent will stored in _synchronisationEventsInUse associated with their respective support

Definition at line 954 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::checkSynchronisationEvent().

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::ComposableModel().

◆ createInitialStates()

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::createInitialStates ( ) const
inlineprivate

◆ init()

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::init ( Fsm &  synchronisedFsm)
inline

Initialise the ComposableModel with an Fsm that will explicitely contains the synchronisation of the component models in the ComposableModel

Parameters
synchronisedFsmthe Fsm that will result for the synchronisation
Postcondition
the synchronisedFsm is initialized (cleared), if there was previously another Fsm associated with this ComposableModel, it is simply forgotten.

Definition at line 428 of file ComposableModel.hh.

References Diades::Utils::NAryTree< Node, Leaf, _Map >::clear(), Diades::Utils::Ptr< T >::get(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initInitialStateEnumeration().

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation().

◆ initialStateBegin()

template<typename Fsm , typename StateCreator >
InitialStateIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initialStateBegin ( ) const
inline
Returns
the start iterator over the range of initial states

Definition at line 109 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::createInitialStates().

◆ initialStateEnd()

template<typename Fsm , typename StateCreator >
InitialStateIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initialStateEnd ( ) const
inline
Returns
the end iterator over the range of initial states

Definition at line 124 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newInitialState().

◆ initInitialStateEnumeration()

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initInitialStateEnumeration ( )
inlineprivate

◆ inputEventTransitionBegin()

template<typename Fsm , typename StateCreator >
InputEventTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputEventTransitionBegin ( State  s,
Event  e 
) const
inline
Parameters
ssource state
eevent to trigger from state s. Event e is a synchronised event from the Synchronization law
Returns
an iterator on the first input transition of state 's' labelled with 'e'

Note that the computation of the set of input transitions might be effectively done at this stage, but then only these ones

Definition at line 781 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs().

◆ inputEventTransitionEnd()

template<typename Fsm , typename StateCreator >
InputEventTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputEventTransitionEnd ( State  s,
Event  e 
) const
inline
Parameters
ssource state
eevent to trigger from state s Event e is a synchronised event from the Synchronization law
Returns
an iterator after the last input transition of state 's' labelled with 'e' Note that the computation of the set of input transitions might be effectively done at this stage, but then only these ones

Definition at line 808 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs().

◆ inputTransitionBegin()

template<typename Fsm , typename StateCreator >
InputTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputTransitionBegin ( State  s) const
inline
Parameters
ssource state
Returns
an iterator on the first input transition of state 's'

Definition at line 888 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs().

◆ inputTransitionEnd()

template<typename Fsm , typename StateCreator >
InputTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputTransitionEnd ( State  s) const
inline
Parameters
ssource state
Returns
an iterator after the last input transition of state 's' l Note that the computation of the set of input transitions might be effectively done at this stage

Definition at line 917 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs().

◆ isValid()

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::isValid ( ) const
inline

◆ models() [1/2]

template<typename Fsm , typename StateCreator >
const vector<typename Ptr<ComposableModel>::ConstP>& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::models ( ) const
inline

◆ models() [2/2]

template<typename Fsm , typename StateCreator >
vector<typename Ptr<ComposableModel>::ConstP>& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::models ( )
inline
Returns
the local models

Definition at line 502 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_models.

◆ name()

template<typename Fsm , typename StateCreator >
const std::string& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::name ( ) const
inline
Returns
the name of the ComposableModel (i.e. the name of the underlying component)

Definition at line 512 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::component().

◆ newInitialState()

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newInitialState ( StateVector initialStates,
State initialState 
) const
inline
Parameters
initialStatesthe StateVector associated with the created new initial state
initialStatea new initial state in the resulting synchronised Fsm if not all of them have been already created
Returns
true if the initial state is indeed created, if not it means that all the initial states have been already created. If not created 'initialState' is undetermined

Definition at line 554 of file ComposableModel.hh.

References Diades::Utils::RangesEnumeration< T >::completed(), Diades::Utils::RangesEnumeration< T >::current(), Diades::Utils::RangesEnumeration< T >::hasNext(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newState().

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::createInitialStates(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::initialStateEnd().

◆ newState()

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newState ( const StateVector states,
State result 
) const
inline
Parameters
statesa vector of components'states (states.at(i) is a State of models().at(i))
resultthe State associated with states in the resulting synchronised Fsm
Returns
true if the State is effectively built, false it was already
Precondition
a Fsm that stores the resulting synchronised Fsm is set (no check on this)

Definition at line 525 of file ComposableModel.hh.

References Diades::Utils::NAryTree< Node, Leaf, _Map >::getLeaf(), Diades::Utils::NAryTree< Node, Leaf, _Map >::insertSuccessiveBranches(), and states.

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newInitialState(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs().

◆ operator=() [1/2]

template<typename Fsm , typename StateCreator >
ComposableModel& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::operator= ( ComposableModel< Fsm, StateCreator > const &  other)
default

Assignement (default)

Parameters
other
Returns
the current ComposableModel

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::isValid().

◆ operator=() [2/2]

template<typename Fsm , typename StateCreator >
ComposableModel& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::operator= ( ComposableModel< Fsm, StateCreator > &&  other)
default

Move assignement (default)

Parameters
other
Returns
the current ComposableModel

◆ outputEventTransitionBegin()

template<typename Fsm , typename StateCreator >
OutputEventTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputEventTransitionBegin ( State  s,
Event  e 
) const
inline
Parameters
ssource state
eevent to trigger from state s. Event e is a synchronised event from the Synchronization law
Returns
an iterator on the first output transition of state 's' labelled with 'e' Note that the computation of the set of output transitions might be effectively done at this stage, but then only these ones

Definition at line 728 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs().

◆ outputEventTransitionEnd()

template<typename Fsm , typename StateCreator >
OutputEventTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputEventTransitionEnd ( State  s,
Event  e 
) const
inline
Parameters
ssource state
eevent to trigger from state s Event e is a synchronised event from the Synchronization law
Returns
an iterator after the last output transition of state 's' labelled with 'e' Note that the computation of the set of output transitions might be effectively done at this stage, but then only these ones

Definition at line 754 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs().

◆ outputTransitionBegin()

template<typename Fsm , typename StateCreator >
OutputTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputTransitionBegin ( State  s) const
inline
Parameters
ssource state
Returns
an iterator on the first output transition of state 's' Note that the computation of the set of output transitions might be effectively done at this stage, but then only these ones

Definition at line 833 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs().

◆ outputTransitionEnd()

template<typename Fsm , typename StateCreator >
OutputTransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputTransitionEnd ( State  s) const
inline
Parameters
ssource state
Returns
an iterator after the last output transition of state 's' Note that the computation of the set of output transitions might be effectively done at this stage, but then only these ones

Definition at line 861 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs().

◆ stateBegin()

template<typename Fsm , typename StateCreator >
StateIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::stateBegin ( ) const
inline
Returns
a start iterator on the range of the states in the ComposableModel If the synchronisation is not fully performed at this stage, it will be computed before stateBegin() returns an iterator on the full set of states

Definition at line 336 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation().

◆ stateEnd()

template<typename Fsm , typename StateCreator >
StateIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::stateEnd ( ) const
inline
Returns
an end iterator on the range of the states in the ComposableModel If the synchronisation is not fully performed at this stage, it will be computed before stateEnd() returns an iterator on the full set of states

Definition at line 356 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation().

◆ synchronisationLaw()

template<typename Fsm , typename StateCreator >
const SynchronisationRules<Fsm>& Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchronisationLaw ( ) const
inline
Returns
the synchronisation law of the ComposableModel

Definition at line 413 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_sync.

◆ synchroniseInputs()

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseInputs ( State  state,
Event  event 
) const
inline

Synchronisation of the input transitions of a given state labelled with the synchronised event 'event' (potential creation of new states for the source states)

Parameters
statea global state (a state of component() created by newState only)
eventa synchronised event (an event for the set of SynchronisationEvents in the rules), i.e. event = synchroEvent.synchronisedEvent() with synchroEvent part of the SynchronisationLaw()

Definition at line 661 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newState(), and start.

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputEventTransitionBegin(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputEventTransitionEnd(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputTransitionBegin(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::inputTransitionEnd().

◆ synchroniseOutputs()

template<typename Fsm , typename StateCreator >
void Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::synchroniseOutputs ( State  state,
Event  event 
) const
inline

Synchronisation of the output transitions of a given state labelled with the synchronised event 'event' (potential creation of new states for the target states)

Parameters
statea global state (a state of component() created by newState only)
eventa synchronised event (an event for the set of SynchronisationEvents in the rules), i.e. event = synchroEvent.synchronisedEvent() with synchroEvent part of the SynchronisationLaw()

Definition at line 595 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::newState(), and start.

Referenced by Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputEventTransitionBegin(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputEventTransitionEnd(), Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputTransitionBegin(), and Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::outputTransitionEnd().

◆ transitionBegin()

template<typename Fsm , typename StateCreator >
TransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::transitionBegin ( ) const
inline
Returns
a start iterator on the range of the transitions in the ComposableModel If the synchronisation is not fully performed at this stage, it will be computed before transitionBegin() returns an iterator on the full set of transitions

Definition at line 376 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation().

◆ transitionEnd()

template<typename Fsm , typename StateCreator >
TransitionIterator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::transitionEnd ( ) const
inline
Returns
an end iterator on the range of the transitions in the ComposableModel If the synchronisation is not fully performed at this stage, it will be computed before transitionEnd() returns an iterator on the full set of transitions

Definition at line 396 of file ComposableModel.hh.

References Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::completeSynchronisation().

◆ typeName()

template<typename Fsm , typename StateCreator >
static string Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::typeName ( )
inlinestatic

Definition at line 48 of file ComposableModel.hh.

Member Data Documentation

◆ _comp

template<typename Fsm , typename StateCreator >
Ptr<Component>::ConstP Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_comp
private

◆ _compIds

template<typename Fsm , typename StateCreator >
std::unordered_map<typename Ptr<Component>::ConstP, size_t> Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_compIds
private

Definition at line 72 of file ComposableModel.hh.

◆ _creator

template<typename Fsm , typename StateCreator >
Ptr<StateCreator>::P Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_creator
mutableprivate

Definition at line 85 of file ComposableModel.hh.

◆ _initialStateEnumerator

template<typename Fsm , typename StateCreator >
InitialStateEnumerator Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_initialStateEnumerator
mutableprivate

Definition at line 78 of file ComposableModel.hh.

◆ _models

template<typename Fsm , typename StateCreator >
vector<typename Ptr<ComposableModel>::ConstP> Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_models
private

◆ _notStarted

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_notStarted
mutableprivate

Definition at line 84 of file ComposableModel.hh.

◆ _pendingInputs

template<typename Fsm , typename StateCreator >
std::unordered_map<State, std::unordered_set < Event> > Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_pendingInputs
mutableprivate

Definition at line 82 of file ComposableModel.hh.

◆ _pendingOutputs

template<typename Fsm , typename StateCreator >
std::unordered_map<State, std::unordered_set < Event> > Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_pendingOutputs
mutableprivate

Definition at line 81 of file ComposableModel.hh.

◆ _stateOfVector

template<typename Fsm , typename StateCreator >
StateOfVector Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_stateOfVector
mutableprivate

Definition at line 76 of file ComposableModel.hh.

◆ _sync

template<typename Fsm , typename StateCreator >
Ptr<SyncRules>::ConstP Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_sync
private

◆ _synchronisationEventsInUse

template<typename Fsm , typename StateCreator >
std::unordered_map<typename Ptr<SyncEvent>::ConstP, std::unordered_set<size_t> > Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_synchronisationEventsInUse
private

Definition at line 79 of file ComposableModel.hh.

◆ _synchronisationEventsOfSynchronisedEvent

template<typename Fsm , typename StateCreator >
std::unordered_map<Event, typename Ptr<SyncEvent>::ConstP > Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_synchronisationEventsOfSynchronisedEvent
private

Definition at line 80 of file ComposableModel.hh.

◆ _synchronisedFsm

template<typename Fsm , typename StateCreator >
Ptr<Component>::P Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_synchronisedFsm
private

◆ _valid

template<typename Fsm , typename StateCreator >
bool Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_valid
private

◆ _vectorOfState

template<typename Fsm , typename StateCreator >
VectorOfState Diades::Automata::Experimental::ComposableModel< Fsm, StateCreator >::_vectorOfState
mutableprivate

Definition at line 77 of file ComposableModel.hh.


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