aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-11-24 15:09:20 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-11-25 15:49:41 +0100
commitbb20ffa377f01e2d10a23c3e6ebb6d06bf8ff5fc (patch)
tree7ab79ab2593db62d482098f77092ee92525e5b1e
parent52e3b960b30950ac7bb59bb31e00d6d1038828f1 (diff)
shiboken6: Add all comparison operators to class Include
Pick-to: 6.4 Task-number: PYSIDE-962 Change-Id: I50e7b325b8e6926da7e9fb81ee90ac41768ed436 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
-rw-r--r--sources/shiboken6/ApiExtractor/include.cpp9
-rw-r--r--sources/shiboken6/ApiExtractor/include.h43
-rw-r--r--sources/shiboken6/generator/shiboken/headergenerator.cpp6
3 files changed, 46 insertions, 12 deletions
diff --git a/sources/shiboken6/ApiExtractor/include.cpp b/sources/shiboken6/ApiExtractor/include.cpp
index 15d2cadd9..d2d577817 100644
--- a/sources/shiboken6/ApiExtractor/include.cpp
+++ b/sources/shiboken6/ApiExtractor/include.cpp
@@ -24,6 +24,15 @@ QString Include::toString() const
return u"import "_s + m_name + u';';
}
+int Include::compare(const Include &rhs) const
+{
+ if (m_type < rhs.m_type)
+ return -1;
+ if (m_type > rhs.m_type)
+ return 1;
+ return m_name.compare(rhs.m_name);
+}
+
size_t qHash(const Include& inc)
{
return qHash(inc.m_name);
diff --git a/sources/shiboken6/ApiExtractor/include.h b/sources/shiboken6/ApiExtractor/include.h
index fcbaf9b9c..7fd7d3b36 100644
--- a/sources/shiboken6/ApiExtractor/include.h
+++ b/sources/shiboken6/ApiExtractor/include.h
@@ -42,23 +42,46 @@ public:
QString toString() const;
- bool operator<(const Include& other) const
- {
- return m_name < other.m_name;
- }
-
- bool operator==(const Include& other) const
- {
- return m_type == other.m_type && m_name == other.m_name;
- }
+ friend size_t qHash(const Include &);
+ int compare(const Include &rhs) const;
- friend size_t qHash(const Include&);
private:
IncludeType m_type = IncludePath;
QString m_name;
};
size_t qHash(const Include& inc);
+
+inline bool operator<(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) < 0;
+}
+
+inline bool operator<=(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) <= 0;
+}
+
+inline bool operator==(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) == 0;
+}
+
+inline bool operator!=(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) != 0;
+}
+
+inline bool operator>=(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) >= 0;
+}
+
+inline bool operator>(const Include &lhs, const Include &rhs)
+{
+ return lhs.compare(rhs) > 0;
+}
+
QTextStream& operator<<(QTextStream& out, const Include& include);
TextStream& operator<<(TextStream& out, const Include& include);
#ifndef QT_NO_DEBUG_STREAM
diff --git a/sources/shiboken6/generator/shiboken/headergenerator.cpp b/sources/shiboken6/generator/shiboken/headergenerator.cpp
index 9ed192097..7d2b923ef 100644
--- a/sources/shiboken6/generator/shiboken/headergenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/headergenerator.cpp
@@ -639,17 +639,19 @@ bool HeaderGenerator::finishGeneration()
const bool isPrivate = classType->isPrivate();
auto &includeList = isPrivate ? privateIncludes : includes;
auto &forwardList = isPrivate ? privateForwardDeclarations : forwardDeclarations;
+ const auto classInclude = classType->include();
if (leanHeaders() && canForwardDeclare(metaClass))
forwardList.append(metaClass);
else
- includeList << classType->include();
+ includeList << classInclude;
auto &typeFunctionsStr = isPrivate ? privateTypeFunctions : typeFunctions;
for (const AbstractMetaEnum &cppEnum : metaClass->enums()) {
if (cppEnum.isAnonymous() || cppEnum.isPrivate())
continue;
- includeList << cppEnum.typeEntry()->include();
+ if (const auto inc = cppEnum.typeEntry()->include(); inc != classInclude)
+ includeList << inc;
writeProtectedEnumSurrogate(protEnumsSurrogates, cppEnum);
writeSbkTypeFunction(typeFunctionsStr, cppEnum);
}