diff --git a/scripts/eolian_generate.py b/scripts/eolian_generate.py index 2439e7b..56dfe6d 100755 --- a/scripts/eolian_generate.py +++ b/scripts/eolian_generate.py @@ -212,6 +212,20 @@ class PyxGenerator(Generator): self.write("%s %s" % (t, ", ".join(names))) self.dedent() + def c_call_write(self, name, params, ret_type, ret_param, legacy=False): + if legacy: + c_call = "%s(%s)" % (name, ", ".join(("self.obj", params))) + else: + c_call = "eo_do(self.obj, %s(%s))" % (name, params) + if ret_type: + r_type = ret_type + if r_type in return_type_mapping: + conv = return_type_mapping[r_type][1] + if conv: + c_call = conv.format(c_call) + c_call = ret_param + " = " + c_call + self.write(c_call) + class Method(object): @@ -305,29 +319,6 @@ class Method(object): return self - def eo_call_generate(self, params, ret_param): - c_call = "eo_do(self.obj, %s(%s))" % (self.c_name, params) - if self.ret_type: - r_type = self.ret_type - if r_type in return_type_mapping: - conv = return_type_mapping[r_type][1] - if conv: - c_call = conv.format(c_call) - c_call = ret_param + " = " + c_call - return c_call - - def legacy_call_generate(self, params, ret_param): - c_call = "%s(%s)" % ( - self.c_name, ", ".join(("self.obj", params))) - if self.ret_type: - r_type = self.ret_type - if r_type in return_type_mapping: - conv = return_type_mapping[r_type][1] - if conv: - c_call = conv.format(c_call) - c_call = ret_param + " = " + c_call - return c_call - def pyx_generate(self, gen, param_conv=None): gen.method_header_write(self.py_name, self.py_params) gen.indent() @@ -369,12 +360,15 @@ class Method(object): c_params = ", ".join([c[1] for c in self.c_params]) if self.eo_prefix: - c_call = self.eo_call_generate(c_params, RET_PARAM) + gen.c_call_write( + self.c_name, c_params, self.ret_type, RET_PARAM, legacy=False + ) elif self.legacy_prefix: - c_call = self.legacy_call_generate(c_params, RET_PARAM) + gen.c_call_write( + self.c_name, c_params, self.ret_type, RET_PARAM, legacy=True + ) else: raise ValueError("no prefix found for %r" % (self.name)) - gen.write(c_call) if self.returns: ret = self.returns[:]