yasmine
region_pseudostate_impl.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_PSEUDOSTATE_IMPL_4F059791_948F_4CB6_9EDA_5CD4338F2255
13 #define REGION_PSEUDOSTATE_IMPL_4F059791_948F_4CB6_9EDA_5CD4338F2255
14 
15 
16 #include "region_pseudostate.hpp"
17 #include "pseudostate_impl.hpp"
18 #include "optimization.hpp"
19 
20 
21 namespace sxy
22 {
23 
24 
26  public virtual region_pseudostate, public pseudostate_impl
27 {
28 public:
29  explicit region_pseudostate_impl( const std::string& _name );
30  virtual ~region_pseudostate_impl() SX_NOEXCEPT SX_OVERRIDE;
31  virtual const state_machine_element * get_parent() const SX_OVERRIDE;
32  virtual region * get_parent_region() const SX_OVERRIDE;
33  virtual void set_parent_region( region* const _parent_region ) SX_OVERRIDE;
34  virtual raw_composite_states get_ancestors( composite_state* const _final_ancestor,
35  bool _include_final_ancestor = true ) const SX_OVERRIDE;
36  virtual raw_regions get_ancestors_as_regions() const SX_OVERRIDE;
37 
38 
39 private:
40  void collect_ancestors( raw_composite_states& _ancestors, composite_state* const _final_ancestor ) const;
41  void collect_ancestors_as_regions( raw_regions& _ancestor_regions ) const;
42 
43 
44  region* parent_;
45 
46 #ifdef Y_OPTIMIZE_4_SPEED
47  mutable raw_composite_states ancestors_;
48  mutable raw_regions ancestors_as_regions_;
49 #endif
50 };
51 
52 
53 }
54 
55 #endif
Definition: state_machine_element.hpp:26
std::vector< composite_state *> raw_composite_states
Definition: composite_state_fwd.hpp:27
virtual raw_regions get_ancestors_as_regions() const SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:112
virtual raw_composite_states get_ancestors(composite_state *const _final_ancestor, bool _include_final_ancestor=true) const SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:68
virtual region * get_parent_region() const SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:55
Definition: composite_state.hpp:28
Definition: region_pseudostate.hpp:23
Definition: region.hpp:42
Definition: adapter_cpp11.hpp:21
virtual const state_machine_element * get_parent() const SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:49
virtual ~region_pseudostate_impl() SX_NOEXCEPT SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:43
std::vector< region *> raw_regions
Definition: region_fwd.hpp:29
Definition: pseudostate_impl.hpp:24
region_pseudostate_impl(const std::string &_name)
Definition: region_pseudostate_impl.cpp:28
virtual void set_parent_region(region *const _parent_region) SX_OVERRIDE
Definition: region_pseudostate_impl.cpp:61
Definition: region_pseudostate_impl.hpp:25