Eolian: Handle property setter params

This commit is contained in:
Kai Huuhko 2014-06-19 12:12:08 +03:00
parent 5795f762dc
commit 06088c23e0
1 changed files with 12 additions and 2 deletions

View File

@ -228,7 +228,7 @@ class Method(object):
return self
def pyx_generate(self, gen):
def pyx_generate(self, gen, param_conv=None):
gen.method_header_write(self.py_name, self.py_params)
gen.indent()
@ -246,6 +246,10 @@ class Method(object):
if self.cdefs:
gen.cdefs_write(self.cdefs)
conv = getattr(self, "params_conv", None)
if conv:
gen.write(conv)
for t, n in self.py_params:
t = t.replace("const ", "")
if t in param_type_mapping:
@ -341,13 +345,19 @@ class Property(object):
m = self.setter = Method(eo_prefix)
m.py_name = "__set__"
m.c_name = "_".join((self.eo_prefix, func.name, "set"))
py_params = []
for p in func.property_values_list:
pdir, ptype, name, desc = p.information
assert pdir == eolian.ParameterDir.IN, "prop has other than IN"
m.params.append((ptype, name))
m.py_params.append((ptype, name))
py_params.append(name)
m.c_params.append((ptype, name))
py_params = ", ".join(py_params)
m.params_conv = "%s = value" % (py_params)
m.py_params = (("", "value"),)
m.ret_type = func.return_type_get(eolian.FunctionType.PROP_SET)
if func.type == eolian.FunctionType.PROP_GET or \