diff options
Diffstat (limited to 'project2/uuid.cpp')
-rw-r--r-- | project2/uuid.cpp | 80 |
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; +} |