aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/generator/shiboken2/headergenerator.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-01 07:59:26 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-10-01 07:59:26 +0200
commit2ec2127b9f4bcd62975b175e77cd0502580d9de7 (patch)
treea63b666c1289604311338ecf59d9ea91c353a3c6 /sources/shiboken2/generator/shiboken2/headergenerator.cpp
parent0f922f604297a2022527f04a696da121396ddc0a (diff)
parent26e4ba3639bac57b0481bd6bb3964b1afa340ab9 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'sources/shiboken2/generator/shiboken2/headergenerator.cpp')
-rw-r--r--sources/shiboken2/generator/shiboken2/headergenerator.cpp29
1 files changed, 13 insertions, 16 deletions
diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
index 1fdd89af8..1d3a20447 100644
--- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp
@@ -340,14 +340,15 @@ void HeaderGenerator::writeTypeIndexValueLine(QTextStream &s, const TypeEntry *t
void HeaderGenerator::writeTypeIndexValueLines(QTextStream &s, const AbstractMetaClass *metaClass)
{
auto typeEntry = metaClass->typeEntry();
- if (!typeEntry->generateCode() || !NamespaceTypeEntry::isVisibleScope(typeEntry))
+ if (!typeEntry->generateCode())
return;
- writeTypeIndexValueLine(s, metaClass->typeEntry());
+ // enum indices are required for invisible namespaces as well.
for (const AbstractMetaEnum *metaEnum : metaClass->enums()) {
- if (metaEnum->isPrivate())
- continue;
- writeTypeIndexValueLine(s, metaEnum->typeEntry());
+ if (!metaEnum->isPrivate())
+ writeTypeIndexValueLine(s, metaEnum->typeEntry());
}
+ if (NamespaceTypeEntry::isVisibleScope(typeEntry))
+ writeTypeIndexValueLine(s, metaClass->typeEntry());
}
// Format the typedefs for the typedef entries to be generated
@@ -399,19 +400,16 @@ bool HeaderGenerator::finishGeneration()
Indentation indent(INDENT);
macrosStream << "// Type indices\nenum : int {\n";
- AbstractMetaEnumList globalEnums = this->globalEnums();
AbstractMetaClassList classList = classes();
std::sort(classList.begin(), classList.end(), [](AbstractMetaClass *a, AbstractMetaClass *b) {
return a->typeEntry()->sbkIndex() < b->typeEntry()->sbkIndex();
});
- for (const AbstractMetaClass *metaClass : classList) {
+ for (const AbstractMetaClass *metaClass : classList)
writeTypeIndexValueLines(macrosStream, metaClass);
- lookForEnumsInClassesNotToBeGenerated(globalEnums, metaClass);
- }
- for (const AbstractMetaEnum *metaEnum : qAsConst(globalEnums))
+ for (const AbstractMetaEnum *metaEnum : globalEnums())
writeTypeIndexValueLine(macrosStream, metaEnum->typeEntry());
// Write the smart pointer define indexes.
@@ -486,12 +484,11 @@ bool HeaderGenerator::finishGeneration()
typeFunctions << "QT_WARNING_PUSH\n";
typeFunctions << "QT_WARNING_DISABLE_DEPRECATED\n";
}
- for (const AbstractMetaEnum *cppEnum : qAsConst(globalEnums)) {
- if (cppEnum->isAnonymous() || cppEnum->isPrivate())
- continue;
- includes << cppEnum->typeEntry()->include();
- writeProtectedEnumSurrogate(protEnumsSurrogates, cppEnum);
- writeSbkTypeFunction(typeFunctions, cppEnum);
+ for (const AbstractMetaEnum *cppEnum : globalEnums()) {
+ if (!cppEnum->isAnonymous()) {
+ includes << cppEnum->typeEntry()->include();
+ writeSbkTypeFunction(typeFunctions, cppEnum);
+ }
}
for (AbstractMetaClass *metaClass : classList) {