mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <dirk@hohndel.org>
This commit is contained in:
parent
ca391035f3
commit
65e9fecd80
3 changed files with 43 additions and 1 deletions
24
qthelper.cpp
24
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<int> 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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue