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}, 61std::vector<Trigger>{ 62 %if ('timer' in event['triggers']) and \ 63 (event['triggers']['timer'] is not None): 64 make_trigger(trigger::timer(TimerConf{ 65 ${event['triggers']['timer']['interval']}, 66 ${event['triggers']['timer']['type']} 67 })), 68 %endif 69 %if ('signals' in event['triggers']) and \ 70 (event['triggers']['signals'] is not None): 71 %for s in event['triggers']['signals']: 72 make_trigger(trigger::signal( 73 %if ('match' in s) and \ 74 (s['match'] is not None): 75 match::${s['match']}( 76 %for i, mp in enumerate(s['mparams']): 77 %if (i+1) != len(s['mparams']): 78 "${mp}", 79 %else: 80 "${mp}" 81 %endif 82 %endfor 83 ), 84 %else: 85 "", 86 %endif 87 make_handler(\ 88 ${indent(genHandler(sig=s), 3)}\ 89 ) 90 )), 91 %endfor 92 %endif 93}, 94</%def>\ 95