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