当前位置: 首页> 教育> 培训 > 无锡网站设计系统_标志设计图片及说明_完整的网页设计代码_百度seo快速

无锡网站设计系统_标志设计图片及说明_完整的网页设计代码_百度seo快速

时间:2025/7/11 14:34:46来源:https://blog.csdn.net/weixin_45440210/article/details/144224755 浏览次数:0次
无锡网站设计系统_标志设计图片及说明_完整的网页设计代码_百度seo快速

namespace HSMUtilityDef
{
typedef uint32 t HSM_EVENT;
typedef struct HSM_STATE_T HSM_STATE;
typedef struct HSM_T HSM;

typedef HSM_EVENT(* HSM_FN)(HSM *aThis, HSM_EVENT aEvent, void *aParam);
const uint32 tHSM MAX DEPTH=5;
const HSM_EVENT HSME_NULL= 0;
const HSM_EVENT HSME_START = 1;
const HSM_EVENT HSME_INIT = ((HSM EVENT)(-3)) ConSt HSM_EVENT HSME_ENTRY=((HSM_EVENT)(-2));
const HSM_EVENT HSME_EXIT = ((HSM_EVENT)(-1));

struct HSM_STATE_T
{
HSM_STATE parent;
HSM_FN handler;
const char
name;
uint8_t level;
};

struct HSM_T
{
HSM_STATE *curState;
const char *name;
};

}
这段代码定义了一个名为 HSMUtilityDef 的命名空间,其中包含了一些类型定义和常量定义,用于实现一个层次状态机(Hierarchical State Machine, HSM)。下面是对代码的详细分析:

类型定义

  1. HSM_EVENT

    typedef uint32_t HSM_EVENT;
    

    这里将 uint32_t 类型重命名为 HSM_EVENT,用于表示事件的类型。通常,这些事件会有一些特定的意义和编号。

  2. HSM_STATE_THSM_STATE

    typedef struct HSM_STATE_T HSM_STATE;
    

    这里定义了一个结构体 HSM_STATE_T 并将其重命名为 HSM_STATE,用于表示状态机中的一个状态。

  3. HSM_THSM

    typedef struct HSM_T HSM;
    

    同样地,这里定义了一个结构体 HSM_T 并将其重命名为 HSM,用于表示整个层次状态机实例。

  4. HSM_FN

    typedef HSM_EVENT(* HSM_FN)(HSM _aThis, HSM_EVENT aEvent, void* aParam);
    

    这是一个函数指针类型定义。具体来说:

    • HSM_FN 是一个指向函数的指针。
    • 该函数接受三个参数:
      • HSM _aThis: 表示当前状态机实例的指针。
      • HSM_EVENT aEvent: 表示发生的事件。
      • void* aParam: 可以传递给处理函数的参数,类型为 void*,允许传递任意类型的参数。
    • 该函数返回一个 HSM_EVENT 类型的值,表示状态转换后的下一个事件(如果有的话)。

常量定义

  1. MAX_DEPTH

    const uint32_t MAX_DEPTH = 5;
    

    这个常量定义了层次状态机的最大嵌套深度为5。即状态可以最多嵌套5层。

  2. HSME_NULL

    const HSM_EVENT HSME_NULL = 0;
    

    表示一个空事件或无效事件。

  3. HSME_START

    const HSM_EVENT HSME_START = 1;
    

    表示启动事件,通常在状态机启动时触发。

  4. HSME_INIT

    const HSM_EVENT HSME_INIT = ((HSM_EVENT)(-3));
    

    表示初始化事件。这个事件用于初始化某个状态。负数表示这是一个特殊的、内部使用的事件。

  5. HSME_ENTRY

    const HSM_EVENT HSME_ENTRY = ((HSM_EVENT)(-2));
    

    表示进入事件。当状态机进入某个状态时会触发这个事件。

  6. HSME_EXIT

    const HSM_EVENT HSME_EXIT = ((HSM_EVENT)(-1));
    

    表示退出事件。当状态机从某个状态退出时会触发这个事件。

结构体定义

  1. HSM_STATE_T

    struct HSM_STATE_T {HSM_STATE *parent;  // 指向父状态的指针HSM_FN handler;     // 状态处理函数指针const char* name;   // 状态名称,用于调试和日志记录uint8_t level;      // 状态层级深度
    };
    

    这个结构体表示一个状态机中的状态。每个状态包含以下信息:

    • parent: 指向父状态的指针,用于构建层次结构。
    • handler: 处理该状态的函数指针,当进入此状态或在其中收到事件时会调用这个函数。
    • name: 状态名称,便于调试和日志记录。
    • level: 表示当前状态在层次结构中的层级深度。
  2. HSM_T

    struct HSM_T {HSM_STATE *curState;  // 当前活动状态指针const char *name;     // 状态机名称,用于调试和日志记录
    };
    

    这个结构体表示一个层次状态机实例。每个实例包含以下信息:

    • curState: 指向当前活动状态的指针。
    • name: 状态机名称,便于调试和日志记录。

示例代码中的关键点

  • HSM_FN 的使用:
    typedef HSM_EVENT(* HSM_FN)(HSM _aThis, HSM_EVENT aEvent, void* aParam);
    
    这个函数指针类型定义了状态处理函数的接口。每个状态可以有一个处理函数,该函数会根据接收到的事件决定如何响应。例如:
    HSM_EVENT myStateHandler(HSM _aThis, HSM_EVENT aEvent, void* aParam) {switch (aEvent) {case HSME_ENTRY:// 处理进入状态的操作break;case HSME_EXIT:// 处理退出状态的操作break;case HSME_INIT:// 初始化操作break;default:// 其他事件处理break;}return HSME_NULL;  // 返回下一个事件或HSME_NULL表示没有后续事件
    }
    

通过这些定义,你可以构建一个灵活且强大的层次状态机系统,适用于各种复杂的状态管理需求。

关键字:无锡网站设计系统_标志设计图片及说明_完整的网页设计代码_百度seo快速

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: