#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(ev) { FSM_T(STARTED, start); FSM_T(PUSH, push); FSM_T(QUIT, quit); } } void start() { println("<<< START"); state(RUNNING); } void push() { println("<<< RUN"); state(RUNNING); } void quit() { println("<<< STOP"); state(END); } }; int main() { MyFSM fsm; fsm.event(STARTED); fsm.event(PUSH); fsm.event(PUSH); fsm.event(PUSH); fsm.event(QUIT); }