aboutsummaryrefslogtreecommitdiff
path: root/src/common/uuid.cpp
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-12-18 09:07:25 -0500
committerZach Hilman <zachhilman@gmail.com>2019-04-25 08:07:57 -0400
commitc02cb054b755977324530ed87e1c2b11a0ad31f2 (patch)
tree45ad83b82fd843aa08371365410e7b1780b58c5f /src/common/uuid.cpp
parent5d81402331b3e947a90c6293f22d10f756e5a22e (diff)
common: Extract UUID to its own class
Since the Mii database uses UUIDs very similar to the Accounts database, it makes no sense to not share code between them.
Diffstat (limited to 'src/common/uuid.cpp')
-rw-r--r--src/common/uuid.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/common/uuid.cpp b/src/common/uuid.cpp
new file mode 100644
index 0000000000..8e63b58b85
--- /dev/null
+++ b/src/common/uuid.cpp
@@ -0,0 +1,33 @@
+// Copyright 2018 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <random>
+
+#include <fmt/format.h>
+
+#include "common/uuid.h"
+
+namespace Common {
+
+UUID UUID::Generate() {
+ std::random_device device;
+ std::mt19937 gen(device());
+ std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
+ return UUID{distribution(gen), distribution(gen)};
+}
+
+std::string UUID::Format() const {
+ return fmt::format("0x{:016X}{:016X}", uuid[1], uuid[0]);
+}
+
+std::string UUID::FormatSwitch() const {
+ std::array<u8, 16> s{};
+ std::memcpy(s.data(), uuid.data(), sizeof(u128));
+ return fmt::format("{:02x}{:02x}{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{"
+ ":02x}{:02x}{:02x}{:02x}{:02x}",
+ s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9], s[10], s[11],
+ s[12], s[13], s[14], s[15]);
+}
+
+} // namespace Common