10 #ifndef smtk_common_UUID_h
11 #define smtk_common_UUID_h
13 #include "smtk/CoreExports.h"
14 #include "smtk/SystemConfig.h"
16 #include "smtk/common/CompilerInformation.h"
18 SMTK_THIRDPARTY_PRE_INCLUDE
19 #include <boost/uuid/uuid.hpp>
20 SMTK_THIRDPARTY_POST_INCLUDE
41 static constexpr
const char*
const type_name =
"uuid";
42 typedef ::boost::uint8_t value_type;
43 typedef ::boost::uint8_t* iterator;
44 typedef ::boost::uint8_t
const* const_iterator;
46 typedef std::size_t size_type;
50 UUID(const_iterator begin, const_iterator end);
51 UUID(
const std::string& txt);
52 UUID(
const boost::uuids::uuid& data);
61 static size_type size() {
return SIZE; }
65 const_iterator begin()
const;
67 const_iterator end()
const;
69 std::string toString()
const;
71 bool operator!=(
UUID const& other)
const;
72 bool operator==(
UUID const& other)
const;
73 bool operator<(
UUID const& other)
const;
77 operator bool()
const;
79 std::size_t hash()
const;
83 boost::uuids::uuid m_data;
86 typedef std::set<UUID>
UUIDs;
88 typedef std::vector<UUIDArray> UUIDArrays;
90 SMTKCORE_EXPORT std::ostream& operator<<(std::ostream& stream,
const UUID& uid);
91 SMTKCORE_EXPORT std::istream& operator>>(std::istream& stream,
UUID& uid);
101 struct hash<
smtk::common::UUID>
111 memmove(&hash, uid.
begin() + smtk::common::UUID::size() -
sizeof(hash),
sizeof(hash));
118 #endif // smtk_common_UUID_h