Skip to main content

StateTransitionRule.ixx File

Definition of a state transition rule. More...

Included Headers

Namespaces Index

namespacehelios
namespaceengine
namespacestate
namespacetypes

Classes Index

classStateTransitionRule<StateType>

Defines a valid state transition with optional guard. More...

Description

Definition of a state transition rule.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7#include <functional>
8
9export module helios.engine.state.types.StateTransitionRule;
10
11import helios.engine.state.types.StateTransitionRequest;
12import helios.engine.state.types.StateTransitionId;
13import helios.engine.state.types.StateTransitionType;
14
15
16import helios.engine.runtime.world.UpdateContext;
17
18export namespace helios::engine::state::types {
19
28 template<typename StateType>
29 using GuardCallback = bool(*)(
32 );
33
46 template<typename StateType>
48
49 using StateTransitionIdType = StateTransitionIdType<StateType>;
50
54 StateType from_;
55
59 StateTransitionIdType transitionId_;
60
64 StateType to_;
65
69 GuardCallback<StateType> guard_ = nullptr;
70
71 public:
72
73 constexpr StateTransitionRule() :
74 from_(static_cast<StateType>(0)),
75 transitionId_(static_cast<StateTransitionIdType>(0)),
76 to_(static_cast<StateType>(0))
77 {}
78
88 const StateType from,
89 const StateTransitionIdType transitionId,
90 const StateType to,
92 ) : from_(from), transitionId_(transitionId), to_(to) {
93 if (guard != nullptr) {
94 guard_ = std::move(guard);
95 }
96 }
97
103 [[nodiscard]] StateType from() const noexcept {
104 return from_;
105 }
106
112 [[nodiscard]] StateType to() const noexcept { return to_; }
113
119 [[nodiscard]] StateTransitionIdType transitionId() const noexcept {
120 return transitionId_;
121 }
122
129 return guard_;
130 }
131
132 };
133
134}

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.