aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/generator
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-08 14:21:19 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-08 14:21:19 +0200
commit00fa3966dbed373e341710f1145fd23a88f1bdb0 (patch)
tree331be762988f22221b40ed93486b9b05b657f0bd /sources/shiboken2/generator
parente801fdab20ad4f5f47deaf49600af0d5f02ecc51 (diff)
parent2ed45ce8991408de91d7e02a2b80a09a2d9e5083 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'sources/shiboken2/generator')
-rw-r--r--sources/shiboken2/generator/generator.cpp3
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp27
-rw-r--r--sources/shiboken2/generator/shiboken2/headergenerator.cpp8
-rw-r--r--sources/shiboken2/generator/shiboken2/shibokengenerator.cpp5
4 files changed, 29 insertions, 14 deletions
diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp
index 487715a3c..445743a74 100644
--- a/sources/shiboken2/generator/generator.cpp
+++ b/sources/shiboken2/generator/generator.cpp
@@ -502,8 +502,7 @@ bool Generator::generate()
bool Generator::shouldGenerateTypeEntry(const TypeEntry *type) const
{
- return (type->codeGeneration() & TypeEntry::GenerateTargetLang)
- && NamespaceTypeEntry::isVisibleScope(type);
+ return type->generateCode() && NamespaceTypeEntry::isVisibleScope(type);
}
bool Generator::shouldGenerate(const AbstractMetaClass *metaClass) const
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
index 18137a985..a6e9a00b6 100644
--- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
@@ -393,14 +393,18 @@ void CppGenerator::generateClass(QTextStream &s, const GeneratorContext &classCo
metaClass->getEnumsFromInvisibleNamespacesToBeGenerated(&classEnums);
//Extra includes
- s << "\n// Extra includes\n";
- QVector<Include> includes = metaClass->typeEntry()->extraIncludes();
+ QVector<Include> includes;
+ if (!classContext.useWrapper())
+ includes += metaClass->typeEntry()->extraIncludes();
for (AbstractMetaEnum *cppEnum : qAsConst(classEnums))
includes.append(cppEnum->typeEntry()->extraIncludes());
- std::sort(includes.begin(), includes.end());
- for (const Include &inc : qAsConst(includes))
- s << inc.toString() << Qt::endl;
- s << Qt::endl;
+ if (!includes.isEmpty()) {
+ s << "\n// Extra includes\n";
+ std::sort(includes.begin(), includes.end());
+ for (const Include &inc : qAsConst(includes))
+ s << inc.toString() << Qt::endl;
+ s << '\n';
+ }
s << "\n#include <cctype>\n#include <cstring>\n";
@@ -5234,9 +5238,16 @@ void CppGenerator::writeClassRegister(QTextStream &s,
s << "0,\n";
}
- // 6:baseType
- const auto base = metaClass->isNamespace()
+ // 6:baseType: Find a type that is not disabled.
+ auto base = metaClass->isNamespace()
? metaClass->extendedNamespace() : metaClass->baseClass();
+ if (!metaClass->isNamespace()) {
+ for (; base != nullptr; base = base->baseClass()) {
+ const auto ct = base->typeEntry()->codeGeneration();
+ if (ct == TypeEntry::GenerateCode || ct == TypeEntry::GenerateForSubclass)
+ break;
+ }
+ }
if (base) {
s << INDENT << "reinterpret_cast<SbkObjectType *>("
<< cpythonTypeNameExt(base->typeEntry()) << "),\n";
diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
index 1d3a20447..1ba846d87 100644
--- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
@@ -119,7 +119,13 @@ void HeaderGenerator::generateClass(QTextStream &s, const GeneratorContext &clas
s << "#define protected public\n\n";
//Includes
- s << metaClass->typeEntry()->include() << Qt::endl;
+ auto typeEntry = metaClass->typeEntry();
+ s << typeEntry->include() << '\n';
+ if (classContext.useWrapper() && !typeEntry->extraIncludes().isEmpty()) {
+ s << "\n// Extra includes\n";
+ for (const Include &inc : typeEntry->extraIncludes())
+ s << inc.toString() << '\n';
+ }
if (classContext.useWrapper() && usePySideExtensions() && metaClass->isQObject())
s << "namespace PySide { class DynamicQMetaObject; }\n\n";
diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
index a6a175999..7b8f2c7e4 100644
--- a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
@@ -929,7 +929,7 @@ QString ShibokenGenerator::fixedCppTypeName(const TypeEntry *type, QString typeN
{
if (typeName.isEmpty())
typeName = type->qualifiedCppName();
- if (!(type->codeGeneration() & TypeEntry::GenerateTargetLang)) {
+ if (!type->generateCode()) {
typeName.prepend(QLatin1Char('_'));
typeName.prepend(type->targetLangPackage());
}
@@ -1609,8 +1609,7 @@ ShibokenGenerator::ExtendedConverterData ShibokenGenerator::getExtendedConverter
// Get only the conversion operators that return a type from another module,
// that are value-types and were not removed in the type system.
const TypeEntry *convType = convOp->type()->typeEntry();
- if ((convType->codeGeneration() & TypeEntry::GenerateTargetLang)
- || !convType->isValue()
+ if (convType->generateCode() || !convType->isValue()
|| convOp->isModifiedRemoved())
continue;
extConvs[convType].append(convOp->ownerClass());