| <% |
| def parameters(defaultValue=False): |
| return ",\n ".\ |
| join([ parameter(p, defaultValue) for p in signal.properties ]) |
| |
| def parameter(p, defaultValue=False): |
| r = "%s %s" % (p.typeName, p.camelCase) |
| if defaultValue: |
| r += default_value(p) |
| return r |
| |
| def parameters_as_list(): |
| return ", ".join([ p.camelCase for p in signal.properties ]) |
| |
| def parameters_types_as_list(): |
| return ", ".join([ p.typeName for p in signal.properties ]) |
| |
| def default_value(p): |
| if p.defaultValue != None: |
| return " = " + str(p.defaultValue) |
| else: |
| return "" |
| |
| def interface_name(): |
| return interface.name.split('.').pop() |
| %> |
| ### |
| ### Emit 'header' |
| ### |
| % if ptype == 'header': |
| /** @brief Send signal '${signal.name}' |
| * |
| * ${ signal.description.strip() } |
| % if len(signal.properties) != 0: |
| * |
| % for p in signal.properties: |
| * @param[in] ${p.camelCase} - ${p.description.strip()} |
| % endfor |
| % endif |
| */ |
| void ${ signal.camelCase }( |
| ${ parameters(True) }); |
| ### |
| ### Emit 'vtable' |
| ### |
| % elif ptype == 'vtable': |
| vtable::signal("${signal.name}", |
| details::${interface_name()}::_signal_${signal.CamelCase } |
| .data()), |
| ### |
| ### Emit 'callback-cpp' |
| ### |
| % elif ptype == 'callback-cpp': |
| void ${interface_name()}::${ signal.camelCase }( |
| ${ parameters() }) |
| { |
| auto& i = _${"_".join(interface.name.split('.'))}_interface; |
| auto m = i.new_signal("${ signal.name }"); |
| |
| m.append(${ parameters_as_list() }); |
| m.signal_send(); |
| } |
| |
| namespace details |
| { |
| namespace ${interface_name()} |
| { |
| static const auto _signal_${ signal.CamelCase } = |
| % if len(signal.properties) == 0: |
| utility::tuple_to_array(std::make_tuple('\0')); |
| % else: |
| utility::tuple_to_array(message::types::type_id< |
| ${ parameters_types_as_list() }>()); |
| % endif |
| } |
| } |
| % endif |