new file
[ardour.git] / libs / pbd / pbd / id.h
index 95ac00bed071759e0beaa88690cf34033b7608c8..c1103627342ba4d313052baa62cc03acb39de70e 100644 (file)
@@ -1,9 +1,11 @@
 #ifndef __pbd_id_h__
 #define __pbd_id_h__
 
-#include <uuid/uuid.h>
+#include <stdint.h>
 #include <string>
 
+#include <glibmm/thread.h>
+
 namespace PBD {
 
 class ID {
@@ -11,21 +13,33 @@ class ID {
        ID ();
        ID (std::string);
        
-       bool operator== (const ID& other) const;
+       bool operator== (const ID& other) const {
+               return _id == other._id; 
+       }
+
        bool operator!= (const ID& other) const {
-               return !operator== (other);
+               return _id != other._id;
        }
+
        ID& operator= (std::string); 
 
        bool operator< (const ID& other) const {
-               return memcmp (id, other.id, sizeof (id)) < 0;
+               return _id < other._id;
        }
 
        void print (char* buf) const;
+        std::string to_s() const;
        
+       static uint64_t counter() { return _counter; }
+       static void init_counter (uint64_t val) { _counter = val; }
+       static void init ();
+
   private:
-       uuid_t id;
+       uint64_t _id;
        int string_assign (std::string);
+
+       static Glib::Mutex* counter_lock;
+       static uint64_t _counter;
 };
 
 }