例如,在 HomeHeatingSystem 样例中为 Furnace 的运行状态生成的 dispatchEvent() 操作,大致使用以下 switch 语句处理运行正交状态的空闲、关闭、工作和启动子状态的外发转换:
static int operating_dispatchEvent(Furnace* const me,
short id) {
int res = eventNotConsumed;
switch (me->operating_active) {
case Furnace_idle:
{
/* 处理空闲状态的外发转换 */
res = eventConsumed;
break;
};
case Furnace_shutting:
{
/* 处理关闭状态的外发转换
*/
res = eventConsumed;
break;
};
case Furnace_starting:
{
/* 处理启动状态的外发转换
*/
res = eventConsumed;
break;
};
case Furnace_working:
{
/* 处理工作状态的外发转换
*/
res = eventConsumed;
break;
};
default:
break;
};
return res;
}