1<% 2 def parameters(defaultValue=False): 3 return ",\n ".\ 4 join([ parameter(p, defaultValue) for p in signal.properties ]) 5 6 def parameter(p, defaultValue=False): 7 r = "%s %s" % (p.cppTypeParam(interface.name), p.camelCase) 8 if defaultValue: 9 r += p.default_value(interface.name) 10 return r 11 12 def parameters_as_list(): 13 return ", ".join([ p.camelCase for p in signal.properties ]) 14 15 def parameters_types_as_list(): 16 return ", ".join([ p.cppTypeParam(interface.name, full=True) 17 for p in signal.properties ]) 18%> 19### 20### Emit 'header' 21### 22 % if ptype == 'header': 23 /** @brief Send signal '${signal.name}' 24 * 25 * ${ signal.description.strip() } 26 % if len(signal.properties) != 0: 27 * 28 % for p in signal.properties: 29 * @param[in] ${p.camelCase} - ${p.description.strip()} 30 % endfor 31 % endif 32 */ 33 void ${ signal.camelCase }( 34 ${ parameters(True) }); 35### 36### Emit 'callback-cpp' 37### 38 % elif ptype == 'callback-cpp': 39void ${interface.classname}::${ signal.camelCase }( 40 ${ parameters() }) 41{ 42 auto& i = _${interface.joinedName("_", "interface")}; 43 auto m = i.new_signal("${ signal.name }"); 44 45 m.append(${ parameters_as_list() }); 46 m.signal_send(); 47} 48 49namespace details 50{ 51namespace ${interface.classname} 52{ 53static const auto _signal_${ signal.CamelCase } = 54 utility::tuple_to_array(message::types::type_id< 55 ${ parameters_types_as_list() }>()); 56} 57} 58 % endif 59