--- 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 ')