Matthew Barth | 702c4a5 | 2018-02-28 16:23:11 -0600 | [diff] [blame] | 1 | <%! |
| 2 | def 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): |
| 18 | handler::${sig['handler']}<${sig['hparams']['type']}>( |
| 19 | %else: |
| 20 | handler::${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"> |
| 33 | Group{ |
| 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 | }, |
| 44 | std::vector<Action>{ |
| 45 | %for a in event['action']: |
| 46 | %if len(a['parameters']) != 0: |
| 47 | make_action(action::${a['name']}( |
| 48 | %else: |
| 49 | make_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 | }, |
Matthew Barth | 1b4de26 | 2018-03-06 13:03:16 -0600 | [diff] [blame] | 61 | std::vector<Trigger>{ |
Matthew Barth | d0b90fc | 2018-03-05 09:38:45 -0600 | [diff] [blame] | 62 | %if ('timer' in event['triggers']) and \ |
| 63 | (event['triggers']['timer'] is not None): |
Matthew Barth | 1b4de26 | 2018-03-06 13:03:16 -0600 | [diff] [blame] | 64 | make_trigger(trigger::timer(TimerConf{ |
Matthew Barth | d0b90fc | 2018-03-05 09:38:45 -0600 | [diff] [blame] | 65 | ${event['triggers']['timer']['interval']}, |
| 66 | ${event['triggers']['timer']['type']} |
Matthew Barth | 016bd24 | 2018-03-07 16:06:06 -0600 | [diff] [blame] | 67 | })), |
Matthew Barth | d0b90fc | 2018-03-05 09:38:45 -0600 | [diff] [blame] | 68 | %endif |
Matthew Barth | 016bd24 | 2018-03-07 16:06:06 -0600 | [diff] [blame] | 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( |
Matthew Barth | 18c9103 | 2019-01-29 15:36:00 -0600 | [diff] [blame] | 73 | %if ('match' in s) and \ |
| 74 | (s['match'] is not None): |
Matthew Barth | 702c4a5 | 2018-02-28 16:23:11 -0600 | [diff] [blame] | 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 | ), |
Matthew Barth | 18c9103 | 2019-01-29 15:36:00 -0600 | [diff] [blame] | 84 | %else: |
| 85 | "", |
| 86 | %endif |
Matthew Barth | 702c4a5 | 2018-02-28 16:23:11 -0600 | [diff] [blame] | 87 | make_handler(\ |
| 88 | ${indent(genHandler(sig=s), 3)}\ |
| 89 | ) |
Matthew Barth | 016bd24 | 2018-03-07 16:06:06 -0600 | [diff] [blame] | 90 | )), |
| 91 | %endfor |
| 92 | %endif |
| 93 | }, |
Matthew Barth | 702c4a5 | 2018-02-28 16:23:11 -0600 | [diff] [blame] | 94 | </%def>\ |