aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2012-11-14 12:16:05 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2012-11-15 09:17:39 +0100
commit0060eed9f8bfbd34c8d0a1e20d16ef380f99bc6e (patch)
tree77b2179a486c2407ebf652fb7ce59fa496618743
parentf2d212427f042f8ae1d610c0f547bd0bd0ff2e33 (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.h16
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