diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2012-11-14 12:16:05 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-11-15 09:17:39 +0100 |
commit | 0060eed9f8bfbd34c8d0a1e20d16ef380f99bc6e (patch) | |
tree | 77b2179a486c2407ebf652fb7ce59fa496618743 | |
parent | f2d212427f042f8ae1d610c0f547bd0bd0ff2e33 (diff) |
Make Id class more unique.
Memory addresses might get re-used, so add a time stamp.
Change-Id: Ia417f976bb967e7df12176996496def5f9e5c7e5
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/lib/language/publictypes.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/language/publictypes.h b/src/lib/language/publictypes.h index 5f6141011..ce86daf79 100644 --- a/src/lib/language/publictypes.h +++ b/src/lib/language/publictypes.h @@ -30,7 +30,9 @@ #define PUBLICTYPES_H #include <QtGlobal> +#include <QDateTime> #include <QList> +#include <QPair> #include <QString> #include <QStringList> #include <QVariantMap> @@ -46,19 +48,23 @@ template<int dummy> class IdTemplate friend class QbsEngine; friend uint qHash<>(IdTemplate<dummy> id); public: - IdTemplate() : m_id(0) {} + IdTemplate() : m_id(0), m_timeStamp(0) {} bool isValid() const { return m_id; } - - bool operator==(IdTemplate<dummy> other) const { return m_id == other.m_id; } + bool operator==(IdTemplate<dummy> other) const { + return m_id == other.m_id && m_timeStamp == other.m_timeStamp; + } private: - explicit IdTemplate(quintptr id) : m_id(id) {} + explicit IdTemplate(quintptr id) : m_id(id), m_timeStamp(QDateTime::currentMSecsSinceEpoch()) {} quintptr m_id; + qint64 m_timeStamp; }; -template<int n> uint qHash(IdTemplate<n> id) { return QT_PREPEND_NAMESPACE(qHash)(id.m_id); } +template<int n> uint qHash(IdTemplate<n> id) { + return QT_PREPEND_NAMESPACE(qHash)(qMakePair(id.m_id, id.m_timeStamp)); +} class Group |