From 8aa7ec107245d8af78f6b52dbe3961ef3e2457c4 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Sun, 4 Dec 2022 10:03:51 +0100 Subject: [PATCH] TaskTree: Add hash function for TreeStorageBase Change-Id: Ia9242e3ca90ab13ee93fa42ebf86d03cc04fb669 Reviewed-by: hjk Reviewed-by: --- src/libs/utils/tasktree.cpp | 5 +++++ src/libs/utils/tasktree.h | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/libs/utils/tasktree.cpp b/src/libs/utils/tasktree.cpp index 2cc635e0cfa..512d939211c 100644 --- a/src/libs/utils/tasktree.cpp +++ b/src/libs/utils/tasktree.cpp @@ -14,6 +14,11 @@ bool TreeStorageBase::isValid() const return m_storageData && m_storageData->m_constructor && m_storageData->m_destructor; } +size_t TreeStorageBase::hash(uint seed) const +{ + return size_t(m_storageData.get()) ^ seed; +} + TreeStorageBase::TreeStorageBase(StorageConstructor ctor, StorageDestructor dtor) : m_storageData(new StorageData{ctor, dtor}) { } diff --git a/src/libs/utils/tasktree.h b/src/libs/utils/tasktree.h index 5d0b3c5b2b3..f780ce9f176 100644 --- a/src/libs/utils/tasktree.h +++ b/src/libs/utils/tasktree.h @@ -35,6 +35,7 @@ public: { return first.m_storageData == second.m_storageData; } friend bool operator!=(const TreeStorageBase &first, const TreeStorageBase &second) { return first.m_storageData != second.m_storageData; } + size_t hash(uint seed) const; protected: using StorageConstructor = std::function; @@ -60,6 +61,11 @@ private: friend TaskContainer; }; +inline size_t qHash(const TreeStorageBase &storage, uint seed = 0) +{ + return storage.hash(seed); +} + template class TreeStorage : public TreeStorageBase {