generate_IEC_std.py
changeset 40 49c8ebc1ee25
parent 36 e7d67b27877f
child 43 4a7e80513edd
--- a/generate_IEC_std.py	Fri Jul 13 19:21:17 2007 +0200
+++ b/generate_IEC_std.py	Tue Jul 17 12:25:19 2007 +0200
@@ -32,7 +32,8 @@
     "ANY_REAL" : "if(search_expression_type->is_real_type(%(paramname)s_type_symbol))",
     "ANY_INT" : "if(search_expression_type->is_integer_type(%(paramname)s_type_symbol))"
     }.get(typename,
-        "if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{
+        #"if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{
+        "if(search_expression_type->is_same_type(&search_constant_type_c::%(typename)s_type_name, last_type_symbol))")%{
                 "paramname" : paramname, "typename": typename.lower()}
 
 def recurse_and_indent(fdecls, indent, do_type_search_only = False, do_il = False):
@@ -116,13 +117,14 @@
             code_gen_dic_decl["end_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol)) {\n  s4o.print("&1");\n  s4o.print(")");\n}\ns4o.print("'
             
             if type(code_gen) == type(tuple()):
-                res += 's4o.print("%s");\n'%(code_gen[0]%code_gen_dic_decl)
+                res += 's4o.indent_right();\n'
+                res += 's4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[0]%code_gen_dic_decl)
                 static_param_accept_list = []
                 for paramname,paramtype,unused in fdecl["inputs"]:
                     static_param_accept_list.append("%s_param_value->accept(*this);\n"%(paramname))
-                res += ('s4o.print("%s");\n'%(code_gen[1])).join(static_param_accept_list)
-                code = 's4o.print("%s");\nparam_value->accept(*this);\n'%(code_gen[1])
-                end_code = 's4o.print("%s");\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl)
+                res += ('s4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[1])).join(static_param_accept_list)
+                code = 's4o.print("%s\\n" + s4o.indent_spaces);\nparam_value->accept(*this);\n'%(code_gen[1])
+                end_code = 's4o.print("%s");\ns4o.indent_left();\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl)
             else:
                 code = ''
                 end_code = ('s4o.print("' + code_gen%code_gen_dic_decl + '");\nreturn NULL;\n').replace('s4o.print("");\n','')