summaryrefslogtreecommitdiff
path: root/project2/uuid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'project2/uuid.cpp')
-rw-r--r--project2/uuid.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/project2/uuid.cpp b/project2/uuid.cpp
new file mode 100644
index 0000000..03e851e
--- /dev/null
+++ b/project2/uuid.cpp
@@ -0,0 +1,99 @@
+#include "uuid.h"
+
+#ifdef USINGBOOSTUUID
+#include <boost/lexical_cast.hpp>
+#include <boost/uuid/uuid_io.hpp>
+#include <boost/uuid/uuid_generators.hpp>
+
+UUID::UUID()
+{
+ boost_uuid = boost::uuids::nil_generator()();
+}
+
+UUID::UUID(const std::string & str)
+{
+ boost_uuid = boost::lexical_cast<boost::uuids::uuid>(str);
+}
+
+UUID
+UUID::generate_random()
+{
+ UUID u;
+ u.boost_uuid = boost::uuids::random_generator()();
+ return u;
+}
+
+bool
+UUID::is_nil() const
+{
+ return boost_uuid.is_nil();
+}
+
+std::string
+UUID::str() const
+{
+ return boost::lexical_cast<std::string>(boost_uuid);
+}
+
+void
+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;
+}
+
+#endif
+
+#ifdef USINGOSSPUUID
+
+UUID::UUID()
+{
+}
+
+UUID::UUID(const std::string & str)
+{
+ ossp_uuid.import(str.c_str());
+}
+
+UUID
+UUID::generate_random()
+{
+ UUID u;
+ u.ossp_uuid.make(UUID_MAKE_V5);
+ return u;
+}
+
+bool
+UUID::is_nil() const
+{
+ return ossp_uuid.isnil();
+}
+
+std::string
+UUID::str() const
+{
+ char * s = ossp_uuid.string();
+ std::string r(s);
+ free(s);
+ return r;
+}
+
+void
+UUID::operator=(const std::string & str)
+{
+ ossp_uuid.import(str.c_str());
+}
+
+bool
+UUID::operator!=(const UUID & other) const
+{
+ return ossp_uuid != other.ossp_uuid;
+}
+
+#endif
+