1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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>\
|