From cf2e7fb4ad3353fadc2a8a1efadd813a122c1d50 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 30 Jun 2017 10:41:10 +0200 Subject: 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 --- .../shiboken2/ApiExtractor/abstractmetalang.cpp | 71 +++++++--------------- 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; -- cgit v1.2.3