...
1 // generate state machine code
3 // Copyleft (c) 2016, p≡p foundation
5 // Written by Volker Birk
10 template "/protocol/fsm"
12 // state machine for «@name»
14 #include "pEpEngine.h"
16 typedef enum _fsm_error {
21 typedef enum _«@name»_state {
22 `` apply "state", mode=declare
25 typedef enum _«@name»_event {
26 `` apply "state/event", mode=declare
29 «@name»_state fsm_«@name»(«@name»_state state, «@name»_event event)
32 `` apply "state", mode=implement
40 template "state", mode=declare
41 | «@name»`if "position()!=last()" > , `
43 template "state", mode=implement
55 template "event", mode=declare
56 | «@name»`if "position()!=last()" > , `
61 `` apply "action|transition";
65 template "action" | «@name»();
66 template "transition" | return «@target»;