Eolian: Small refactoring
This commit is contained in:
parent
7222158dfd
commit
7810bcb216
|
@ -212,6 +212,20 @@ class PyxGenerator(Generator):
|
||||||
self.write("%s %s" % (t, ", ".join(names)))
|
self.write("%s %s" % (t, ", ".join(names)))
|
||||||
self.dedent()
|
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):
|
class Method(object):
|
||||||
|
|
||||||
|
@ -305,29 +319,6 @@ class Method(object):
|
||||||
|
|
||||||
return self
|
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):
|
def pyx_generate(self, gen, param_conv=None):
|
||||||
gen.method_header_write(self.py_name, self.py_params)
|
gen.method_header_write(self.py_name, self.py_params)
|
||||||
gen.indent()
|
gen.indent()
|
||||||
|
@ -369,12 +360,15 @@ class Method(object):
|
||||||
|
|
||||||
c_params = ", ".join([c[1] for c in self.c_params])
|
c_params = ", ".join([c[1] for c in self.c_params])
|
||||||
if self.eo_prefix:
|
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:
|
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:
|
else:
|
||||||
raise ValueError("no prefix found for %r" % (self.name))
|
raise ValueError("no prefix found for %r" % (self.name))
|
||||||
gen.write(c_call)
|
|
||||||
|
|
||||||
if self.returns:
|
if self.returns:
|
||||||
ret = self.returns[:]
|
ret = self.returns[:]
|
||||||
|
|
Loading…
Reference in New Issue