#include #include "../fsm.hpp" using namespace fmt; enum class MyState { START, RUNNING, END }; enum class MyEvent { STARTED, PUSH, QUIT }; class MyFSM : DeadSimpleFSM { public: void event(MyEvent ev) override { switch(_state) { FSM_STATE(MyState, START, start, ev); FSM_STATE(MyState, RUNNING, push, ev); FSM_STATE(MyState, END, quit, ev); } } void start(MyEvent ev) { println("<<< START"); state(MyState::RUNNING); } void push(MyEvent ev) { println("<<< RUN"); state(MyState::RUNNING); } void quit(MyEvent ev) { println("<<< STOP"); state(MyState::END); } }; int main() { MyFSM fsm; fsm.event(MyEvent::STARTED); fsm.event(MyEvent::PUSH); fsm.event(MyEvent::PUSH); fsm.event(MyEvent::PUSH); fsm.event(MyEvent::QUIT); }