diff options
Diffstat (limited to 'libs/pbd')
-rw-r--r-- | libs/pbd/id.cc | 12 | ||||
-rw-r--r-- | libs/pbd/pbd/id.h | 4 |
2 files changed, 14 insertions, 2 deletions
diff --git a/libs/pbd/id.cc b/libs/pbd/id.cc index d507824349..bc119b13dc 100644 --- a/libs/pbd/id.cc +++ b/libs/pbd/id.cc @@ -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 diff --git a/libs/pbd/pbd/id.h b/libs/pbd/pbd/id.h index 6c5fcb873e..a597b6512b 100644 --- a/libs/pbd/pbd/id.h +++ b/libs/pbd/pbd/id.h @@ -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&); |