aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/codesnip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/ApiExtractor/codesnip.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/codesnip.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/codesnip.cpp b/sources/shiboken6/ApiExtractor/codesnip.cpp
index 255b9a392..40847a016 100644
--- a/sources/shiboken6/ApiExtractor/codesnip.cpp
+++ b/sources/shiboken6/ApiExtractor/codesnip.cpp
@@ -33,6 +33,11 @@ QString TemplateInstance::expandCode() const
return result;
}
+bool comparesEqual(const TemplateInstance &lhs, const TemplateInstance &rhs) noexcept
+{
+ return lhs.m_name == rhs.m_name && lhs.replaceRules == rhs.replaceRules;
+}
+
// ---------------------- CodeSnipFragment
static QString fragmentToCodeHelper(const QString &c)
@@ -65,6 +70,21 @@ static bool isEmptyFragment(const CodeSnipFragment &codeFrag)
return std::visit([](auto f) { return isEmptyFragmentHelper(f); }, codeFrag);
}
+static size_t hashHelper(const QString &c, size_t seed) noexcept
+{
+ return qHash(c, seed);
+}
+
+static size_t hashHelper(const TemplateInstance &t, size_t seed) noexcept
+{
+ return qHash(t, seed);
+}
+
+size_t qHash(const CodeSnipFragment &codeFrag, size_t seed) noexcept
+{
+ return std::visit([seed](auto f) { return hashHelper(f, seed); }, codeFrag);
+}
+
static void formatDebugHelper(QDebug &d, const QString &code)
{
const auto lines = QStringView{code}.split(u'\n');
@@ -115,6 +135,12 @@ QRegularExpression CodeSnipAbstract::placeHolderRegex(int index)
return QRegularExpression(u'%' + QString::number(index) + "\\b"_L1);
}
+bool comparesEqual(const CodeSnip &lhs, const CodeSnip &rhs) noexcept
+{
+ return lhs.language == rhs.language && lhs.position == rhs.position
+ && lhs.codeList() == rhs.codeList();
+}
+
void purgeEmptyCodeSnips(QList<CodeSnip> *list)
{
for (auto it = list->begin(); it != list->end(); ) {