diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp')
-rw-r--r-- | sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp b/sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp index f41104a77..68eef737a 100644 --- a/sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp +++ b/sources/shiboken6/ApiExtractor/abstractmetabuilder_helpers.cpp @@ -9,6 +9,8 @@ #include "enumtypeentry.h" #include "flagstypeentry.h" +using namespace Qt::StringLiterals; + using QStringViewList = QList<QStringView>; // Return a prefix to fully qualify value, eg: @@ -19,7 +21,7 @@ static QString resolveScopePrefixHelper(const QStringViewList &scopeList, { QString name; for (qsizetype i = scopeList.size() - 1 ; i >= 0; --i) { - const QString prefix = scopeList.at(i).toString() + u"::"_qs; + const QString prefix = scopeList.at(i).toString() + u"::"_s; if (value.startsWith(prefix)) name.clear(); else @@ -28,14 +30,14 @@ static QString resolveScopePrefixHelper(const QStringViewList &scopeList, return name; } -QString AbstractMetaBuilder::resolveScopePrefix(const AbstractMetaClass *scope, +QString AbstractMetaBuilder::resolveScopePrefix(const AbstractMetaClassCPtr &scope, QStringView value) { if (!scope) return {}; const QString &qualifiedCppName = scope->qualifiedCppName(); const QStringViewList scopeList = - QStringView{qualifiedCppName}.split(u"::"_qs, Qt::SkipEmptyParts); + QStringView{qualifiedCppName}.split(u"::"_s, Qt::SkipEmptyParts); return resolveScopePrefixHelper(scopeList, value); } @@ -43,13 +45,13 @@ QString AbstractMetaBuilder::resolveScopePrefix(const AbstractMetaClass *scope, static QString resolveEnumValueScopePrefix(const AbstractMetaEnum &metaEnum, QStringView value) { - const AbstractMetaClass *scope = metaEnum.enclosingClass(); + AbstractMetaClassCPtr scope = metaEnum.enclosingClass(); if (!scope) return {}; // global enum, value should work as is const QString &qualifiedCppName = scope->qualifiedCppName(); const QString &enumName = metaEnum.name(); QStringViewList parts = - QStringView{qualifiedCppName}.split(u"::"_qs, Qt::SkipEmptyParts); + QStringView{qualifiedCppName}.split(u"::"_s, Qt::SkipEmptyParts); // Append the type (as required for enum classes) unless it is an anonymous enum. if (!metaEnum.isAnonymous()) parts.append(QStringView{enumName}); @@ -83,21 +85,26 @@ static bool isFloatConstant(const QStringView expr) // to the default value, making it usable from Python wrapper code outside the // owner class hierarchy. See TestEnum::testEnumDefaultValues(). QString AbstractMetaBuilderPrivate::fixEnumDefault(const AbstractMetaType &type, - const QString &expr) const + const QString &expr, + const AbstractMetaClassCPtr &klass) const { // QFlags construct from integers, do not fix that if (isIntegerConstant(expr)) return expr; - const auto *typeEntry = type.typeEntry(); - const EnumTypeEntry *enumTypeEntry = nullptr; - const FlagsTypeEntry *flagsTypeEntry = nullptr; + const QString field = qualifyStaticField(klass, expr); + if (!field.isEmpty()) + return field; + + const auto typeEntry = type.typeEntry(); + EnumTypeEntryCPtr enumTypeEntry; + FlagsTypeEntryCPtr flagsTypeEntry; if (typeEntry->isFlags()) { - flagsTypeEntry = static_cast<const FlagsTypeEntry *>(typeEntry); + flagsTypeEntry = std::static_pointer_cast<const FlagsTypeEntry>(typeEntry); enumTypeEntry = flagsTypeEntry->originator(); } else { Q_ASSERT(typeEntry->isEnum()); - enumTypeEntry = static_cast<const EnumTypeEntry *>(typeEntry); + enumTypeEntry = std::static_pointer_cast<const EnumTypeEntry>(typeEntry); } // Use the enum's qualified name (would otherwise be "QFlags<Enum>") if (!enumTypeEntry->qualifiedCppName().contains(u"::")) @@ -157,7 +164,7 @@ QString AbstractMetaBuilderPrivate::fixEnumDefault(const AbstractMetaType &type, qualified.prepend(resolveEnumValueScopePrefix(metaEnum, token)); qualifiedTokens.append(qualified); } - const QString qualifiedExpression = qualifiedTokens.join(u" | "_qs); + const QString qualifiedExpression = qualifiedTokens.join(u" | "_s); if (!typeCast) return qualifiedExpression; @@ -175,7 +182,7 @@ bool AbstractMetaBuilder::dontFixDefaultValue(QStringView expr) || isIntegerConstant(expr) || isFloatConstant(expr); } -QString AbstractMetaBuilderPrivate::qualifyStaticField(const AbstractMetaClass *c, +QString AbstractMetaBuilderPrivate::qualifyStaticField(const AbstractMetaClassCPtr &c, QStringView field) { if (!c || c->fields().isEmpty()) |