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 This was SVN commit r27385.
This commit is contained in:
parent
c8e24927b2
commit
fc392a4367
@ -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<Condition*>(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<Action*>(it->pFunction);
|
||||
result &= action(it->pContext, m_Event);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,30 +18,31 @@
|
||||
#ifndef FSM_H
|
||||
#define FSM_H
|
||||
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
|
||||
#define FSM_INVALID_STATE (unsigned int)(~0)
|
||||
constexpr unsigned int FSM_INVALID_STATE{std::numeric_limits<unsigned int>::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<unsigned int> StateSet;
|
||||
typedef std::map<unsigned int, CFsmEvent*> EventMap;
|
||||
typedef std::vector<CFsmTransition*> TransitionList;
|
||||
typedef std::vector<CallbackFunction> CallbackList;
|
||||
using StateSet = std::set<unsigned int>;
|
||||
using EventMap = std::map<unsigned int, CFsmEvent*>;
|
||||
using TransitionList = std::vector<CFsmTransition*>;
|
||||
using CallbackList = std::vector<CallbackFunction>;
|
||||
|
||||
/**
|
||||
* Represents a signal in the state machine that a change has occurred.
|
||||
|
Loading…
Reference in New Issue
Block a user