FOSSredder 0.5.0
Loading...
Searching...
No Matches
Uuid.h
Go to the documentation of this file.
1#pragma once
2
3#include <iomanip>
4#include <random>
5#include <sstream>
6#include <string>
7
8namespace persistence {
9inline std::string generateUuid() {
10 std::random_device rd;
11 std::mt19937_64 gen(rd());
12 std::uniform_int_distribution<uint64_t> dis;
13 uint64_t a = dis(gen);
14 uint64_t b = dis(gen);
15 std::ostringstream ss;
16 ss << std::hex << std::setfill('0') << std::setw(8)
17 << static_cast<uint32_t>(a >> 32) << std::setw(4)
18 << static_cast<uint16_t>((a >> 16) & 0xFFFF) << std::setw(4)
19 << static_cast<uint16_t>(a & 0xFFFF) << std::setw(4)
20 << static_cast<uint16_t>(b >> 48) << std::setw(12)
21 << (b & 0xFFFFFFFFFFFFULL);
22 std::string s = ss.str();
23 // Format into 8-4-4-4-12
24 if (s.size() >= 32) {
25 return s.substr(0, 8) + "-" + s.substr(8, 4) + "-" + s.substr(12, 4) + "-" +
26 s.substr(16, 4) + "-" + s.substr(20, 12);
27 }
28 return s;
29}
30} // namespace persistence
std::string generateUuid()
Definition Uuid.h:9