aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-12-01 14:12:12 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-12-05 06:29:55 +0000
commit28e7e7f96d34dec30aa184b8410f1cc2b5fba8aa (patch)
tree83e32ba55c289f4f62c88cdd8542a9d7c80f7b3a
parentf5263d2af68b2f33331a5f19f7896a5d5cf762b3 (diff)
shiboken: Generate override instead of virtual
Change-Id: Ifcbabe09665c33daf5dd8d5df52036598c9f428f Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken2/generator/shiboken2/headergenerator.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
index e9bdacaf6..0c3cf93f6 100644
--- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
@@ -138,11 +138,8 @@ void HeaderGenerator::generateClass(QTextStream &s, GeneratorContext &classConte
s << endl << '{' << endl << "public:" << endl;
- bool hasVirtualFunction = false;
const AbstractMetaFunctionList &funcs = filterFunctions(metaClass);
for (AbstractMetaFunction *func : funcs) {
- if (func->isVirtual())
- hasVirtualFunction = true;
if ((func->attributes() & AbstractMetaAttributes::FinalCppMethod) == 0)
writeFunction(s, func);
}
@@ -164,8 +161,6 @@ void HeaderGenerator::generateClass(QTextStream &s, GeneratorContext &classConte
if (avoidProtectedHack() && metaClass->hasPrivateDestructor())
s << "// C++11: need to declare (unimplemented) destructor because "
"the base class destructor is private." << endl;
- if (metaClass->hasVirtualDestructor() || hasVirtualFunction)
- s << "virtual ";
s << '~' << wrapperName << "();" << endl;
}
@@ -174,8 +169,8 @@ void HeaderGenerator::generateClass(QTextStream &s, GeneratorContext &classConte
if ((!avoidProtectedHack() || !metaClass->hasPrivateDestructor())
&& usePySideExtensions() && metaClass->isQObject()) {
s << "public:\n";
- s << INDENT << "virtual int qt_metacall(QMetaObject::Call call, int id, void** args);" << endl;
- s << INDENT << "virtual void* qt_metacast(const char* _clname);" << endl;
+ s << INDENT << "int qt_metacall(QMetaObject::Call call, int id, void** args) override;" << endl;
+ s << INDENT << "void* qt_metacast(const char* _clname) override;" << endl;
}
if (m_inheritedOverloads.size()) {
@@ -259,13 +254,15 @@ void HeaderGenerator::writeFunction(QTextStream& s, const AbstractMetaFunction*
s << INDENT;
Options virtualOption = Generator::OriginalTypeDescription;
- if (func->isVirtual() || func->isAbstract())
- s << "virtual ";
- else if (!func->hasSignatureModifications())
+ const bool virtualFunc = func->isVirtual() || func->isAbstract();
+ if (!virtualFunc && !func->hasSignatureModifications())
virtualOption = Generator::NoOption;
- s << functionSignature(func, QString(), QString(), virtualOption) << ';' << endl;
+ s << functionSignature(func, QString(), QString(), virtualOption);
+ if (virtualFunc)
+ s << " override";
+ s << ';' << endl;
// Check if this method hide other methods in base classes
const AbstractMetaFunctionList &ownerFuncs = func->ownerClass()->functions();
for (const AbstractMetaFunction *f : ownerFuncs) {