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 19:25:36 +0100
commite77f5397f075b723228307e0b167f104c02ba4da (patch)
tree1fe1e6de9662f3a459b288c497752cc03315a1a0
parent99ff428b815ac047c9b889789296bc1724b81bce (diff)
shiboken6: Add all comparison operators to class Include
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> (cherry picked from commit bb20ffa377f01e2d10a23c3e6ebb6d06bf8ff5fc) Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken6/ApiExtractor/include.cpp9
-rw-r--r--sources/shiboken6/ApiExtractor/include.h43
-rw-r--r--sources/shiboken6/generator/shiboken/headergenerator.cpp5
3 files changed, 46 insertions, 11 deletions
diff --git a/sources/shiboken6/ApiExtractor/include.cpp b/sources/shiboken6/ApiExtractor/include.cpp
index 634945ed8..c0c5f6283 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 c3216b00f..94d65e3f2 100644
--- a/sources/shiboken6/generator/shiboken/headergenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/headergenerator.cpp
@@ -639,10 +639,11 @@ 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;
@@ -651,6 +652,8 @@ bool HeaderGenerator::finishGeneration()
continue;
EnumTypeEntry *enumType = cppEnum.typeEntry();
includeList << enumType->include();
+ if (const auto inc = enumType->include(); inc != classInclude)
+ includeList << inc;
writeProtectedEnumSurrogate(protEnumsSurrogates, cppEnum);
writeSbkTypeFunction(typeFunctionsStr, cppEnum);
}