summaryrefslogtreecommitdiff
path: root/project2/uuid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'project2/uuid.cpp')
-rw-r--r--project2/uuid.cpp80
1 files changed, 55 insertions, 25 deletions
diff --git a/project2/uuid.cpp b/project2/uuid.cpp
index 6b8bd0d..ddc0e50 100644
--- a/project2/uuid.cpp
+++ b/project2/uuid.cpp
@@ -1,99 +1,129 @@
-#include "uuid.h"
-
-#ifdef USINGBOOSTUUID
+#ifdef BOOST_UUID
+# include <boost/version.hpp>
+# if BOOST_VERSION < 104200
+# error "Boost UUIDs required v1.42 or above"
+# else
+# include <boost/uuid/uuid.hpp>
+# endif
#include <boost/lexical_cast.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/uuid/uuid_generators.hpp>
+#define uuid_impl boost::uuids::uuid
+#include "uuid.h"
UUID::UUID()
{
- boost_uuid = boost::uuids::nil_generator()();
+ _uuid = new boost::uuids::uuid(boost::uuids::nil_generator()());
+}
+
+UUID::UUID(const UUID & other)
+{
+ _uuid = new boost::uuids::uuid(*other._uuid);
}
UUID::UUID(const std::string & str)
{
- boost_uuid = boost::lexical_cast<boost::uuids::uuid>(str);
+ _uuid = new boost::uuids::uuid(boost::uuids::string_generator()(str));
}
UUID
UUID::generate_random()
{
UUID u;
- u.boost_uuid = boost::uuids::random_generator()();
+ u._uuid = new boost::uuids::uuid(boost::uuids::random_generator()());
return u;
}
bool
UUID::is_nil() const
{
- return boost_uuid.is_nil();
+ return _uuid->is_nil();
}
std::string
UUID::str() const
{
- return boost::lexical_cast<std::string>(boost_uuid);
+ return boost::lexical_cast<std::string>(*_uuid);
}
-void
+UUID &
UUID::operator=(const std::string & str)
{
- boost_uuid = boost::lexical_cast<boost::uuids::uuid>(str);
-}
-
-bool
-UUID::operator!=(const UUID & other) const
-{
- return boost_uuid != other.boost_uuid;
+ *_uuid = boost::uuids::string_generator()(str);
+ return *this;
}
#endif
-#ifdef USINGOSSPUUID
+#ifdef OSSP_UUID
+# include <ossp/uuid++.hh>
+#define uuid_impl uuid
+#include "uuid.h"
UUID::UUID()
{
+ _uuid = new uuid();
+}
+
+UUID::UUID(const UUID & other)
+{
+ _uuid = new uuid(*other._uuid);
}
UUID::UUID(const std::string & str)
{
- ossp_uuid.import(str.c_str());
+ _uuid = new uuid();
+ _uuid->import(str.c_str());
}
UUID
UUID::generate_random()
{
UUID u;
- u.ossp_uuid.make(UUID_MAKE_V4);
+ u._uuid->make(UUID_MAKE_V4);
return u;
}
bool
UUID::is_nil() const
{
- return ossp_uuid.isnil();
+ return _uuid->isnil();
}
std::string
UUID::str() const
{
- char * s = ossp_uuid.string();
+ char * s = _uuid->string();
std::string r(s);
free(s);
return r;
}
-void
+UUID &
UUID::operator=(const std::string & str)
{
- ossp_uuid.import(str.c_str());
+ _uuid->import(str.c_str());
+ return *this;
+}
+
+#endif
+
+// Shared implementation
+UUID::~UUID()
+{
+ delete _uuid;
}
bool
UUID::operator!=(const UUID & other) const
{
- return ossp_uuid != other.ossp_uuid;
+ return *_uuid != *other._uuid;
}
-#endif
+UUID &
+UUID::operator=(const UUID & other)
+{
+ *_uuid = *other._uuid;
+ return *this;
+}