diff options
author | bunnei <bunneidev@gmail.com> | 2021-08-05 22:29:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-05 22:29:11 +0200 |
commit | e1a92db519db43b365802e0065a9cb8927c241fd (patch) | |
tree | 2efb546579680414634b8eeafcec82ac20981f9e /src/common/uuid.h | |
parent | Merge pull request #6819 from Morph1984/i-am-dumb (diff) | |
parent | common: uuid: Add hex string to UUID constructor (diff) | |
download | yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar.gz yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar.bz2 yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar.lz yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar.xz yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.tar.zst yuzu-e1a92db519db43b365802e0065a9cb8927c241fd.zip |
Diffstat (limited to 'src/common/uuid.h')
-rw-r--r-- | src/common/uuid.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/common/uuid.h b/src/common/uuid.h index 0ffa37e7c..aeb36939a 100644 --- a/src/common/uuid.h +++ b/src/common/uuid.h @@ -5,6 +5,7 @@ #pragma once #include <string> +#include <string_view> #include "common/common_types.h" @@ -12,12 +13,30 @@ namespace Common { constexpr u128 INVALID_UUID{{0, 0}}; +/** + * Converts a hex string to a 128-bit unsigned integer. + * + * The hex string can be formatted in lowercase or uppercase, with or without the "0x" prefix. + * + * This function will assert and return INVALID_UUID under the following conditions: + * - If the hex string is more than 32 characters long + * - If the hex string contains non-hexadecimal characters + * + * @param hex_string Hexadecimal string + * + * @returns A 128-bit unsigned integer if successfully converted, INVALID_UUID otherwise. + */ +[[nodiscard]] u128 HexStringToU128(std::string_view hex_string); + struct UUID { // UUIDs which are 0 are considered invalid! u128 uuid; UUID() = default; constexpr explicit UUID(const u128& id) : uuid{id} {} constexpr explicit UUID(const u64 lo, const u64 hi) : uuid{{lo, hi}} {} + explicit UUID(std::string_view hex_string) { + uuid = HexStringToU128(hex_string); + } [[nodiscard]] constexpr explicit operator bool() const { return uuid != INVALID_UUID; |