diff options
Diffstat (limited to 'control/templates/defs.mako')
-rw-r--r-- | control/templates/defs.mako | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/control/templates/defs.mako b/control/templates/defs.mako new file mode 100644 index 0000000..0980f81 --- /dev/null +++ b/control/templates/defs.mako @@ -0,0 +1,83 @@ +<%! +def indent(str, depth): + return ''.join(4*' '*depth+line for line in str.splitlines(True)) +%>\ + +<%def name="genHandler(sig)" buffered="True"> +%if ('type' in sig['sparams']) and \ + (sig['sparams']['type'] is not None): +${sig['signal']}<${sig['sparams']['type']}>( +%else: +${sig['signal']}( +%endif +%for spk in sig['sparams']['params']: +${sig['sparams'][spk]}, +%endfor +%if ('type' in sig['hparams']) and \ + (sig['hparams']['type'] is not None): +handler::${sig['handler']}<${sig['hparams']['type']}>( +%else: +handler::${sig['handler']}( +%endif +%for i, hpk in enumerate(sig['hparams']['params']): + %if (i+1) != len(sig['hparams']['params']): + ${sig['hparams'][hpk]}, + %else: + ${sig['hparams'][hpk]} + %endif +%endfor +)) +</%def>\ + +<%def name="genSSE(event)" buffered="True"> +Group{ +%for group in event['groups']: +%for member in group['members']: +{ + "${member['object']}", + {"${member['interface']}", + "${member['property']}"} +}, +%endfor +%endfor +}, +std::vector<Action>{ +%for a in event['action']: +%if len(a['parameters']) != 0: +make_action(action::${a['name']}( +%else: +make_action(action::${a['name']} +%endif +%for i, p in enumerate(a['parameters']): +%if (i+1) != len(a['parameters']): + ${p}, +%else: + ${p}) +%endif +%endfor +), +%endfor +}, +Timer{ + ${event['timer']['interval']}, + ${event['timer']['type']} +}, +std::vector<Signal>{ +%for s in event['signals']: + Signal{ + match::${s['match']}( + %for i, mp in enumerate(s['mparams']): + %if (i+1) != len(s['mparams']): + "${mp}", + %else: + "${mp}" + %endif + %endfor + ), + make_handler(\ + ${indent(genHandler(sig=s), 3)}\ + ) + }, +%endfor +} +</%def>\ |