Libftpp
A modern C++ library
StateMachine< TState > Class Template Reference

State Machine Design Pattern. More...

#include <state_machine.hpp>

Public Member Functions

void addState (const TState &state)
 
void addTransition (const TState &startState, const TState &finalState, const std::function< void()> &lambda)
 
void addAction (const TState &state, const std::function< void()> &lambda)
 
void transitionTo (const TState &state)
 
void update ()
 

Detailed Description

template<typename TState>
class StateMachine< TState >

State Machine Design Pattern.

Template Parameters
TStateType representing the states (e.g., enum, string, int)
enum class States
{
Idle,
Running,
Paused
};
sm.addState(States::Idle);
sm.addState(States::Running);
sm.addState(States::Paused);
sm.addTransition(States::Idle, States::Running, []() {
std::cout << "Transitioning from Idle to Running" << std::endl;
});
sm.addAction(States::Running, []() {
std::cout << "Currently Running" << std::endl;
});
sm.transitionTo(States::Running);
// Outputs: "Transitioning from Idle to Running"
sm.update();
// Outputs: "Currently Running"
State Machine Design Pattern.
void transitionTo(const TState &state)
void addTransition(const TState &startState, const TState &finalState, const std::function< void()> &lambda)
void addState(const TState &state)
void addAction(const TState &state, const std::function< void()> &lambda)
Warning
The first state added becomes the initial state.

Definition at line 47 of file state_machine.hpp.

Member Function Documentation

◆ addAction()

template<typename TState >
void StateMachine< TState >::addAction ( const TState &  state,
const std::function< void()> &  lambda 
)
inline

Definition at line 76 of file state_machine.hpp.

◆ addState()

template<typename TState >
void StateMachine< TState >::addState ( const TState &  state)
inline

Definition at line 56 of file state_machine.hpp.

◆ addTransition()

template<typename TState >
void StateMachine< TState >::addTransition ( const TState &  startState,
const TState &  finalState,
const std::function< void()> &  lambda 
)
inline

Definition at line 65 of file state_machine.hpp.

◆ transitionTo()

template<typename TState >
void StateMachine< TState >::transitionTo ( const TState &  state)
inline

Definition at line 81 of file state_machine.hpp.

◆ update()

template<typename TState >
void StateMachine< TState >::update ( )
inline

Definition at line 90 of file state_machine.hpp.