Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

元状态机 (MSM)

Christophe Henry


目录

前言
I. 用户指南
1. 基本思想
2. UML 简明指南
什么是状态机?
概念
状态机、状态、转换、事件
子状态机、正交区域、伪状态
历史
完成转换 / 匿名转换
内部转换
冲突转换
添加的概念
状态机词汇表
3. 教程
设计
基本前端
一个简单的例子
转换表
使用进入/退出动作定义状态
您在动作/守卫内部实际做什么?
定义一个简单的状态机
定义一个子状态机
正交区域、终止状态、事件延迟
历史
完成(匿名)转换
内部转换
更多行类型
显式进入 / 进入和退出伪状态 / 分叉
标志
事件层次结构
自定义状态机 / 获取更快的速度
选择初始事件
包含状态机(已弃用)
函数对象前端
转换表
使用进入/退出动作定义状态
您在动作/守卫内部实际做什么?(第二部分)
定义一个简单的状态机
匿名转换
内部转换
Kleene (任意) 事件
PUML (C++-20),实验性
PlantUML 基础知识
复合状态机
eUML
转换表
一个简单的例子:仅重写我们的转换表
使用进入/退出动作定义事件、动作和状态
封装一个简单的状态机和第一个完整的例子
定义一个子状态机
属性 / 函数调用
正交区域、标志、事件延迟
自定义状态机 / 获取更快的速度
完成 / 匿名转换
内部转换
Kleene(任意) 事件)
其他状态类型
辅助函数
类似 Phoenix 的 STL 支持
使用 Boost.Phoenix 编写动作(开发中)
后端
创建
启动和停止状态机
事件分派
活动状态
上层状态机(仅限 msm::back11)
序列化
基本状态类型
访问者
标志
获取状态
带参数的状态机构造函数
为更好的编译时/多 TU 编译交换运行时速度(仅限 msm::back)
编译时状态机分析
排队事件以供稍后处理
自定义消息队列
使用 Boost.Parameter 定义策略
选择何时切换活动状态
4. 性能 / 编译器
速度
可执行文件大小
支持的编译器
限制
编译器专栏
5. 问答、提示
6. 内部结构
后端:运行至完成
前端/后端接口
生成的状态 ID
元编程工具
7. 鸣谢
MSM v2
MSM v1
8. 版本历史
Boost 1.85
Boost 1.72
Boost 1.57
Boost 1.56
Boost 1.55
Boost 1.54
从 V2.23 到 V2.24 (Boost 1.51)
从 V2.22 到 V2.23 (Boost 1.50)
从 V2.21 到 V2.22 (Boost 1.48)
从 V2.20 到 V2.21 (Boost 1.47)
从 V2.12 到 V2.20 (Boost 1.46)
从 V2.10 到 V2.12 (Boost 1.45)
从 V2.0 到 V2.12 (Boost 1.44)
II. 参考
9. MSM 的外部参考
10. eUML 操作符和基本助手
11. 函数式编程
通用头文件 — 前端和后端使用的通用类型
后端 — 后端头文件
前端 — 前端头文件

表格列表

10.1. 操作符和状态机助手
11.1. STL 算法
11.2. STL 算法
11.3. STL 算法
11.4. STL 容器方法
11.5. STL 列表方法
11.6. STL 关联容器方法
11.7. STL pair
11.8. STL 字符串