您是否知道有哪些适用于Linux的开源状态机C++代码生成器?理想情况下,该工具将输出所有状态机逻辑和存根,并接受UML或人类可读清单文件作为输入。
您是否知道有哪些适用于Linux的开源状态机C++代码生成器?理想情况下,该工具将输出所有状态机逻辑和存根,并接受UML或人类可读清单文件作为输入。
import "../hardware/bricks/led.thingml"
thing Blink includes LedMsgs, TimerMsgs
{
required port HW
{
sends led_toggle, timer_start
receives timer_timeout
}
statechart BlinkImpl init Blinking
{
state Blinking
{
on entry HW!timer_start (1000)
transition -> Blinking
event HW?timer_timeout
action HW!led_toggle ()
}
}
}
请查看开源的QP/C++状态机框架和免费的QM建模工具(请参见http://www.state-machine.com)。QP/C++框架支持分层状态机(UML状态图),并允许您同时执行多个这样的状态机。QP/C++已被移植到Linux(请参见http://www.state-machine.com/linux)。
现在,关于代码生成器,免费的QM建模工具(请参见http://www.state-machine.com/qm)允许您绘制状态机图并为QP/C++框架生成C++代码。QM本身是跨平台的,可以在Linux、Windows和Mac OS X上运行。
我见过最接近你要求的可能是 StateProto. 但它输出的是C#代码。
你应该看看StateProto和QHSM。开源项目在这里:http://code.google.com/p/gqhsm/
StateProto是开源的,可以修改输出函数以输出c++代码。但它使用委托。
我建议你使用数据驱动设计。StateProto将输出XML状态机,有C#代码可用于从数据中加载XML并驱动状态机。
你可以在c++中找到很多QHSM实现,我不知道是否有可用的XML加载器。