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 += default_value(p) 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 def default_value(p): 20 if p.defaultValue != None: 21 return " = " + str(p.defaultValue) 22 else: 23 return "" 24%> 25### 26### Emit 'header' 27### 28 % if ptype == 'header': 29 /** @brief Send signal '${signal.name}' 30 * 31 * ${ signal.description.strip() } 32 % if len(signal.properties) != 0: 33 * 34 % for p in signal.properties: 35 * @param[in] ${p.camelCase} - ${p.description.strip()} 36 % endfor 37 % endif 38 */ 39 void ${ signal.camelCase }( 40 ${ parameters(True) }); 41### 42### Emit 'callback-cpp' 43### 44 % elif ptype == 'callback-cpp': 45void ${interface.classname}::${ signal.camelCase }( 46 ${ parameters() }) 47{ 48 auto& i = _${interface.joinedName("_", "interface")}; 49 auto m = i.new_signal("${ signal.name }"); 50 51 m.append(${ parameters_as_list() }); 52 m.signal_send(); 53} 54 55namespace details 56{ 57namespace ${interface.classname} 58{ 59static const auto _signal_${ signal.CamelCase } = 60 % if len(signal.properties) == 0: 61 utility::tuple_to_array(std::make_tuple('\0')); 62 % else: 63 utility::tuple_to_array(message::types::type_id< 64 ${ parameters_types_as_list() }>()); 65 % endif 66} 67} 68 % endif 69