14 using bytes = std::array<std::uint8_t, 16>;
27 bool isNil() const noexcept {
return hi == 0 && lo == 0; }
30 return a.hi ==
b.hi &&
a.lo ==
b.lo;
38 return a.hi <
b.hi || (
a.hi ==
b.hi &&
a.lo <
b.lo);
42 std::uint64_t
getHigh() const noexcept {
return hi; }
44 std::uint64_t
getLow() const noexcept {
return lo; }
50 void fromBytes(
const bytes&
b)
noexcept;
57template<>
struct hash<
gUUID> {
58 size_t operator()(
const gUUID& u)
const noexcept {
60 std::uint64_t x = u.
getHigh() ^ (u.
getLow() * 0x9E3779B97F4A7C15ull);
61 x ^= x >> 30; x *= 0xBF58476D1CE4E5B9ull;
62 x ^= x >> 27; x *= 0x94D049BB133111EBull;
bytes toBytes() const noexcept
bool isNil() const noexcept
Definition gUUID.h:27
friend bool operator<(const gUUID &a, const gUUID &b) noexcept
Definition gUUID.h:37
std::array< std::uint8_t, 16 > bytes
Definition gUUID.h:14
friend bool operator!=(const gUUID &a, const gUUID &b) noexcept
Definition gUUID.h:33
std::uint64_t getLow() const noexcept
Definition gUUID.h:44
std::uint64_t getHigh() const noexcept
Definition gUUID.h:42
std::string toString() const
static gUUID generateV4()
static gUUID fromString(std::string s, bool *ok=nullptr) noexcept
friend bool operator==(const gUUID &a, const gUUID &b) noexcept
Definition gUUID.h:29
float a
Definition gColor.h:22
float b
Definition gColor.h:22