20 std::array<std::uint8_t, 16>
b8;
21 std::array<std::uint16_t, 8>
b16;
22 std::array<std::uint32_t, 4>
b32;
23 std::array<std::uint64_t, 2>
b64;
32 std::uniform_int_distribution<std::uint8_t> dist(0, std::numeric_limits<std::uint8_t>::max());
35 for (
auto &el : buf.
b8) {
39 buf.
b8[7] = std::to_integer<std::uint8_t>(std::byte {buf.
b8[7]} & std::byte {0b00101111});
40 buf.
b8[9] = std::to_integer<std::uint8_t>(std::byte {buf.
b8[9]} & std::byte {0b10011111});
53 std::default_random_engine engine {r()};
63 [[nodiscard]] std::string
string()
const {
66 result.reserve(
sizeof(
uuid_t) * 2 + 4);
69 auto hex_view = hex.to_string_view();
71 std::array<std::string_view, 4> slices = {
72 hex_view.substr(0, 8),
73 hex_view.substr(8, 4),
74 hex_view.substr(12, 4),
75 hex_view.substr(16, 4)
77 auto last_slice = hex_view.substr(20, 12);
79 for (
auto &slice : slices) {
80 std::ranges::copy(slice, std::back_inserter(result));
82 result.push_back(
'-');
85 std::ranges::copy(last_slice, std::back_inserter(result));
UUID utilities.
Definition uuid.h:15
UUID value exposed through multiple integer views.
Definition uuid.h:19
std::string string() const
Format the UUID using canonical text form.
Definition uuid.h:63
constexpr bool operator<(const uuid_t &other) const
Order UUID values by their 64-bit word representation.
Definition uuid.h:106
std::array< std::uint32_t, 4 > b32
UUID viewed as 32-bit words.
Definition uuid.h:22
std::array< std::uint8_t, 16 > b8
UUID bytes.
Definition uuid.h:20
static uuid_t generate()
Generate a UUID value.
Definition uuid.h:50
constexpr bool operator>(const uuid_t &other) const
Order UUID values by their 64-bit word representation.
Definition uuid.h:116
std::array< std::uint64_t, 2 > b64
UUID viewed as 64-bit words.
Definition uuid.h:23
std::array< std::uint16_t, 8 > b16
UUID viewed as 16-bit words.
Definition uuid.h:21
static uuid_t generate(std::default_random_engine &engine)
Generate UUID bytes and apply the established version and variant masks.
Definition uuid.h:31
constexpr bool operator==(const uuid_t &other) const
Compare two UUID values for equality.
Definition uuid.h:96
Hex< T > hex(const T &elem, bool rev=false)
Serialize an element as hexadecimal text.
Definition utility.h:476