revert earlier changes to uuid class, but keep boost version in svn for the future
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 8 Feb 2011 02:21:15 +0000 (02:21 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 8 Feb 2011 02:21:15 +0000 (02:21 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@8763 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/pbd/pbd/uuid.h
libs/pbd/pbd/uuid_boost.h [new file with mode: 0644]
libs/pbd/uuid.cc
libs/pbd/uuid_boost.cc [new file with mode: 0644]

index 275b72648af204dcb3fbb1cd325bbc3a4081763e..16a67436b70c36bd57d040183a72d491eccc32d4 100644 (file)
 #define __pbd_uuid_h__
 
 #include <string>
-#include <boost/uuid/uuid.hpp>
-#include <boost/uuid/uuid_generators.hpp>
+#include <uuid/uuid.h>
 
 namespace PBD {
 
-class UUID : public boost::uuids::uuid {
+class UUID {
 
   public:
-    UUID () 
-            : boost::uuids::uuid (boost::uuids::random_generator()()) {}
-    UUID (std::string const & str)
-            : boost::uuids::uuid (boost::uuids::string_generator()(str)) {}
-    
-    explicit UUID (boost::uuids::uuid const& u)
-            : boost::uuids::uuid(u)
-    {}
-
-    operator boost::uuids::uuid() {
-            return static_cast<boost::uuids::uuid&>(*this);
-    }
-    
-    operator boost::uuids::uuid() const {
-            return static_cast<boost::uuids::uuid const&>(*this);
-    }
-
-    UUID& operator= (std::string const & str);
-    std::string to_s () const;
-    
-    operator bool() const { return !is_nil(); }
+       UUID () { uuid_generate (id); }
+       UUID (UUID const & other) { uuid_copy (id, other.id); }
+       UUID (std::string const & str) { uuid_parse (str.c_str(), id); }
+       
+       UUID& operator= (std::string const & str);
+       std::string to_s () const;
+       
+       bool operator== (UUID const & other) const { return !uuid_compare (id, other.id); }
+       bool operator!= (UUID const & other) const { return uuid_compare (id, other.id); }
+       bool operator< (UUID const & other) const { return uuid_compare (id, other.id) < 0; }
+       
+       operator bool() const { return !uuid_is_null (id); }
+
+  private:
+       uuid_t id;
+
 };
 
 } // namespace PBD
diff --git a/libs/pbd/pbd/uuid_boost.h b/libs/pbd/pbd/uuid_boost.h
new file mode 100644 (file)
index 0000000..275b726
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+    Copyright (C) 2008 Paul Davis
+    Author: Sakari Bergen
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef __pbd_uuid_h__
+#define __pbd_uuid_h__
+
+#include <string>
+#include <boost/uuid/uuid.hpp>
+#include <boost/uuid/uuid_generators.hpp>
+
+namespace PBD {
+
+class UUID : public boost::uuids::uuid {
+
+  public:
+    UUID () 
+            : boost::uuids::uuid (boost::uuids::random_generator()()) {}
+    UUID (std::string const & str)
+            : boost::uuids::uuid (boost::uuids::string_generator()(str)) {}
+    
+    explicit UUID (boost::uuids::uuid const& u)
+            : boost::uuids::uuid(u)
+    {}
+
+    operator boost::uuids::uuid() {
+            return static_cast<boost::uuids::uuid&>(*this);
+    }
+    
+    operator boost::uuids::uuid() const {
+            return static_cast<boost::uuids::uuid const&>(*this);
+    }
+
+    UUID& operator= (std::string const & str);
+    std::string to_s () const;
+    
+    operator bool() const { return !is_nil(); }
+};
+
+} // namespace PBD
+
+#endif // __pbd_uuid_h__
index 1a988b9820324ed55e4f40fca1fd6cd742a91d98..0ffeca23cba4418973a737c04ae1b4791aa58b91 100644 (file)
@@ -25,13 +25,14 @@ using namespace PBD;
 UUID&
 UUID::operator= (std::string const & str)
 {
-        boost::uuids::string_generator gen;
-        *((boost::uuids::uuid*) this) = gen (str);
+       uuid_parse (str.c_str(), id);
        return *this;
 }
 
 std::string
 UUID::to_s () const
 {
-        return std::string ((const char*) data, size());
+       char buf[37];
+       uuid_unparse (id, buf);
+       return std::string (buf);
 }
diff --git a/libs/pbd/uuid_boost.cc b/libs/pbd/uuid_boost.cc
new file mode 100644 (file)
index 0000000..1a988b9
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    Copyright (C) 2008 Paul Davis
+    Author: Sakari Bergen
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "pbd/uuid.h"
+
+using namespace PBD;
+
+UUID&
+UUID::operator= (std::string const & str)
+{
+        boost::uuids::string_generator gen;
+        *((boost::uuids::uuid*) this) = gen (str);
+       return *this;
+}
+
+std::string
+UUID::to_s () const
+{
+        return std::string ((const char*) data, size());
+}