aboutsummaryrefslogtreecommitdiffstats
path: root/sources
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-06-30 10:41:10 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-07-11 13:13:38 +0000
commitcf2e7fb4ad3353fadc2a8a1efadd813a122c1d50 (patch)
tree00d6186e824a49f8467fd6dbedf448325c633dd6 /sources
parent1c5a5cc67d8f80bd542a166b6861a234529c5c43 (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.cpp71
-rw-r--r--sources/shiboken2/ApiExtractor/abstractmetalang.h3
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;