aboutsummaryrefslogtreecommitdiffstats
path: root/shibokengenerator.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-02-12 01:42:03 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-02-12 15:24:39 -0300
commitfb5c0970b0ada2fb5029757ecda17b11eee1ead1 (patch)
treef00af0a9cfe976e4b8ab68592aa31406c1f6f337 /shibokengenerator.cpp
parent2c07ee6229c012ee3624fcdf0fbb281bfef964d7 (diff)
The method needsReferenceCountControl checks also in the class' ancestry.
ShibokenGenerator::needsReferenceCountControl checks the object and all its ancestry for the need to support reference counting control of other objects pointed by the present class.
Diffstat (limited to 'shibokengenerator.cpp')
-rw-r--r--shibokengenerator.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/shibokengenerator.cpp b/shibokengenerator.cpp
index 82eff597b..f94155e9c 100644
--- a/shibokengenerator.cpp
+++ b/shibokengenerator.cpp
@@ -1093,9 +1093,13 @@ bool ShibokenGenerator::hasMultipleInheritanceInAncestry(const AbstractMetaClass
bool ShibokenGenerator::needsReferenceCountControl(const AbstractMetaClass* metaClass)
{
- if (!metaClass->fields().isEmpty())
+ if (!metaClass->fields().isEmpty() || hasMethodsWithReferenceCountModifications(metaClass))
return true;
- return hasMethodsWithReferenceCountModifications(metaClass);
+ foreach (const AbstractMetaClass* parent, getBaseClasses(metaClass)) {
+ if (needsReferenceCountControl(parent))
+ return true;
+ }
+ return false;
}
bool ShibokenGenerator::hasMethodsWithReferenceCountModifications(const AbstractMetaClass* metaClass)