47#if defined(__MSYS__) || defined(_WIN32) || defined(_WIN64)
49 if (UuidCreateSequential(&uuid) != RPC_S_OK)
52 result._data[0] = (uuid.Data1 >> 24) & 0xFF;
53 result._data[1] = (uuid.Data1 >> 16) & 0xFF;
54 result._data[2] = (uuid.Data1 >> 8) & 0xFF;
55 result._data[3] = (uuid.Data1 >> 0) & 0xFF;
57 result._data[4] = (uuid.Data2 >> 8) & 0xFF;
58 result._data[5] = (uuid.Data2 >> 0) & 0xFF;
60 result._data[6] = (uuid.Data3 >> 8) & 0xFF;
61 result._data[7] = (uuid.Data3 >> 0) & 0xFF;
63 result._data[8] = uuid.Data4[0];
64 result._data[9] = uuid.Data4[1];
66 result._data[10] = uuid.Data4[2];
67 result._data[11] = uuid.Data4[3];
68 result._data[12] = uuid.Data4[4];
69 result._data[13] = uuid.Data4[5];
70 result._data[14] = uuid.Data4[6];
71 result._data[15] = uuid.Data4[7];
72#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__)
74 uuid_generate_time(uuid);
76 result._data[0] = uuid[0];
77 result._data[1] = uuid[1];
78 result._data[2] = uuid[2];
79 result._data[3] = uuid[3];
81 result._data[4] = uuid[4];
82 result._data[5] = uuid[5];
84 result._data[6] = uuid[6];
85 result._data[7] = uuid[7];
87 result._data[8] = uuid[8];
88 result._data[9] = uuid[9];
90 result._data[10] = uuid[10];
91 result._data[11] = uuid[11];
92 result._data[12] = uuid[12];
93 result._data[13] = uuid[13];
94 result._data[14] = uuid[14];
95 result._data[15] = uuid[15];
103#if defined(__MSYS__) || defined(_WIN32) || defined(_WIN64)
105 if (UuidCreate(&uuid) != RPC_S_OK)
108 result._data[0] = (uuid.Data1 >> 24) & 0xFF;
109 result._data[1] = (uuid.Data1 >> 16) & 0xFF;
110 result._data[2] = (uuid.Data1 >> 8) & 0xFF;
111 result._data[3] = (uuid.Data1 >> 0) & 0xFF;
113 result._data[4] = (uuid.Data2 >> 8) & 0xFF;
114 result._data[5] = (uuid.Data2 >> 0) & 0xFF;
116 result._data[6] = (uuid.Data3 >> 8) & 0xFF;
117 result._data[7] = (uuid.Data3 >> 0) & 0xFF;
119 result._data[8] = uuid.Data4[0];
120 result._data[9] = uuid.Data4[1];
122 result._data[10] = uuid.Data4[2];
123 result._data[11] = uuid.Data4[3];
124 result._data[12] = uuid.Data4[4];
125 result._data[13] = uuid.Data4[5];
126 result._data[14] = uuid.Data4[6];
127 result._data[15] = uuid.Data4[7];
128#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__)
130 uuid_generate_random(uuid);
132 result._data[0] = uuid[0];
133 result._data[1] = uuid[1];
134 result._data[2] = uuid[2];
135 result._data[3] = uuid[3];
137 result._data[4] = uuid[4];
138 result._data[5] = uuid[5];
140 result._data[6] = uuid[6];
141 result._data[7] = uuid[7];
143 result._data[8] = uuid[8];
144 result._data[9] = uuid[9];
146 result._data[10] = uuid[10];
147 result._data[11] = uuid[11];
148 result._data[12] = uuid[12];
149 result._data[13] = uuid[13];
150 result._data[14] = uuid[14];
151 result._data[15] = uuid[15];
175 std::random_device rd;
176 std::generate(result._data.begin(), result._data.end(), std::ref(rd));
179 auto now = std::chrono::system_clock::now();
180 auto duration = now.time_since_epoch();
181 auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
184 result._data[0] = (milliseconds >> 40) & 0xFF;
185 result._data[1] = (milliseconds >> 32) & 0xFF;
186 result._data[2] = (milliseconds >> 24) & 0xFF;
187 result._data[3] = (milliseconds >> 16) & 0xFF;
188 result._data[4] = (milliseconds >> 8) & 0xFF;
189 result._data[5] = (milliseconds >> 0) & 0xFF;
192 result._data[6] = (result._data[6] & 0x0F) | 0x70;
193 result._data[8] = (result._data[8] & 0x3F) | 0x80;