mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-24 14:17:21 +01:00
extend PBD::ID API to allow construction and operator== using uint64_t
This is theoretically dangerous, because a PBD::ID is supposed to be unique, and this new constructor cannot guarantee that. However, the same danger already exists with the std::string-based constructor
This commit is contained in:
parent
417f63a29e
commit
ccd19ed061
2 changed files with 14 additions and 2 deletions
|
|
@ -34,8 +34,9 @@ uint64_t ID::_counter = 0;
|
|||
void
|
||||
ID::init ()
|
||||
{
|
||||
if (!counter_lock)
|
||||
if (!counter_lock) {
|
||||
counter_lock = new Glib::Threads::Mutex;
|
||||
}
|
||||
}
|
||||
|
||||
ID::ID ()
|
||||
|
|
@ -50,14 +51,21 @@ ID::ID (const ID& other)
|
|||
|
||||
ID::ID (string str)
|
||||
{
|
||||
/* danger, will robinson: could result in non-unique ID */
|
||||
string_assign (str);
|
||||
}
|
||||
|
||||
ID::ID (uint64_t n)
|
||||
{
|
||||
/* danger, will robinson: could result in non-unique ID */
|
||||
_id = n;
|
||||
}
|
||||
|
||||
void
|
||||
ID::reset ()
|
||||
{
|
||||
Glib::Threads::Mutex::Lock lm (*counter_lock);
|
||||
_id = _counter++;
|
||||
_id = ++_counter;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ class LIBPBD_API ID {
|
|||
ID ();
|
||||
ID (std::string);
|
||||
ID (const ID&);
|
||||
ID (uint64_t);
|
||||
|
||||
void reset ();
|
||||
|
||||
|
|
@ -47,6 +48,9 @@ class LIBPBD_API ID {
|
|||
}
|
||||
|
||||
bool operator== (const std::string&) const;
|
||||
bool operator== (uint64_t n) const {
|
||||
return _id == n;
|
||||
}
|
||||
|
||||
ID& operator= (std::string);
|
||||
ID& operator= (const ID&);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue