yasmine
build_transition_steps_visitor.hpp
Go to the documentation of this file.
1 // //
3 // This file is part of the Seadex yasmine ecosystem (http://yasmine.seadex.de). //
4 // Copyright (C) 2016-2017 Seadex GmbH //
5 // //
6 // Licensing information is available in the folder "license" which is part of this distribution. //
7 // The same information is available on the www @ http://yasmine.seadex.de/Licenses.html. //
8 // //
10 
11 
12 #ifndef BUILD_TRANSITION_STEPS_VISITOR_85FF1B04_191D_4BED_A446_C9280A2883C8
13 #define BUILD_TRANSITION_STEPS_VISITOR_85FF1B04_191D_4BED_A446_C9280A2883C8
14 
15 
16 #include "const_vertex_visitor.hpp"
17 #include "vertex_visitor.hpp"
18 #include "transition_step_fwd.hpp"
19 #include "transition_fwd.hpp"
20 
21 
22 namespace sxy
23 {
24 
25 
26 class transition;
27 class pseudostate;
28 class history;
29 class event;
30 class event_collector;
31 
32 
33 class build_transition_steps_visitor SX_FINAL:
34  public virtual const_vertex_visitor
35 {
36 public:
37  build_transition_steps_visitor( transition& _current_transition, transition_steps& _transitions_steps,
38  const event& _event, event_collector& _event_collector );
39  virtual ~build_transition_steps_visitor() SX_NOEXCEPT SX_OVERRIDE;
40  SX_NO_COPY(build_transition_steps_visitor)
41  virtual void visit( const composite_state& _composite_state ) SX_OVERRIDE;
42  virtual void visit( const simple_state& _simple_state ) SX_OVERRIDE;
43  virtual void visit( const final_state& _final_state ) SX_OVERRIDE;
44  virtual void visit( const initial_pseudostate& _initial_pseudostate ) SX_OVERRIDE;
45  virtual void visit( const choice& _choice ) SX_OVERRIDE;
46  virtual void visit( const junction& _junction ) SX_OVERRIDE;
47  virtual void visit( const join& _join ) SX_OVERRIDE;
48  virtual void visit( const fork& _fork ) SX_OVERRIDE;
49  virtual void visit( const entry_point& _entry_point ) SX_OVERRIDE;
50  virtual void visit( const exit_point& _exit_point ) SX_OVERRIDE;
51  virtual void visit( const deep_history& _deep_history ) SX_OVERRIDE;
52  virtual void visit( const shallow_history& _shallow_history ) SX_OVERRIDE;
53  virtual void visit( const terminate_pseudostate& _terminate_pseudostate ) SX_OVERRIDE;
54  transition * get_next_transition() const;
55  bool reached_end_of_transition() const;
56 
57 
58 private:
59  transition* find_next_transition( const pseudostate& _target_pseudostate, const event& _event );
60  static raw_transitions get_default_transition_if_state_was_not_active_before( const history& _history );
61  void handle_history_pseudostate( const history& _history_pseudostate );
62  void handle_as_junction( const pseudostate& _pseudostate );
63  void handle_as_fork( const pseudostate& _fork ) const;
64  void handle_as_join( const pseudostate& _pseudostate );
65  void handle_entry_point( const entry_point& _entry_point );
66  void handle_exit_point( const exit_point& _exit_point );
67  void create_simple_transition_step();
68 
69  transition& current_transition_;
70  transition_steps& transition_steps_;
71  transition* next_transition_;
72  bool reached_end_of_transition_;
73  const event& event_;
74  event_collector& event_collector_;
75 };
76 
77 
78 }
79 
80 
81 #endif
Definition: adapter_cpp11.hpp:21
std::vector< transition *> raw_transitions
Definition: transition_fwd.hpp:30
std::vector< transition_step_uptr > transition_steps
Definition: transition_step_fwd.hpp:28