yasmine
region.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 REGION_06648EA9_E80A_49B8_9814_1723273908D2
13 #define REGION_06648EA9_E80A_49B8_9814_1723273908D2
14 
15 
17 #include "state_fwd.hpp"
18 #include "region_fwd.hpp"
19 #include "pseudostate_fwd.hpp"
21 #include "choice_fwd.hpp"
22 #include "fork_fwd.hpp"
23 #include "join_fwd.hpp"
24 #include "junction_fwd.hpp"
26 #include "behavior_fwd.hpp"
27 #include "async_behavior.hpp"
28 #include "event_fwd.hpp"
29 #include "event_id.hpp"
30 
31 
32 namespace sxy
33 {
34 
35 
36 class vertex;
37 class composite_state;
38 class simple_state;
39 class final_state;
40 
41 
42 class region: public virtual state_machine_element
43 {
44 public:
45  region()
46  {
47  // Nothing to do...
48  }
49 
50 
51  virtual ~region () SX_NOEXCEPT SX_OVERRIDE
52  {
53  // Nothing to do...
54  }
55 
56 
57  SX_NO_COPY(region)
58  virtual void set_parent_state( composite_state* const _composite_state ) = 0;
59  virtual const composite_state& get_parent_state() const = 0;
60  virtual composite_state& get_parent_state() = 0;
61  virtual raw_const_states get_states() const = 0;
62  virtual size_t get_pseudostate_count() const = 0;
63  virtual vertex* get_pseudostate( const std::string& _name ) const = 0;
64  virtual vertex* get_vertex( const std::string& _vertex_name ) const = 0;
65  virtual raw_const_pseudostates get_pseudostates() const = 0;
66  virtual initial_pseudostate* get_initial_pseudostate() const = 0;
68  virtual initial_pseudostate& add_initial_pseudostate( const std::string& _initial_state_name ) = 0;
69  virtual state& add_state( state_uptr _state ) = 0;
70  virtual choice& add_choice( choice_uptr _choice ) = 0;
71  virtual choice& add_choice( const std::string& _choice_name ) = 0;
72  virtual fork& add_fork( fork_uptr _fork ) = 0;
73  virtual fork& add_fork( const std::string& _fork_name ) = 0;
74  virtual join& add_join( join_uptr _join ) = 0;
75  virtual join& add_join( const std::string& _join_name ) = 0;
76  virtual junction& add_junction( junction_uptr _junction ) = 0;
77  virtual junction& add_junction( const std::string& _junction_name ) = 0;
79  terminate_pseudostate_uptr _terminate_pseudostate ) = 0;
80  virtual terminate_pseudostate& add_terminate_pseudostate( const std::string& _terminate_pseudostate_name ) = 0;
81  virtual simple_state& add_simple_state( const std::string& _name,
82  const behavior_function& _behavior = behavior_function(),
83  const behavior_function& _entry_behavior = behavior_function(),
84  const behavior_function& _exit_behavior = behavior_function() ) = 0;
85  virtual simple_state& add_simple_state( const std::string& _name, const event_ids& _deferred_events,
86  const behavior_function& _behavior = behavior_function(),
87  const behavior_function& _entry_behavior = behavior_function(),
88  const behavior_function& _exit_behavior = behavior_function(),
89  event_sptr _error_event = event_sptr() ) = 0;
90  virtual simple_state& add_async_simple_state( const std::string& _name, const event_ids& _deferred_events,
91  async_behavior_uptr _do_action = async_behavior_uptr(), const behavior_function& _entry_behavior = behavior_function(),
92  const behavior_function& _exit_behavior = behavior_function(),
93  event_sptr _error_event = event_sptr() ) = 0;
94  virtual composite_state& add_composite_state( const std::string& _name,
95  const behavior_function& _entry_action = behavior_function(),
96  const behavior_function& _exit_action = behavior_function() ) = 0;
97  virtual composite_state& add_composite_state( const std::string& _name, const event_ids& _deferred_events,
98  const behavior_function& _entry_action = behavior_function(),
99  const behavior_function& _exit_action = behavior_function() ) = 0;
100  virtual final_state& add_final_state( const std::string& _name ) = 0;
101  virtual size_t get_state_count() const = 0;
102  virtual state* get_state( const std::string& _name ) const = 0;
103  virtual const state* get_active_state() const = 0;
104  virtual state* get_active_state() = 0;
105  virtual void set_active_state( state* const _active_state ) = 0;
106  virtual void set_state_was_active( state* const _active_state ) = 0;
107  virtual const state* get_last_active_state() const = 0;
108  virtual state* get_last_active_state() = 0;
109  virtual bool is_active_state_final() const = 0;
110  virtual bool check( state_machine_defects& _defects ) const SX_OVERRIDE = 0;
111 };
112 
113 
114 }
115 
116 
117 #endif
virtual bool is_active_state_final() const =0
sxe::SX_UNIQUE_PTR< initial_pseudostate > initial_pseudostate_uptr
Definition: initial_pseudostate_fwd.hpp:23
std::vector< state_machine_defect > state_machine_defects
Definition: state_machine_defect_fwd.hpp:23
Definition: state.hpp:33
Definition: state_machine_element.hpp:26
virtual junction & add_junction(junction_uptr _junction)=0
virtual size_t get_pseudostate_count() const =0
virtual bool check(state_machine_defects &_defects) const SX_OVERRIDE=0
virtual size_t get_state_count() const =0
sxe::SX_UNIQUE_PTR< junction > junction_uptr
Definition: junction_fwd.hpp:25
virtual initial_pseudostate * get_initial_pseudostate() const =0
virtual fork & add_fork(fork_uptr _fork)=0
virtual join & add_join(join_uptr _join)=0
virtual state * get_state(const std::string &_name) const =0
virtual composite_state & add_composite_state(const std::string &_name, const behavior_function &_entry_action=behavior_function(), const behavior_function &_exit_action=behavior_function())=0
virtual final_state & add_final_state(const std::string &_name)=0
virtual raw_const_states get_states() const =0
Definition: composite_state.hpp:28
Definition: initial_pseudostate.hpp:27
virtual const state * get_active_state() const =0
Definition: region.hpp:42
Definition: fork.hpp:24
Definition: terminate_pseudostate.hpp:24
virtual void set_parent_state(composite_state *const _composite_state)=0
Definition: adapter_cpp11.hpp:21
std::vector< const pseudostate *> raw_const_pseudostates
Definition: pseudostate_fwd.hpp:28
Definition: final_state.hpp:23
virtual simple_state & add_async_simple_state(const std::string &_name, const event_ids &_deferred_events, async_behavior_uptr _do_action=async_behavior_uptr(), const behavior_function &_entry_behavior=behavior_function(), const behavior_function &_exit_behavior=behavior_function(), event_sptr _error_event=event_sptr())=0
virtual void set_state_was_active(state *const _active_state)=0
sxe::SX_UNIQUE_PTR< state > state_uptr
Definition: state_fwd.hpp:27
virtual raw_const_pseudostates get_pseudostates() const =0
virtual ~region() SX_NOEXCEPT SX_OVERRIDE
Definition: region.hpp:51
Definition: junction.hpp:24
virtual void set_active_state(state *const _active_state)=0
virtual simple_state & add_simple_state(const std::string &_name, const behavior_function &_behavior=behavior_function(), const behavior_function &_entry_behavior=behavior_function(), const behavior_function &_exit_behavior=behavior_function())=0
Definition: vertex.hpp:36
virtual vertex * get_pseudostate(const std::string &_name) const =0
virtual initial_pseudostate & add_initial_pseudostate(initial_pseudostate_uptr _initial_state)=0
std::vector< const state *> raw_const_states
Definition: state_fwd.hpp:29
Definition: simple_state.hpp:23
sxe::shared_ptr< event > event_sptr
Definition: event_fwd.hpp:25
Definition: choice.hpp:24
virtual choice & add_choice(choice_uptr _choice)=0
Definition: join.hpp:24
sxe::SX_UNIQUE_PTR< async_behavior > async_behavior_uptr
Definition: async_behavior_fwd.hpp:24
sxe::SX_UNIQUE_PTR< choice > choice_uptr
Definition: choice_fwd.hpp:25
sxe::SX_UNIQUE_PTR< fork > fork_uptr
Definition: fork_fwd.hpp:25
virtual state & add_state(state_uptr _state)=0
sxe::function< void(const event &, event_collector &) > behavior_function
Definition: behavior_fwd.hpp:29
virtual vertex * get_vertex(const std::string &_vertex_name) const =0
virtual const state * get_last_active_state() const =0
std::vector< event_id > event_ids
The type alias for yasmine&#39;s event ID list.
Definition: event_id.hpp:29
region()
Definition: region.hpp:45
sxe::SX_UNIQUE_PTR< terminate_pseudostate > terminate_pseudostate_uptr
Definition: terminate_pseudostate_fwd.hpp:25
sxe::SX_UNIQUE_PTR< join > join_uptr
Definition: join_fwd.hpp:25
virtual terminate_pseudostate & add_terminate_pseudostate(terminate_pseudostate_uptr _terminate_pseudostate)=0
virtual const composite_state & get_parent_state() const =0