1<%! 2def indent(str, depth): 3 return ''.join(4*' '*depth+line for line in str.splitlines(True)) 4%>\ 5 6<%def name="genHandler(sig)" buffered="True"> 7%if ('type' in sig['sparams']) and \ 8 (sig['sparams']['type'] is not None): 9${sig['signal']}<${sig['sparams']['type']}>( 10%else: 11${sig['signal']}( 12%endif 13%for spk in sig['sparams']['params']: 14${sig['sparams'][spk]}, 15%endfor 16%if ('type' in sig['hparams']) and \ 17 (sig['hparams']['type'] is not None): 18handler::${sig['handler']}<${sig['hparams']['type']}>( 19%else: 20handler::${sig['handler']}( 21%endif 22%for i, hpk in enumerate(sig['hparams']['params']): 23 %if (i+1) != len(sig['hparams']['params']): 24 ${sig['hparams'][hpk]}, 25 %else: 26 ${sig['hparams'][hpk]} 27 %endif 28%endfor 29)) 30</%def>\ 31 32<%def name="genSSE(event)" buffered="True"> 33Group{ 34%for group in event['groups']: 35%for member in group['members']: 36{ 37 "${member['object']}", 38 {"${member['interface']}", 39 "${member['property']}"} 40}, 41%endfor 42%endfor 43}, 44std::vector<Action>{ 45%for a in event['action']: 46%if len(a['parameters']) != 0: 47make_action(action::${a['name']}( 48%else: 49make_action(action::${a['name']} 50%endif 51%for i, p in enumerate(a['parameters']): 52%if (i+1) != len(a['parameters']): 53 ${p}, 54%else: 55 ${p}) 56%endif 57%endfor 58), 59%endfor 60}, 61TimerConf{ 62 %if ('timer' in event['triggers']) and \ 63 (event['triggers']['timer'] is not None): 64 ${event['triggers']['timer']['interval']}, 65 ${event['triggers']['timer']['type']} 66 %endif 67}, 68std::vector<Signal>{ 69%for s in event['triggers']['signals']: 70 Signal{ 71 %if ('match' in s) and \ 72 (s['match'] is not None): 73 match::${s['match']}( 74 %for i, mp in enumerate(s['mparams']): 75 %if (i+1) != len(s['mparams']): 76 "${mp}", 77 %else: 78 "${mp}" 79 %endif 80 %endfor 81 ), 82 %else: 83 "", 84 %endif 85 make_handler(\ 86 ${indent(genHandler(sig=s), 3)}\ 87 ) 88 }, 89%endfor 90} 91</%def>\ 92