diff -r 24f111835805 -r cce4903be769 generate_IEC_std.py --- a/generate_IEC_std.py Mon Jun 06 16:29:08 2011 +0200 +++ b/generate_IEC_std.py Wed Jun 08 18:35:28 2011 +0200 @@ -267,6 +267,15 @@ return res.replace('\n','\n'+indent) +def get_default_input_type(fdecls): + if type(fdecls) != type(tuple()) and len(fdecls) == 1: + ParamTypes = fdecls.values()[0] + if len(ParamTypes) == 1: + ParamType_name, ParamType_value = ParamTypes.items()[0] + if not ParamType_name.startswith("ANY") and type(ParamType_value) == type(tuple()): + return "&search_constant_type_c::%s_type_name" % ParamType_name.lower() + return "NULL" + ################################################################### ### ### ### MAIN ### @@ -346,8 +355,8 @@ */ case function_%s : { - symbol_c *last_type_symbol = NULL; -""" %(fname, fname.lower()) + symbol_c *last_type_symbol = %s; +""" %(fname, fname.lower(), get_default_input_type(fdecls)) indent = " " st_code_gen += recurse_and_indent(fdecls, indent).replace('\n','\n ') @@ -378,8 +387,8 @@ */ case function_%s : { - symbol_c *last_type_symbol = NULL; -""" %(fname, fname.lower()) + symbol_c *last_type_symbol = %s; +""" %(fname, fname.lower(), get_default_input_type(fdecls)) indent = " " il_code_gen += recurse_and_indent(fdecls, indent, do_il=True).replace('\n','\n ') @@ -427,8 +436,8 @@ */ case function_%s : { - symbol_c *last_type_symbol = NULL; -""" %(fname, fname.lower()) + symbol_c *last_type_symbol = %s; +""" %(fname, fname.lower(), get_default_input_type(fdecls)) indent = " " search_type_code += recurse_and_indent(fdecls, indent, True).replace('\n','\n ') @@ -460,8 +469,8 @@ */ case function_%s : { - symbol_c *last_type_symbol = NULL; -""" %(fname, fname.lower()) + symbol_c *last_type_symbol = %s; +""" %(fname, fname.lower(), get_default_input_type(fdecls)) indent = " " search_type_code += recurse_and_indent(fdecls, indent, True, True).replace('\n','\n ')