mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-07 04:20:07 +01:00
Better generated properties
By directly referencing their setter and getter methods, and due to the typing work already done for methods, we now have type information attached to properties. There are a few edge cases of setters/getters not having the proper number of arguments for a getter(0) or setter(1), but most cases are handled. The incorrect number of arguments may be missing default arguments from what the extraction code figures out from the C++ code?
This commit is contained in:
@@ -509,16 +509,22 @@ class PiWrapperGenerator(generators.WrapperGeneratorBase, FixWxPrefix):
|
||||
|
||||
def generateProperty(self, prop, stream, indent):
|
||||
assert isinstance(prop, extractors.PropertyDef)
|
||||
if prop.ignored or piIgnored(prop):
|
||||
return
|
||||
stream.write('%s%s = property(None, None)\n' % (indent, prop.name))
|
||||
self._generateProperty(prop, stream, indent)
|
||||
|
||||
|
||||
def generatePyProperty(self, prop, stream, indent):
|
||||
assert isinstance(prop, extractors.PyPropertyDef)
|
||||
self._generateProperty(prop, stream, indent)
|
||||
|
||||
def _generateProperty(self, prop: extractors.PyPropertyDef | extractors.PropertyDef, stream, indent: str):
|
||||
if prop.ignored or piIgnored(prop):
|
||||
return
|
||||
stream.write('%s%s = property(None, None)\n' % (indent, prop.name))
|
||||
if prop.setter and prop.getter:
|
||||
stream.write(f'{indent}{prop.name} = property({prop.getter}, {prop.setter})\n')
|
||||
elif prop.getter:
|
||||
stream.write(f'{indent}{prop.name} = property({prop.getter})\n')
|
||||
elif prop.setter:
|
||||
stream.write(f'{indent}{prop.name} = property(fset={prop.setter})\n')
|
||||
|
||||
|
||||
def generateMethod(self, method, stream, indent, name=None, docstring=None, is_overload=False):
|
||||
|
||||
Reference in New Issue
Block a user