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