diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-11-24 15:09:20 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-11-25 19:25:36 +0100 |
commit | e77f5397f075b723228307e0b167f104c02ba4da (patch) | |
tree | 1fe1e6de9662f3a459b288c497752cc03315a1a0 | |
parent | 99ff428b815ac047c9b889789296bc1724b81bce (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.cpp | 9 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/include.h | 43 | ||||
-rw-r--r-- | sources/shiboken6/generator/shiboken/headergenerator.cpp | 5 |
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); } |