30 "ANY_NBIT" : "if(search_expression_type->is_nbinary_type(%(paramname)s_type_symbol))", |
30 "ANY_NBIT" : "if(search_expression_type->is_nbinary_type(%(paramname)s_type_symbol))", |
31 "ANY_NUM" : "if(search_expression_type->is_num_type(%(paramname)s_type_symbol))", |
31 "ANY_NUM" : "if(search_expression_type->is_num_type(%(paramname)s_type_symbol))", |
32 "ANY_REAL" : "if(search_expression_type->is_real_type(%(paramname)s_type_symbol))", |
32 "ANY_REAL" : "if(search_expression_type->is_real_type(%(paramname)s_type_symbol))", |
33 "ANY_INT" : "if(search_expression_type->is_integer_type(%(paramname)s_type_symbol))" |
33 "ANY_INT" : "if(search_expression_type->is_integer_type(%(paramname)s_type_symbol))" |
34 }.get(typename, |
34 }.get(typename, |
35 "if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{ |
35 #"if (typeid(*last_type_symbol) == typeid(%(typename)s_type_name_c))")%{ |
|
36 "if(search_expression_type->is_same_type(&search_constant_type_c::%(typename)s_type_name, last_type_symbol))")%{ |
36 "paramname" : paramname, "typename": typename.lower()} |
37 "paramname" : paramname, "typename": typename.lower()} |
37 |
38 |
38 def recurse_and_indent(fdecls, indent, do_type_search_only = False, do_il = False): |
39 def recurse_and_indent(fdecls, indent, do_type_search_only = False, do_il = False): |
39 """ |
40 """ |
40 This function generate visit(function_invocation) code for |
41 This function generate visit(function_invocation) code for |
114 code_gen_dic_decl["param_count"] = '");\ns4o.print_integer(nb_param);\ns4o.print("' |
115 code_gen_dic_decl["param_count"] = '");\ns4o.print_integer(nb_param);\ns4o.print("' |
115 code_gen_dic_decl["start_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol))\n s4o.print("(' |
116 code_gen_dic_decl["start_bool_filter"] = '");\nif (search_expression_type->is_bool_type(last_type_symbol))\n s4o.print("(' |
116 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("' |
117 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("' |
117 |
118 |
118 if type(code_gen) == type(tuple()): |
119 if type(code_gen) == type(tuple()): |
119 res += 's4o.print("%s");\n'%(code_gen[0]%code_gen_dic_decl) |
120 res += 's4o.indent_right();\n' |
|
121 res += 's4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[0]%code_gen_dic_decl) |
120 static_param_accept_list = [] |
122 static_param_accept_list = [] |
121 for paramname,paramtype,unused in fdecl["inputs"]: |
123 for paramname,paramtype,unused in fdecl["inputs"]: |
122 static_param_accept_list.append("%s_param_value->accept(*this);\n"%(paramname)) |
124 static_param_accept_list.append("%s_param_value->accept(*this);\n"%(paramname)) |
123 res += ('s4o.print("%s");\n'%(code_gen[1])).join(static_param_accept_list) |
125 res += ('s4o.print("%s\\n" + s4o.indent_spaces);\n'%(code_gen[1])).join(static_param_accept_list) |
124 code = 's4o.print("%s");\nparam_value->accept(*this);\n'%(code_gen[1]) |
126 code = 's4o.print("%s\\n" + s4o.indent_spaces);\nparam_value->accept(*this);\n'%(code_gen[1]) |
125 end_code = 's4o.print("%s");\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl) |
127 end_code = 's4o.print("%s");\ns4o.indent_left();\nreturn NULL;\n'%(code_gen[2]%code_gen_dic_decl) |
126 else: |
128 else: |
127 code = '' |
129 code = '' |
128 end_code = ('s4o.print("' + code_gen%code_gen_dic_decl + '");\nreturn NULL;\n').replace('s4o.print("");\n','') |
130 end_code = ('s4o.print("' + code_gen%code_gen_dic_decl + '");\nreturn NULL;\n').replace('s4o.print("");\n','') |
129 |
131 |
130 if fdecl["extensible"]: |
132 if fdecl["extensible"]: |