diff --git a/pEpACIDgen/acid_yml.py b/pEpACIDgen/acid_yml.py index 6021bf9..9568879 100644 --- a/pEpACIDgen/acid_yml.py +++ b/pEpACIDgen/acid_yml.py @@ -17,8 +17,7 @@ def generate_acid_yml(acid, module_name): def _grammar_header(): - grammar = """ -decl module @name; + grammar = """decl module @name; decl method @name; decl struct @name; @@ -36,6 +35,7 @@ def _generate_functions(acid): # Main tmpl_main = 'method {name} {{\n' + tmpl_main += ' method sig="{sig}";\n' tmpl_main += ' return type="{return_type}";\n' tmpl_main += '{subitems}' tmpl_main += '}};\n\n' @@ -61,7 +61,18 @@ def _generate_functions(acid): for subitem in subitems: subitems_str += tmpl_sub.format(type=subitem["type"], name=subitem["name"]) + "\n" - ret += tmpl_main.format(name=item["name"], return_type=item["result_type"], subitems=subitems_str) + # (PEP_STATUS(*)(void*,const char*,const char*,const char*,const char*,const char*)) + sig_ret = item["result_type"] + "(*)" + sig_parms = "" + + for subitem in subitems: + sig_parms += subitem["type"] + ", " + + sig_parms = sig_parms[:-2] + + sig_str = "(" + sig_ret + "(" +sig_parms + "))" + + ret += tmpl_main.format(name=item["name"], return_type=item["result_type"], sig=sig_str, subitems=subitems_str) return ret