| 162 | } |
| 163 | |
| 164 | uuid_t uuid_t::sequential() |
| 165 | { |
| 166 | uuid_t result; |
| 167 | #if defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) |
| 168 | ::uuid_t uuid; |
| 169 | uuid_generate_time(uuid); |
| 170 | result._data[0] = uuid[0]; |
| 171 | result._data[1] = uuid[1]; |
| 172 | result._data[2] = uuid[2]; |
| 173 | result._data[3] = uuid[3]; |
| 174 | result._data[4] = uuid[4]; |
| 175 | result._data[5] = uuid[5]; |
| 176 | result._data[6] = uuid[6]; |
| 177 | result._data[7] = uuid[7]; |
| 178 | result._data[8] = uuid[8]; |
| 179 | result._data[9] = uuid[9]; |
| 180 | result._data[10] = uuid[10]; |
| 181 | result._data[11] = uuid[11]; |
| 182 | result._data[12] = uuid[12]; |
| 183 | result._data[13] = uuid[13]; |
| 184 | result._data[14] = uuid[14]; |
| 185 | result._data[15] = uuid[15]; |
| 186 | #elif defined(_WIN32) || defined(_WIN64) |
| 187 | ::UUID uuid; |
| 188 | if (UuidCreateSequential(&uuid) != RPC_S_OK) |
| 189 | throw std::runtime_error("Cannot generate sequential UUID!"); |
| 190 | |
| 191 | result._data[0] = (uuid.Data1 >> 24) & 0xFF; |
| 192 | result._data[1] = (uuid.Data1 >> 16) & 0xFF; |
| 193 | result._data[2] = (uuid.Data1 >> 8) & 0xFF; |
| 194 | result._data[3] = (uuid.Data1 >> 0) & 0xFF; |
| 195 | result._data[4] = (uuid.Data2 >> 8) & 0xFF; |
| 196 | result._data[5] = (uuid.Data2 >> 0) & 0xFF; |
| 197 | |
| 198 | result._data[6] = (uuid.Data3 >> 8) & 0xFF; |
| 199 | result._data[7] = (uuid.Data3 >> 0) & 0xFF; |
| 200 | |
| 201 | result._data[8] = uuid.Data4[0]; |
| 202 | result._data[9] = uuid.Data4[1]; |
| 203 | |
| 204 | result._data[10] = uuid.Data4[2]; |
| 205 | result._data[11] = uuid.Data4[3]; |
| 206 | result._data[12] = uuid.Data4[4]; |
| 207 | result._data[13] = uuid.Data4[5]; |
| 208 | result._data[14] = uuid.Data4[6]; |
| 209 | result._data[15] = uuid.Data4[7]; |
| 210 | #endif |
| 211 | return result; |
| 212 | } |
| 213 | |
| 214 | uuid_t uuid_t::random() |
| 215 | { |
nothing calls this directly
no outgoing calls
no test coverage detected