From 28e7e7f96d34dec30aa184b8410f1cc2b5fba8aa Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Dec 2017 14:12:12 +0100 Subject: shiboken: Generate override instead of virtual Change-Id: Ifcbabe09665c33daf5dd8d5df52036598c9f428f Reviewed-by: Christian Tismer --- .../shiboken2/generator/shiboken2/headergenerator.cpp | 19 ++++++++----------- 1 file 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) { -- cgit v1.2.3