fsm.h

来自「MARS加密解密」· C头文件 代码 · 共 64 行

H
64
字号
// FSM.h: interface for the CFSM class.
//
//	本程序是《疯狂的火星虫—面向对象状态机实践指南》的演示程序
//
//	版权所有 (C) 2004 王咏武
//	http://www.contextfree.net/wangyw/
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)
#define AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>
#include "State.h"

using namespace std;

class CFSM
{
public:
    CFSM() {}
    virtual ~CFSM();

    void Serialize(CArchive& ar)
    {
        if (ar.IsStoring())
        {
            // TODO: add storing code here
            CString str(GetActiveLeaf());
            ar << str;
        }
        else
        {
            // TODO: add loading code here
            CString str;
            ar >> str;
            // 序列化后迁移状态
            TransitTo(str);
        }
    }
    
    void ActiveDefaultState();

    void Active(CState * pRoot);

    void TransitTo(const char * lpName);

    void SendEvent(WORD wEvent, WORD wParam, DWORD lParam);

    const char * GetActiveLeaf();

    CState * GetState(const char * lpName);

protected:
    vector<CState *>    m_States;       // 所有的状态
};

#endif // !defined(AFX_FSM_H__336B4996_DF5B_4CFE_BBF4_9D771F19CB23__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?