FSM is no longer needed but it may be back.
This commit is contained in:
parent
87149af4c7
commit
589373bf22
2 changed files with 0 additions and 31 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
28
fsm.hpp
28
fsm.hpp
|
@ -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…
Add table
Add a link
Reference in a new issue