9 #ifndef __DIADES__AUTOMATA__EXPERIMENTAL__STATEINSERTER__HH__ 10 #define __DIADES__AUTOMATA__EXPERIMENTAL__STATEINSERTER__HH__ 18 namespace Experimental
38 template<
typename Fsm,
typename _IdGenerator>
45 using StateId =
typename Fsm::StatePropertyId;
101 if(_rename || (_target->getState(sourceStateId).valid()))
103 auto genStateId = _generator->another();
104 while(_target->getState(genStateId).valid())
106 genStateId = _generator->another();
110 return sourceStateId;
132 template<
typename _StateIdGenerator,
typename _StateCreator>
141 using StateId =
typename Fsm::StatePropertyId;
154 return _creator->newState(state,
id).first;
213 return _creator->source();
224 return _creator->target();
239 const auto & stateId = source().getStatePropertyId(state);
255 auto it = _stateOf.find(stateId);
256 if(it == _stateOf.end())
258 return _stateOf.emplace(stateId, _generator->generate(stateId)).first->second;
276 template<
typename _StateIdGenerator,
typename _StateCreator,
typename StateProperty>
285 using StateId =
typename Fsm::StatePropertyId;
350 const auto & stateId = StInserter::source().getStatePropertyId(state);
351 if(_sourceStateManager->isNullId(stateId))
355 if(_sourceStateManager->hasStatePropertyId(stateId))
357 const auto &
property = _sourceStateManager->getStateProperty(stateId);
358 if(_sourceStateManager->isNull(property))
364 if(_targetStateManager->hasStateProperty(property))
366 return StInserter::newState(state,_targetStateManager->statePropertyId(property));
Diades::Utils::Ptr< Fsm >::ConstP _target
virtual State insertState(State state)
StateIdGenerator(const Fsm &target, IdGen &generator, bool rename)
typename Fsm::State State
const Fsm & source() const
FaultyEventStateMachine< CandidateId, EventInfoId > Fsm
_StateCreator StateCreator
StateInserter(StateIdGenerator &gen, StateCreator &creator)
ManagedStateInserter(StateIdGenerator &gen, StateCreator &creator, const StManager &sManager, StManager &tManager)
_StateIdGenerator StateIdGenerator
StateId generate(StateId sourceStateId)
Namespace of the Diades project.
Diades::Utils::Ptr< StateCreator >::P _creator
virtual StateId getStateId(StateId stateId)
Diades::Utils::Ptr< StManager >::P _targetStateManager
virtual State insertState(State state)
Diades::Utils::Ptr< StateIdGenerator >::P _generator
typename Fsm::StatePropertyId StateId
typename Fsm::StatePropertyId StateId
State::NodeId getStateId(const std::string ¶m, bool &ok)
std::unordered_map< StateId, StateId > StateIdMap
State newState(State state, StateId id)
Diades::Utils::Ptr< IdGen >::P _generator
Diades::Utils::Ptr< StManager >::ConstP _sourceStateManager
typename StateCreator::Fsm Fsm