229 }while(param_value != NULL); |
229 }while(param_value != NULL); |
230 """%(fdecl["baseinputnumber"] + 2) |
230 """%(fdecl["baseinputnumber"] + 2) |
231 |
231 |
232 result_type_rule = fdecl["return_type_rule"] |
232 result_type_rule = fdecl["return_type_rule"] |
233 res += { |
233 res += { |
234 "copy_input" : "symbol_c * return_type_symbol = last_type_symbol;\n", |
234 "copy_input" : """symbol_c * return_type_symbol; |
|
235 if (search_expression_type->is_literal_integer_type(last_type_symbol)) |
|
236 return_type_symbol = &search_constant_type_c::%s_type_name; |
|
237 else |
|
238 return_type_symbol = last_type_symbol; |
|
239 """%({True: "lword", False: """lint_type_name; |
|
240 else if (search_expression_type->is_literal_real_type(last_type_symbol)) |
|
241 return_type_symbol = &search_constant_type_c::lreal"""}[reduce(lambda x, y: x or y, [paramtype == "ANY_BIT" for paramname,paramtype,unused in fdecl["inputs"]], False)]), |
235 "defined" : "symbol_c * return_type_symbol = &search_constant_type_c::%s_type_name;\n"%fdecl["outputs"][0][1].lower(), |
242 "defined" : "symbol_c * return_type_symbol = &search_constant_type_c::%s_type_name;\n"%fdecl["outputs"][0][1].lower(), |
236 }.get(result_type_rule, "symbol_c * return_type_symbol = %s;\n"%result_type_rule) |
243 }.get(result_type_rule, "symbol_c * return_type_symbol = %s;\n"%result_type_rule) |
237 |
244 |
238 if not do_type_search_only: |
245 if not do_type_search_only: |
239 if code_gen[0] is not None: |
246 if code_gen[0] is not None: |