12 [[nodiscard]]
constexpr UUID(uint64 a = 0, uint64 b = 0) noexcept : a(a), b(b) {}
14 [[nodiscard]]
inline explicit UUID(std::string
const& uuidStr) : UUID(fromString(uuidStr)) {}
16 [[nodiscard]]
inline explicit UUID(std::string_view uuidStr) : UUID(fromString(std::string{uuidStr})) {}
20 [[nodiscard]]
inline static mce::UUID fromStringHash(std::string_view sv) {
21 return {ll::hash_utils::doHash(sv), ll::hash_utils::doHash2(sv)};
24 [[nodiscard]]
inline explicit operator bool()
const {
return a != 0 && b != 0; }
26 [[nodiscard]]
inline explicit operator std::string()
const {
return asString(); }
28 [[nodiscard]]
constexpr bool operator==(UUID
const& other)
const {
return (a == other.a) && (b == other.b); }
30 [[nodiscard]]
constexpr std::strong_ordering operator<=>(UUID
const& other)
const {
37 LLNDAPI
static bool canParse(std::string_view in);
39 LLNDAPI
static ll::Expected<mce::UUID> tryFromString(::std::string_view str);
44 MCFOLD ::std::string asString()
const;
50 MCAPI static ::mce::UUID fromString(::std::string_view in);
56 MCAPI static ::mce::UUID& EMPTY();
58 MCAPI
static uint64& STRING_LENGTH();
75 static std::string to_string(
mce::UUID const& t) {
return t.asString(); }
76 static ll::Expected<mce::UUID> from_string(std::string_view s) {
return mce::UUID::tryFromString(s); }
79 static ll::Expected<> serialize(
mce::UUID const& t, J& j) {
84 static ll::Expected<mce::UUID> deserialize(J
const& j) {
85 if (!j.is_string())
return makeDeserStringTypeError();
86 return from_string(std::string_view{j});