From 65e9fecd806810d9462e775ffeba3badf66bd948 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 7 Jan 2014 09:30:01 +0800 Subject: Add a unique id to every dive This id is just held in memory. It's not supposed to be used for anything but having a unique handle that represents a dive. Whenever you need to remember a dive across an operation that might change the dive_table, this is what you should hold on to, not a dive number, a dive pointer, or anything like that. Signed-off-by: Dirk Hohndel --- qthelper.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'qthelper.cpp') diff --git a/qthelper.cpp b/qthelper.cpp index 7eb1e48f4..9d503cb6a 100644 --- a/qthelper.cpp +++ b/qthelper.cpp @@ -217,3 +217,27 @@ QList< int > getDivesInTrip ( dive_trip_t* trip ) } return ret; } + +// we need this to be uniq, but also make sure +// it doesn't change during the life time of a Subsurface session +// oh, and it has no meaning whatsoever - that's why we have the +// silly initial number and increment by 3 :-) +int getUniqID(struct dive *d) +{ + static QSet ids; + static int maxId = 83529; + + int id = d->id; + if (id) { + if (!ids.contains(id)) { + qDebug() << "WTF - only I am allowed to create IDs"; + ids.insert(id); + } + return id; + } + maxId += 3; + id = maxId; + Q_ASSERT(!ids.contains(id)); + ids.insert(id); + return id; +} -- cgit v1.2.3-70-g09d2