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}, 63std::vector<Action>{ 64%for a in event['action']: 65%if len(a['parameters']) != 0: 66make_action(action::${a['name']}( 67%else: 68make_action(action::${a['name']} 69%endif 70%for i, p in enumerate(a['parameters']): 71%if (i+1) != len(a['parameters']): 72 ${p}, 73%else: 74 ${p}) 75%endif 76%endfor 77), 78%endfor 79}, 80std::vector<Trigger>{ 81 %if ('timer' in event['triggers']) and \ 82 (event['triggers']['timer'] is not None): 83 make_trigger(trigger::timer(TimerConf{ 84 ${event['triggers']['timer']['interval']}, 85 ${event['triggers']['timer']['type']} 86 })), 87 %endif 88 %if ('signals' in event['triggers']) and \ 89 (event['triggers']['signals'] is not None): 90 %for s in event['triggers']['signals']: 91 make_trigger(trigger::signal( 92 %if ('match' in s) and \ 93 (s['match'] is not None): 94 match::${s['match']}( 95 %for i, mp in enumerate(s['mparams']['params']): 96 %if (i+1) != len(s['mparams']['params']): 97 ${indent(s['mparams'][mp], 1)}, 98 %else: 99 ${indent(s['mparams'][mp], 1)} 100 %endif 101 %endfor 102 ), 103 %else: 104 "", 105 %endif 106 make_handler<SignalHandler>(\ 107 ${genSignal(sig=s)} 108 ) 109 )), 110 %endfor 111 %endif 112 %if ('init' in event['triggers']): 113 %for i in event['triggers']['init']: 114 make_trigger(trigger::init( 115 %if ('method' in i): 116 make_handler<MethodHandler>(\ 117 ${indent(genMethod(meth=i), 3)}\ 118 ) 119 %endif 120 )), 121 %endfor 122 %endif 123}, 124</%def>\ 125