common/uuid: Add validity checking functions to interface

Given we have a function to invalidate, we should also have ones to
query the validity. Also makes the code more straightforward to read.
This commit is contained in:
Lioncash 2021-09-22 17:52:37 -04:00
parent 7b22d61fb1
commit 40314cc586
4 changed files with 14 additions and 7 deletions

View File

@ -58,6 +58,13 @@ struct UUID {
uuid = INVALID_UUID; uuid = INVALID_UUID;
} }
[[nodiscard]] constexpr bool IsInvalid() const {
return uuid == INVALID_UUID;
}
[[nodiscard]] constexpr bool IsValid() const {
return !IsInvalid();
}
// TODO(ogniK): Properly generate a Nintendo ID // TODO(ogniK): Properly generate a Nintendo ID
[[nodiscard]] constexpr u64 GetNintendoID() const { [[nodiscard]] constexpr u64 GetNintendoID() const {
return uuid[0]; return uuid[0];

View File

@ -929,8 +929,7 @@ void Module::Interface::TrySelectUserWithoutInteraction(Kernel::HLERequestContex
} }
const auto user_list = profile_manager->GetAllUsers(); const auto user_list = profile_manager->GetAllUsers();
if (std::all_of(user_list.begin(), user_list.end(), if (std::ranges::all_of(user_list, [](const auto& user) { return user.IsInvalid(); })) {
[](const auto& user) { return user.uuid == Common::INVALID_UUID; })) {
rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code
rb.PushRaw<u128>(Common::INVALID_UUID); rb.PushRaw<u128>(Common::INVALID_UUID);
return; return;

View File

@ -208,9 +208,10 @@ bool ProfileManager::UserExists(UUID uuid) const {
} }
bool ProfileManager::UserExistsIndex(std::size_t index) const { bool ProfileManager::UserExistsIndex(std::size_t index) const {
if (index >= MAX_USERS) if (index >= MAX_USERS) {
return false; return false;
return profiles[index].user_uuid.uuid != Common::INVALID_UUID; }
return profiles[index].user_uuid.IsValid();
} }
/// Opens a specific user /// Opens a specific user
@ -304,7 +305,7 @@ bool ProfileManager::RemoveUser(UUID uuid) {
bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) { bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) {
const auto index = GetUserIndex(uuid); const auto index = GetUserIndex(uuid);
if (!index || profile_new.user_uuid == UUID(Common::INVALID_UUID)) { if (!index || profile_new.user_uuid.IsInvalid()) {
return false; return false;
} }
@ -346,7 +347,7 @@ void ProfileManager::ParseUserSaveFile() {
} }
for (const auto& user : data.users) { for (const auto& user : data.users) {
if (user.uuid == UUID(Common::INVALID_UUID)) { if (user.uuid.IsInvalid()) {
continue; continue;
} }

View File

@ -60,7 +60,7 @@ void ProfileSelect::Execute() {
void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) { void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) {
UserSelectionOutput output{}; UserSelectionOutput output{};
if (uuid.has_value() && uuid->uuid != Common::INVALID_UUID) { if (uuid.has_value() && uuid->IsValid()) {
output.result = 0; output.result = 0;
output.uuid_selected = uuid->uuid; output.uuid_selected = uuid->uuid;
} else { } else {