FSM is no longer needed but it may be back.

main
Zed A. Shaw 3 days ago
parent 87149af4c7
commit 589373bf22
  1. 3
      demos/calc.cpp
  2. 28
      fsm.hpp

@ -7,9 +7,6 @@
#include <fmt/xchar.h> #include <fmt/xchar.h>
#include <deque> #include <deque>
#define FSM_DEBUG 1
#include "fsm.hpp"
constexpr const int WINDOW_WIDTH=300; constexpr const int WINDOW_WIDTH=300;
constexpr const int WINDOW_HEIGHT=400; constexpr const int WINDOW_HEIGHT=400;

@ -1,28 +0,0 @@
#pragma once
#include <fmt/core.h>
#ifndef FSM_DEBUG
#define FSM_STATE(C, S, E, ...) case C::S: S(E, ##__VA_ARGS__); break
#else
#define FSM_STATE(C, S, E, ...) case C::S: fmt::println(">> " #C " " #S " event={}, state={}", int(E), int($state)); S(E, ##__VA_ARGS__); fmt::println("<< " #C " state={}", int($state)); break
#endif
template<typename S, typename E>
class DeadSimpleFSM {
protected:
// BUG: don't put this in your class because state() won't work
S $state = S::START;
public:
template<typename... Types>
void event(E event, Types... args);
void state(S next_state) {
$state = next_state;
}
bool in_state(S state) {
return $state == state;
}
};
Loading…
Cancel
Save