From 08a7cfe35324d1cc3cad7cfb7a0be980f07593a5 Mon Sep 17 00:00:00 2001 From: Stan Date: Sat, 7 Jan 2023 21:41:30 +0000 Subject: [PATCH] FSM cleanup: - Use reinterpret_cast. - Use using instead of typedef. - Use PascalCase for CONDITION and ACTION. - Use constexpr instead of #define. Patch by: @phosit Differential Revision: https://code.wildfiregames.com/D4868 git-svn-id: https://svn.wildfiregames.com/public/ps/trunk@27385 3db68df2-c116-0410-a063-a993310a9797 --- source/network/FSM.cpp | 8 ++++---- source/network/FSM.h | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/source/network/FSM.cpp b/source/network/FSM.cpp index 39ff5ec5b5..5d4c49bd13 100644 --- a/source/network/FSM.cpp +++ b/source/network/FSM.cpp @@ -88,8 +88,8 @@ bool CFsmTransition::ApplyConditions() const if (it->pFunction) { // Evaluate condition - CONDITION Condition = (CONDITION)it->pFunction; - eval &= Condition(it->pContext); + Condition* condition = reinterpret_cast(it->pFunction); + eval &= condition(it->pContext); } } @@ -106,8 +106,8 @@ bool CFsmTransition::RunActions() const if (it->pFunction) { // Run action - ACTION Action = (ACTION)it->pFunction; - result &= Action(it->pContext, m_Event); + Action* action = reinterpret_cast(it->pFunction); + result &= action(it->pContext, m_Event); } } diff --git a/source/network/FSM.h b/source/network/FSM.h index 9d5507d5ab..ce3fc22518 100644 --- a/source/network/FSM.h +++ b/source/network/FSM.h @@ -18,30 +18,31 @@ #ifndef FSM_H #define FSM_H -#include -#include +#include #include +#include +#include -#define FSM_INVALID_STATE (unsigned int)(~0) +constexpr unsigned int FSM_INVALID_STATE{std::numeric_limits::max()}; class CFsmEvent; class CFsmTransition; class CFsm; -typedef bool (*CONDITION)(void* pContext); -typedef bool (*ACTION)(void* pContext, const CFsmEvent* pEvent); +using Condition = bool(void* pContext); +using Action = bool(void* pContext, const CFsmEvent* pEvent); -typedef struct +struct CallbackFunction { void* pFunction; void* pContext; -} CallbackFunction; +}; -typedef std::set StateSet; -typedef std::map EventMap; -typedef std::vector TransitionList; -typedef std::vector CallbackList; +using StateSet = std::set; +using EventMap = std::map; +using TransitionList = std::vector; +using CallbackList = std::vector; /** * Represents a signal in the state machine that a change has occurred. -- 2.11.4.GIT