摘要: boost statechart接触了boost的状态机,发现不是想象中的那么好用,在一些地方还得用上mpl库里的东西,由于对模板元编程不是很熟练,搞了好些天才算弄明白这该死的mpl::list的原理和用法。boost的状态机是属于静态链接的状态机,也就是说,它的图结构是编译期间就确定了的,在运行时不可以动态配置。所以,它的用途是有一定局限性的,但在一般情况下,它不仅很通用,而且在你会用并熟练地情况下,还会很好用,用起来很舒服,逻辑也很合理。下面就是一段代码,当然也是借鉴了别人的东西,自己修改了一下,在MainState中添加了一个Transition做了测试,因为此前我还不知道一个状态如何包 阅读全文
posted @ 2011-12-13 14:01 且听风吟~ 阅读(924) 评论(0) 推荐(0) 编辑
摘要: 1.2 增加动作 此时我们将只用一种动作:transitions,我们在下面的代码中插入了黑体的部分。 1#include <boost/statechart/transition.hpp> 2 3// 4 5struct Stopped; 6struct Active : sc::simple_state< Active, StopWatch, Stopped > 7{ 8 typedef sc::transition< EvReset, Active > reactions; 9};1011struct Running : sc::simple_stat 阅读全文
posted @ 2011-12-13 13:58 且听风吟~ 阅读(502) 评论(0) 推荐(0) 编辑
摘要: Boost的状态机库教程(2)1 基础主题:秒表 下面我们要为一个机械秒表建模一个状态机。这样一个秒表通常会有两个按钮。 * Start/Stop * Reset 同时有两种状态: * Stoped: 表针停留在上次停止时的位置: o 按下Reset按钮,表针回退到0的位置。秒表保持在Stoped状态不变。 o 按下Start/Stop按钮,秒表转到Running状态。 * Running: 表针在移动,并持续显示过去的时间: o 按下Reset按钮,表针回退到0的位置,秒表转到停止状态。 o 按下Start/Stop按钮,转到Stoped状态。 下面是其UML图:1.1 定义状态和事件两个按 阅读全文
posted @ 2011-12-13 13:44 且听风吟~ 阅读(431) 评论(0) 推荐(0) 编辑
摘要: Boost的状态机库教程(1)介绍 Boost状态机库一个应用程序框架,你可以用它将UML状态图快速的转换为可执行的c++代码,而不需要任何的代码生成器。它支持几乎所有的UML特征,可以直接了当的转换,并且转换后的c++代码就像对状态机进行一次文本描述一样具体可读性。如何阅读这个教程 这个教程是以线性阅读的方式进行的章节设计。如果你是第一次看这个教程的话,你可以从头开始读,到你觉得了解的东西对你手头的任务来说已经足够时就停止。具体可以这样: * 如果你的任务是要实现一个小的、简单的,并且有很少几个状态的状态机,那么下面的“初级主题:秒表”里所讲的就差不多够你用的了。 * 如果你要做一个有... 阅读全文
posted @ 2011-12-13 11:50 且听风吟~ 阅读(514) 评论(0) 推荐(0) 编辑