diff options
author | bunnei <bunneidev@gmail.com> | 2019-05-30 19:26:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-30 19:26:40 +0200 |
commit | ed74a3cb8b69841bd34344b1387320c0d8912979 (patch) | |
tree | f914218f6a5965ad6c47bd9acab096ab22356d5d /src/common/uuid.h | |
parent | Merge pull request #2431 from DarkLordZach/game-list-cache (diff) | |
parent | mii_manager: Fix incorrect loop condition in mii UUID generation code (diff) | |
download | yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar.gz yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar.bz2 yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar.lz yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar.xz yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.tar.zst yuzu-ed74a3cb8b69841bd34344b1387320c0d8912979.zip |
Diffstat (limited to 'src/common/uuid.h')
-rw-r--r-- | src/common/uuid.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/common/uuid.h b/src/common/uuid.h new file mode 100644 index 000000000..f6ad064fb --- /dev/null +++ b/src/common/uuid.h @@ -0,0 +1,48 @@ +// Copyright 2018 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <string> + +#include "common/common_types.h" + +namespace Common { + +constexpr u128 INVALID_UUID{{0, 0}}; + +struct UUID { + // UUIDs which are 0 are considered invalid! + u128 uuid = INVALID_UUID; + constexpr UUID() = default; + constexpr explicit UUID(const u128& id) : uuid{id} {} + constexpr explicit UUID(const u64 lo, const u64 hi) : uuid{{lo, hi}} {} + + constexpr explicit operator bool() const { + return uuid[0] != INVALID_UUID[0] && uuid[1] != INVALID_UUID[1]; + } + + constexpr bool operator==(const UUID& rhs) const { + // TODO(DarkLordZach): Replace with uuid == rhs.uuid with C++20 + return uuid[0] == rhs.uuid[0] && uuid[1] == rhs.uuid[1]; + } + + constexpr bool operator!=(const UUID& rhs) const { + return !operator==(rhs); + } + + // TODO(ogniK): Properly generate uuids based on RFC-4122 + static UUID Generate(); + + // Set the UUID to {0,0} to be considered an invalid user + constexpr void Invalidate() { + uuid = INVALID_UUID; + } + + std::string Format() const; + std::string FormatSwitch() const; +}; +static_assert(sizeof(UUID) == 16, "UUID is an invalid size!"); + +} // namespace Common |