diff --git a/etgtools/extractors.py b/etgtools/extractors.py index c6c307d2..1eec393a 100644 --- a/etgtools/extractors.py +++ b/etgtools/extractors.py @@ -496,6 +496,7 @@ class ClassDef(BaseDef): super(ClassDef, self).__init__() self.kind = kind self.protection = '' + self.templateParams = [] # class is a template self.bases = [] # base class names self.includes = [] # .h file for this class self.abstract = False # is it an abstract base class? @@ -531,7 +532,9 @@ class ClassDef(BaseDef): self.bases.append(node.text) for node in element.findall('includes'): self.includes.append(node.text) - + for node in element.findall('templateparamlist/param'): + self.templateParams.append(node.find('type').text) + for node in element.findall('innerclass'): if node.get('prot') == 'private': continue @@ -609,7 +612,8 @@ class ClassDef(BaseDef): # look at all overloads ok = False for m in item.all(): - if m.ignored: + # don't use ignored or static methods for propertiess + if m.ignored or m.isStatic: continue if prefix == 'Get': prop.getter = m.name @@ -617,9 +621,6 @@ class ClassDef(BaseDef): # that item has exactly zero args without a default value if countNonDefaultArgs(m) != 0: continue - # Getters must not be static methods - if item.isStatic: - continue ok = True break elif prefix == 'Set': diff --git a/etgtools/sip_generator.py b/etgtools/sip_generator.py index 65dbcc7b..01ecd4dd 100644 --- a/etgtools/sip_generator.py +++ b/etgtools/sip_generator.py @@ -299,6 +299,8 @@ from %s import * return # write the class header + if klass.templateParams: + stream.write('%stemplate<%s>\n' % (indent, ', '.join(klass.templateParams))) stream.write('%s%s %s' % (indent, klass.kind, klass.name)) if klass.bases: stream.write(' : ')