DiaDes  0.1
DIAgnosis of Discrete-Event System
TransitionInserter.hh
Go to the documentation of this file.
1 
9 #ifndef __DIADES__AUTOMATA__EXPERIMENTAL__TRANSITIONINSERTER__HH__
10 #define __DIADES__AUTOMATA__EXPERIMENTAL__TRANSITIONINSERTER__HH__
11 
12 namespace Diades
13 {
14  namespace Automata
15  {
16  namespace Experimental
17  {
18 
27  template<typename _StateInserter, typename _EventInserter>
29  {
30  public:
31  using StateInserter = _StateInserter;
32  using EventInserter = _EventInserter;
33  using Fsm = typename StateInserter::Fsm;
34  using Transition = typename Fsm::Transition;
35  using State = typename Fsm::State;
36 
37  private:
46 
47 
48 
49  public:
53  TransitionInserter() = default;
54 
55 
60  TransitionInserter(TransitionInserter const& other) = default;
61 
67  TransitionInserter& operator=(TransitionInserter const& other) = default;
68 
73  TransitionInserter(TransitionInserter&& other) = default;
74 
81 
85  ~TransitionInserter() = default;
86 
92  TransitionInserter(StateInserter & sInserter, EventInserter & eInserter) :
93  _sInserter(Diades::Utils::Ptr<StateInserter>::get(sInserter)),
94  _eInserter(Diades::Utils::Ptr<EventInserter>::get(eInserter))
95  {
96  }
102  const Fsm &
103  source() const
104  {
105  return _sInserter->source();
106  }
107 
113  Fsm &
115  {
116  return _sInserter->target();
117  }
118 
124  Transition
126  {
127  return target().newTransition(insertState(t.source()),
128  insertState(t.target()),
129  _eInserter->insertEvent(source().getEvent(t)));
130  }
131 
138  State
140  {
141  return _sInserter->insertState(state);
142  }
143 
144 
145  };
146 
147  }
148  }
149 }
150 
151 
152 #endif /* __DIADES__AUTOMATA__EXPERIMENTAL__TRANSITIONINSERTER__HH__ */
153 
Diades::Utils::Ptr< EventInserter >::P _eInserter
TransitionInserter(StateInserter &sInserter, EventInserter &eInserter)
AutFsm::State State
Definition: Run.cc:72
AutFsm::Transition Transition
Definition: Run.cc:73
TransitionInserter & operator=(TransitionInserter const &other)=default
Namespace of the Diades project.
Diades::Utils::Ptr< StateInserter >::P _sInserter