diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-06-30 10:41:10 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-07-11 13:13:38 +0000 |
commit | cf2e7fb4ad3353fadc2a8a1efadd813a122c1d50 (patch) | |
tree | 00d6186e824a49f8467fd6dbedf448325c633dd6 /sources | |
parent | 1c5a5cc67d8f80bd542a166b6861a234529c5c43 (diff) |
AbstractMetaType: Join the signature functions
Introduce a common helper function to format the signature for
minimalSignature() / cppSignature() which differ only by whitespace.
Task-number: PYSIDE-354
Task-number: PYSIDE-516
Change-Id: Ife6be7001618d73a7a2bc15e91bff4ae42192a45
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'sources')
-rw-r--r-- | sources/shiboken2/ApiExtractor/abstractmetalang.cpp | 71 | ||||
-rw-r--r-- | sources/shiboken2/ApiExtractor/abstractmetalang.h | 3 |
2 files changed, 23 insertions, 51 deletions
diff --git a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp index 07bd14e55..482efdaa0 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetalang.cpp +++ b/sources/shiboken2/ApiExtractor/abstractmetalang.cpp @@ -149,39 +149,8 @@ AbstractMetaType *AbstractMetaType::copy() const QString AbstractMetaType::cppSignature() const { - if (m_cachedCppSignature.isEmpty()) { - if (isConstant()) - m_cachedCppSignature += QLatin1String("const "); - - m_cachedCppSignature += typeEntry()->qualifiedCppName(); - - if (hasInstantiationInCpp()) { - AbstractMetaTypeList types = instantiations(); - m_cachedCppSignature += QLatin1Char('<'); - for (int i = 0; i < types.count(); ++i) { - if (i > 0) - m_cachedCppSignature += QLatin1String(", "); - m_cachedCppSignature += types[i]->cppSignature(); - } - m_cachedCppSignature += QLatin1String(" >"); - } - - if (indirections() || m_referenceType != NoReference) { - m_cachedCppSignature += QLatin1Char(' '); - if (indirections()) - m_cachedCppSignature += QString(indirections(), QLatin1Char('*')); - switch (referenceType()) { - case NoReference: - break; - case LValueReference: - m_cachedCppSignature += QLatin1Char('&'); - break; - case RValueReference: - m_cachedCppSignature += QLatin1String("&&"); - break; - } - } - } + if (m_cachedCppSignature.isEmpty()) + m_cachedCppSignature = formatSignature(false); return m_cachedCppSignature; } @@ -2577,37 +2546,39 @@ void AbstractMetaClass::fixFunctions() } -QString AbstractMetaType::minimalSignature() const +QString AbstractMetaType::formatSignature(bool minimal) const { - QString minimalSignature; + QString result; if (isConstant()) - minimalSignature += QLatin1String("const "); - minimalSignature += typeEntry()->qualifiedCppName(); - if (hasInstantiations()) { - AbstractMetaTypeList instantiations = this->instantiations(); - minimalSignature += QLatin1String("< "); - for (int i = 0; i < instantiations.size(); ++i) { + result += QLatin1String("const "); + result += typeEntry()->qualifiedCppName(); + if (!m_instantiations.isEmpty()) { + result += QLatin1Char('<'); + if (minimal) + result += QLatin1Char(' '); + for (int i = 0, size = m_instantiations.size(); i < size; ++i) { if (i > 0) - minimalSignature += QLatin1Char(','); - minimalSignature += instantiations[i]->minimalSignature(); + result += QLatin1Char(','); + result += m_instantiations.at(i)->minimalSignature(); } - minimalSignature += QLatin1String(" >"); + result += QLatin1String(" >"); } - for (int j = 0; j < indirections(); ++j) - minimalSignature += QLatin1Char('*'); + if (!minimal && (m_indirections != 0 || m_referenceType != NoReference)) + result += QLatin1Char(' '); + if (m_indirections) + result += QString(m_indirections, QLatin1Char('*')); switch (referenceType()) { case NoReference: break; case LValueReference: - minimalSignature += QLatin1Char('&'); + result += QLatin1Char('&'); break; case RValueReference: - minimalSignature += QLatin1String("&&"); + result += QLatin1String("&&"); break; } - - return minimalSignature; + return result; } bool AbstractMetaType::hasNativeId() const diff --git a/sources/shiboken2/ApiExtractor/abstractmetalang.h b/sources/shiboken2/ApiExtractor/abstractmetalang.h index a16f79c30..921df4300 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetalang.h +++ b/sources/shiboken2/ApiExtractor/abstractmetalang.h @@ -388,7 +388,7 @@ public: return hasInstantiations() && m_cppInstantiation; } - QString minimalSignature() const; + QString minimalSignature() const { return formatSignature(true); } // true when the type is a QtJambiObject subclass bool hasNativeId() const; @@ -613,6 +613,7 @@ public: private: TypeUsagePattern determineUsagePattern() const; + QString formatSignature(bool minimal) const; const TypeEntry *m_typeEntry; AbstractMetaTypeList m_instantiations; |