17template<
typename TEvent>
18class TransitionBuilder;
40template<
typename TEvent>
44 using Predicate = std::function<bool(
const TEvent&)>;
47 using Action = std::function<void(
const TEvent&)>;
115 std::vector<Predicate> predicates_;
116 std::vector<Action> actions_;
117 std::string_view target_state_;
122template<
typename TEvent>
124 if (predicates_.empty()) {
128 for (
const auto& pred : predicates_) {
136template<
typename TEvent>
138 for (
const auto& action : actions_) {
143template<
typename TEvent>
145 return target_state_;
148template<
typename TEvent>
153template<
typename TEvent>
155 return !predicates_.empty();
158template<
typename TEvent>
160 return !actions_.empty();
163template<
typename TEvent>
165 return !target_state_.empty();
168template<
typename TEvent>
171 predicates_.push_back(std::move(pred));
175template<
typename TEvent>
178 actions_.push_back(std::move(action));
182template<
typename TEvent>
184 target_state_ = state;
Builder for creating transitions with a fluent interface.
Definition FSMBuilder.hpp:37
Represents a transition between states in a finite state machine.
Definition Transition.hpp:41
const std::vector< Action > & getActions() const
Gets all actions associated with this transition.
Definition Transition.hpp:149
Transition(Transition &&)=default
Move constructor (defaulted)
bool hasPredicates() const
Checks if this transition has any predicates.
Definition Transition.hpp:154
bool predicatesPass(const TEvent &event) const
Evaluates all predicates for this transition.
Definition Transition.hpp:123
Transition()=default
Default constructor.
std::string_view getTargetState() const
Gets the target state for this transition.
Definition Transition.hpp:144
std::function< bool(const TEvent &)> Predicate
Type alias for transition guard predicates.
Definition Transition.hpp:44
bool hasActions() const
Checks if this transition has any actions.
Definition Transition.hpp:159
void addPredicate(Predicate pred)
Adds a predicate (guard condition) to this transition.
Definition Transition.hpp:169
std::function< void(const TEvent &)> Action
Type alias for transition actions.
Definition Transition.hpp:47
Transition & operator=(Transition &&)=default
Move assignment operator (defaulted)
bool hasTargetState() const
Checks if this transition has a target state.
Definition Transition.hpp:164
void addAction(Action action)
Adds an action to execute when this transition occurs.
Definition Transition.hpp:176
void setTargetState(std::string_view state)
Sets the target state for this transition.
Definition Transition.hpp:183
void executeActions(const TEvent &event) const
Executes all actions associated with this transition.
Definition Transition.hpp:137
Main namespace for the FSMgine library.
Definition FSM.hpp:23