diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-12-01 14:12:12 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-12-05 06:29:55 +0000 |
commit | 28e7e7f96d34dec30aa184b8410f1cc2b5fba8aa (patch) | |
tree | 83e32ba55c289f4f62c88cdd8542a9d7c80f7b3a /sources | |
parent | f5263d2af68b2f33331a5f19f7896a5d5cf762b3 (diff) |
shiboken: Generate override instead of virtual
Change-Id: Ifcbabe09665c33daf5dd8d5df52036598c9f428f
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/headergenerator.cpp | 19 |
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) { |