Commit 27a44502 authored by Jack Jansen's avatar Jack Jansen

Fixed two silly bugs in the PEP252 support code, added an assert

that basechain isn't set, and made the output a bit prettier.
parent ad692ccd
...@@ -215,6 +215,7 @@ class PEP252Mixin: ...@@ -215,6 +215,7 @@ class PEP252Mixin:
assert self.outputSetattr.im_func == PEP252Mixin.outputSetattr.im_func assert self.outputSetattr.im_func == PEP252Mixin.outputSetattr.im_func
assert self.outputGetattrBody == None assert self.outputGetattrBody == None
assert self.outputGetattrHook == None assert self.outputGetattrHook == None
assert self.basechain == "NULL"
def outputGetattr(self): def outputGetattr(self):
pass pass
...@@ -293,24 +294,28 @@ class PEP252Mixin: ...@@ -293,24 +294,28 @@ class PEP252Mixin:
self.outputGetter(name, get) self.outputGetter(name, get)
else: else:
Output("#define %s_get_%s NULL", self.prefix, name) Output("#define %s_get_%s NULL", self.prefix, name)
Output()
if set: if set:
self.outputSetter(name, set) self.outputSetter(name, set)
else: else:
Output("#define %s_set_%s NULL", self.prefix, name) Output("#define %s_set_%s NULL", self.prefix, name)
Output()
Output("static PyGetSetDef %s_getsetlist[] = {", self.prefix) Output("static PyGetSetDef %s_getsetlist[] = {", self.prefix)
IndentLevel() IndentLevel()
for name, get, set, doc in self.getsetlist: for name, get, set, doc in self.getsetlist:
if doc: if doc:
doc = `doc` doc = '"' + doc + '"'
else: else:
doc = "NULL" doc = "NULL"
Output("{\"%s\", (getter)%s_get_%s, (setter)%s_set_%s, %s}", Output("{\"%s\", (getter)%s_get_%s, (setter)%s_set_%s, %s},",
name, self.prefix, name, self.prefix, name, doc) name, self.prefix, name, self.prefix, name, doc)
Output("{NULL, NULL, NULL, NULL},")
DedentLevel() DedentLevel()
Output("};") Output("};")
else: else:
Output("#define %s_getsetlist NULL", self.prefix) Output("#define %s_getsetlist NULL", self.prefix)
Output()
def outputGetter(self, name, code): def outputGetter(self, name, code):
Output("static PyObject *%s_get_%s(%s *self, void *closure)", Output("static PyObject *%s_get_%s(%s *self, void *closure)",
...@@ -318,14 +323,16 @@ class PEP252Mixin: ...@@ -318,14 +323,16 @@ class PEP252Mixin:
OutLbrace() OutLbrace()
Output(code) Output(code)
OutRbrace() OutRbrace()
Output()
def outputSetter(self, name, code): def outputSetter(self, name, code):
Output("static int %s_get_%s(%s *self, PyObject *v, void *closure)", Output("static int %s_set_%s(%s *self, PyObject *v, void *closure)",
self.prefix, name, self.objecttype) self.prefix, name, self.objecttype)
OutLbrace() OutLbrace()
Output(code) Output(code)
Output("return 0;") Output("return 0;")
OutRbrace() OutRbrace()
Output()
class GlobalObjectDefinition(ObjectDefinition): class GlobalObjectDefinition(ObjectDefinition):
"""Like ObjectDefinition but exports some parts. """Like ObjectDefinition but exports some parts.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment