1<%! 2def indent(str, depth): 3 return ''.join(4*' '*depth+line for line in str.splitlines(True)) 4%>\ 5 6<%def name="genParams(par)" buffered="True"> 7%if ('type' in par['hparams']) and \ 8 (par['hparams']['type'] is not None): 9handler::${par['handler']}<${par['hparams']['type']}>( 10%else: 11handler::${par['handler']}( 12%endif 13%for i, hpk in enumerate(par['hparams']['params']): 14%if (i+1) != len(par['hparams']['params']): 15${par['hparams'][hpk]}, 16%else: 17${par['hparams'][hpk]} 18%endif 19%endfor 20) 21</%def>\ 22 23<%def name="genSignal(sig)" buffered="True"> 24%if ('type' in sig['sparams']) and \ 25 (sig['sparams']['type'] is not None): 26${indent(sig['signal'], 3)}<${sig['sparams']['type']}>(\ 27%else: 28${indent(sig['signal'], 3)}(\ 29%endif 30%for spk in sig['sparams']['params']: 31${indent(sig['sparams'][spk], 3)}, 32%endfor 33${genParams(par=sig)} 34) 35</%def>\ 36 37<%def name="genMethod(meth)" buffered="True"> 38%if ('type' in meth['mparams']) and \ 39 (meth['mparams']['type'] is not None): 40${meth['method']}<${meth['mparams']['type']}>( 41%else: 42${meth['method']}( 43%endif 44%for spk in meth['mparams']['params']: 45${meth['mparams'][spk]}, 46%endfor 47${genParams(par=meth)}\ 48) 49</%def>\ 50 51<%def name="genSSE(event)" buffered="True"> 52Group{ 53%for group in event['groups']: 54%for member in group['members']: 55{ 56 "${member['object']}", 57 "${member['interface']}", 58 "${member['property']}" 59}, 60%endfor 61%endfor 62}, 63{Group{}, 64std::vector<Action>{ 65%for a in event['action']: 66%if len(a['parameters']) != 0: 67make_action(action::${a['name']}( 68%else: 69make_action(action::${a['name']} 70%endif 71%for i, p in enumerate(a['parameters']): 72%if (i+1) != len(a['parameters']): 73 ${p}, 74%else: 75 ${p}) 76%endif 77%endfor 78), 79%endfor 80}}, 81std::vector<Trigger>{ 82 %if ('timer' in event['triggers']) and \ 83 (event['triggers']['timer'] is not None): 84 make_trigger(trigger::timer(TimerConf{ 85 ${event['triggers']['timer']['interval']}, 86 ${event['triggers']['timer']['type']} 87 })), 88 %endif 89 %if ('signals' in event['triggers']) and \ 90 (event['triggers']['signals'] is not None): 91 %for s in event['triggers']['signals']: 92 make_trigger(trigger::signal( 93 %if ('match' in s) and \ 94 (s['match'] is not None): 95 match::${s['match']}( 96 %for i, mp in enumerate(s['mparams']['params']): 97 %if (i+1) != len(s['mparams']['params']): 98 ${indent(s['mparams'][mp], 1)}, 99 %else: 100 ${indent(s['mparams'][mp], 1)} 101 %endif 102 %endfor 103 ), 104 %else: 105 "", 106 %endif 107 make_handler<SignalHandler>(\ 108 ${genSignal(sig=s)} 109 ) 110 )), 111 %endfor 112 %endif 113 %if ('init' in event['triggers']): 114 %for i in event['triggers']['init']: 115 make_trigger(trigger::init( 116 %if ('method' in i): 117 make_handler<MethodHandler>(\ 118 ${indent(genMethod(meth=i), 3)}\ 119 ) 120 %endif 121 )), 122 %endfor 123 %endif 124}, 125</%def>\ 126