state_machine_cpp
transition_any.h
Go to the documentation of this file.
1 //
2 // Created by henri on 22/04/21.
3 //
4 
5 #ifndef STATE_MACHINE_CPP_TRANSITION_ANY_H
6 #define STATE_MACHINE_CPP_TRANSITION_ANY_H
7 
8 #include <list>
9 #include <functional>
10 #include <vector>
11 #include <string>
12 
13 #include "states/state_any.h"
14 #include "impl/__hash.h"
15 #include "transition_handlers.h"
16 
17 namespace state_machine_cpp {
18  class Context;
19  namespace Transition {
20  class Any;
21  }
22 }
23 
25  const State::Instance m_initial_state;
26  std::function<int(Context&)> m_function {};
27  std::vector<State::Instance> m_next_states;
29  bool m_is_final = false;
30  std::string m_description;
31 public:
32  Any(const State::Instance& t_initial_state); // NOLINT(google-explicit-constructor)
33 
34  [[nodiscard]] const State::Instance& initial_state() const { return m_initial_state; }
35  [[nodiscard]] std::vector<State::Instance> next_states() const;
36  const State::Instance& operator()(Context& t_context) const;
37 
38  void set_handler(Transition::Type t_transition_type, std::vector<State::Instance>&& t_next_states, std::function<int(Context&)>&& t_handler);
39  void reset_handler();
40  void set_as_final();
41  void set_description(std::string t_description);
42 
43  [[nodiscard]] bool has_handler() const;
44  [[nodiscard]] bool is_final() const;
45  [[nodiscard]] bool is_virtual() const;
46  [[nodiscard]] Type type() const;
47  [[nodiscard]] const std::string& description() const;
48 
49  struct by_hash {
50 
51  long unsigned int operator()(const Any& t_x) const {
53  }
54 
55  bool operator()(const Any& t_a, const Any& t_b) const {
56  return t_a.initial_state() == t_b.initial_state();
57  }
58  };
59 };
60 
61 
62 #endif //STATE_MACHINE_CPP_TRANSITION_ANY_H
state_machine_cpp::Transition::Any::by_hash::operator()
bool operator()(const Any &t_a, const Any &t_b) const
Definition: transition_any.h:55
state_machine_cpp::Transition::Type
Type
Definition: transition_handlers.h:19
state_machine_cpp::Transition::Any::set_description
void set_description(std::string t_description)
state_machine_cpp::Transition::Any
Definition: transition_any.h:24
state_machine_cpp::Transition::Any::operator()
const State::Instance & operator()(Context &t_context) const
state_machine_cpp::Transition::Any::has_handler
bool has_handler() const
state_machine_cpp::Transition::Any::initial_state
const State::Instance & initial_state() const
Definition: transition_any.h:34
state_any.h
state_machine_cpp::Transition::Any::Any
Any(const State::Instance &t_initial_state)
state_machine_cpp::State::Instance
Definition: state_instance.h:23
state_machine_cpp
Definition: algorithm.h:14
state_machine_cpp::Transition::Any::by_hash::operator()
long unsigned int operator()(const Any &t_x) const
Definition: transition_any.h:51
state_machine_cpp::Transition::Any::set_handler
void set_handler(Transition::Type t_transition_type, std::vector< State::Instance > &&t_next_states, std::function< int(Context &)> &&t_handler)
state_machine_cpp::Transition::Any::is_final
bool is_final() const
state_machine_cpp::Transition::Any::next_states
std::vector< State::Instance > next_states() const
state_machine_cpp::Transition::Any::description
const std::string & description() const
__hash.h
state_machine_cpp::Transition::Any::is_virtual
bool is_virtual() const
transition_handlers.h
state_machine_cpp::hash::get
static std::size_t get(const T &t_x)
Definition: __hash.h:11
state_machine_cpp::Transition::Any::type
Type type() const
state_machine_cpp::Transition::Any::by_hash
Definition: transition_any.h:49
state_machine_cpp::Transition::Type::Undefined
@ Undefined
state_machine_cpp::Transition::Any::reset_handler
void reset_handler()
state_machine_cpp::Context
Definition: context.h:25
state_machine_cpp::Transition::Any::set_as_final
void set_as_final()