summaryrefslogtreecommitdiffstats
path: root/src/common/uuid.h
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-12-18 15:07:25 +0100
committerZach Hilman <zachhilman@gmail.com>2019-04-25 14:07:57 +0200
commitca5638a1426ce560f3896b3ff0d3efd02b654585 (patch)
tree45ad83b82fd843aa08371365410e7b1780b58c5f /src/common/uuid.h
parentMerge pull request #2416 from lioncash/wait (diff)
downloadyuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar.gz
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar.bz2
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar.lz
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar.xz
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.tar.zst
yuzu-ca5638a1426ce560f3896b3ff0d3efd02b654585.zip
Diffstat (limited to 'src/common/uuid.h')
-rw-r--r--src/common/uuid.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/common/uuid.h b/src/common/uuid.h
new file mode 100644
index 000000000..4a5e5fa7c
--- /dev/null
+++ b/src/common/uuid.h
@@ -0,0 +1,45 @@
+// Copyright 2018 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#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}} {}
+
+ explicit operator bool() const {
+ return uuid != INVALID_UUID;
+ }
+
+ bool operator==(const UUID& rhs) const {
+ return uuid == rhs.uuid;
+ }
+
+ 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
+ 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