封装publicfcns

This commit is contained in:
godcreator02 2024-05-07 15:52:18 +08:00
parent a5cd5ec864
commit 32a1642b19
5 changed files with 18 additions and 10 deletions

View File

@ -7,6 +7,11 @@
#include "FSM_protected.h"
#include "FSM_public.h"
/* -------------------------------------------------------------------------- */
/* private函数 */
/* -------------------------------------------------------------------------- */
@ -116,7 +121,7 @@ void resetBaseFSM(FSM *pFSM)
}
void _stepFSM(FSM *pFSM){
pFSM->step(pFSM);
pFSM->publicFcns.step(pFSM);
}
@ -200,7 +205,7 @@ FSM* newBaseFSM(int numState, int defaultState){
FSM *pFSM = calloc(1, sizeof(FSM));
pFSM->privateVars = newFMSPrivateVars(numState, defaultState);
FSMPureVtbl pureVtbl = {
.setupHandler = NULL,
.initData = NULL,
@ -211,8 +216,8 @@ FSM* newBaseFSM(int numState, int defaultState){
};
pFSM->pureVtbl = pureVtbl;
pFSM->step = stepBaseFSM;
pFSM->reset = resetBaseFSM;
pFSM->publicFcns.step = resetBaseFSM;
pFSM->publicFcns.reset = resetBaseFSM;
return pFSM;
}

View File

@ -116,10 +116,7 @@ typedef struct FSMPureVtbl {
/* -------------------------------------------------------------------------- */
typedef struct FSM
{
// public functions
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
FSMPublicFcns publicFcns;
// protected
FSMPureVtbl pureVtbl;

View File

@ -17,6 +17,13 @@ typedef unsigned long Uint32;
typedef struct FSM FSM;
typedef struct FSMPublicFcns
{
void (*step)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
void (*reset)(FSM *pFSM); // 子类重新实现可以添加一些打印信息
}FSMPublicFcns;
/* -------------------------------- 避免警告的函数定义 ------------------------------- */
#define Step(pFSM) _stepFSM((FSM *)pFSM)
#define PreloaderGetReady(pFSM) _preloaderGetReady((FSM *)pFSM);

View File

@ -110,7 +110,7 @@ TemplateFSM *createTemplateFSM(){
pFSM = (TemplateFSM *)newBaseFSM(Count_State, DEFAULT_STATE);
// 重新实现的函数
pFSM->base.step = (Avoid_WARNING_Overrider_Fcns)step;
pFSM->base.publicFcns.step = (Avoid_WARNING_Overrider_Fcns)step;
pFSM->base.pureVtbl.initData = (Avoid_WARNING_Overrider_Fcns)initData;
pFSM->base.pureVtbl.initDataLoader = (Avoid_WARNING_Overrider_Fcns)initDataLoader;
pFSM->base.pureVtbl.setupHandler = (Avoid_WARNING_void_fcns)setupHandler;

View File

@ -100,7 +100,6 @@ static void actionFcn(exit, E)()
/* 转移函数 */
/* -------------------------------------------------------------------------- */
static void transitionGeneralAction(FSM pFSM){
FSM_LOG("general");
}