sync/gen_statemachine.ysl2
changeset 582 fa50f202b57c
parent 581 fdfcb223d56b
child 583 2392a33ae121
     1.1 --- a/sync/gen_statemachine.ysl2	Tue May 10 10:02:30 2016 +0200
     1.2 +++ b/sync/gen_statemachine.ysl2	Tue May 10 10:32:47 2016 +0200
     1.3 @@ -26,13 +26,21 @@
     1.4      `` for "set:distinct(state/event/@name)" |> «.»`if "position()!=last()" > , `
     1.5      } «@name»_event;
     1.6  
     1.7 -    «@name»_state fsm_«@name»(«@name»_state state, «@name»_event event)
     1.8 +    `` for "set:distinct(state/event//action/@name)" | void «.»(pEp_identity *partner);
     1.9 +
    1.10 +    «@name»_state fsm_«@name»(
    1.11 +            «@name»_state state,
    1.12 +            «@name»_event event,
    1.13 +            pEp_identity *partner
    1.14 +        )
    1.15      {
    1.16          switch (state) {
    1.17              `` apply "state"
    1.18              default:
    1.19                  return invalid_state;
    1.20          }
    1.21 +
    1.22 +        return state;
    1.23      }
    1.24  
    1.25      ||
    1.26 @@ -53,10 +61,19 @@
    1.27      ||
    1.28      case «@name»:
    1.29      `` apply "action|transition";
    1.30 -    `` if "1" |> break;
    1.31 +    `` if "name(*[position()=last()]) != 'transition'" |> break;
    1.32      ||
    1.33  
    1.34 -    template "action" | «@name»();
    1.35 +    template "action" {
    1.36 +        indent(0);
    1.37 +        > «@name»(
    1.38 +        choose {
    1.39 +            when "parm" > «name(parm/*)»
    1.40 +            otherwise > NULL
    1.41 +        }
    1.42 +        > );\n
    1.43 +    }
    1.44 +
    1.45      template "transition" | return «@target»;
    1.46  }
    1.47