diff options
| author | bunnei <bunneidev@gmail.com> | 2018-10-24 18:11:03 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-24 18:11:03 -0400 | 
| commit | 9aa5c1894e7e09dccb358824b0d9a3a40ce714be (patch) | |
| tree | d977bbc52731b3b8a6a35cb9560086c2d15c95e0 | |
| parent | 3a6e76e9b56db63f3f444c13e97d62124b94f31d (diff) | |
| parent | 4a31f99a0214ac7ee04d61c8934823e284db5e63 (diff) | |
Merge pull request #1570 from lioncash/optional
profile_manager: Use std::optional instead of boost::optional
| -rw-r--r-- | src/core/hle/service/acc/profile_manager.cpp | 71 | ||||
| -rw-r--r-- | src/core/hle/service/acc/profile_manager.h | 18 | ||||
| -rw-r--r-- | src/core/hle/service/am/am.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.cpp | 8 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 2 | 
5 files changed, 53 insertions, 48 deletions
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp index 06f7d1b15..3cac1b4ff 100644 --- a/src/core/hle/service/acc/profile_manager.cpp +++ b/src/core/hle/service/acc/profile_manager.cpp @@ -3,7 +3,7 @@  // Refer to the license.txt file included.  #include <random> -#include <boost/optional.hpp> +  #include "common/file_util.h"  #include "core/hle/service/acc/profile_manager.h"  #include "core/settings.h" @@ -58,11 +58,11 @@ ProfileManager::~ProfileManager() {  /// After a users creation it needs to be "registered" to the system. AddToProfiles handles the  /// internal management of the users profiles -boost::optional<std::size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { +std::optional<std::size_t> ProfileManager::AddToProfiles(const ProfileInfo& profile) {      if (user_count >= MAX_USERS) { -        return boost::none; +        return {};      } -    profiles[user_count] = user; +    profiles[user_count] = profile;      return user_count++;  } @@ -81,7 +81,7 @@ bool ProfileManager::RemoveProfileAtIndex(std::size_t index) {  /// Helper function to register a user to the system  ResultCode ProfileManager::AddUser(const ProfileInfo& user) { -    if (AddToProfiles(user) == boost::none) { +    if (!AddToProfiles(user)) {          return ERROR_TOO_MANY_USERS;      }      return RESULT_SUCCESS; @@ -126,37 +126,40 @@ ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::string& username)      return CreateNewUser(uuid, username_output);  } -boost::optional<UUID> ProfileManager::GetUser(std::size_t index) const { -    if (index >= MAX_USERS) -        return boost::none; +std::optional<UUID> ProfileManager::GetUser(std::size_t index) const { +    if (index >= MAX_USERS) { +        return {}; +    } +      return profiles[index].user_uuid;  }  /// Returns a users profile index based on their user id. -boost::optional<std::size_t> ProfileManager::GetUserIndex(const UUID& uuid) const { +std::optional<std::size_t> ProfileManager::GetUserIndex(const UUID& uuid) const {      if (!uuid) { -        return boost::none; +        return {};      } -    auto iter = std::find_if(profiles.begin(), profiles.end(), -                             [&uuid](const ProfileInfo& p) { return p.user_uuid == uuid; }); + +    const auto iter = std::find_if(profiles.begin(), profiles.end(), +                                   [&uuid](const ProfileInfo& p) { return p.user_uuid == uuid; });      if (iter == profiles.end()) { -        return boost::none; +        return {};      } +      return static_cast<std::size_t>(std::distance(profiles.begin(), iter));  }  /// Returns a users profile index based on their profile -boost::optional<std::size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const { +std::optional<std::size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const {      return GetUserIndex(user.user_uuid);  }  /// Returns the data structure used by the switch when GetProfileBase is called on acc:* -bool ProfileManager::GetProfileBase(boost::optional<std::size_t> index, -                                    ProfileBase& profile) const { -    if (index == boost::none || index >= MAX_USERS) { +bool ProfileManager::GetProfileBase(std::optional<std::size_t> index, ProfileBase& profile) const { +    if (!index || index >= MAX_USERS) {          return false;      } -    const auto& prof_info = profiles[index.get()]; +    const auto& prof_info = profiles[*index];      profile.user_uuid = prof_info.user_uuid;      profile.username = prof_info.username;      profile.timestamp = prof_info.creation_time; @@ -165,7 +168,7 @@ bool ProfileManager::GetProfileBase(boost::optional<std::size_t> index,  /// Returns the data structure used by the switch when GetProfileBase is called on acc:*  bool ProfileManager::GetProfileBase(UUID uuid, ProfileBase& profile) const { -    auto idx = GetUserIndex(uuid); +    const auto idx = GetUserIndex(uuid);      return GetProfileBase(idx, profile);  } @@ -192,7 +195,7 @@ std::size_t ProfileManager::GetOpenUserCount() const {  /// Checks if a user id exists in our profile manager  bool ProfileManager::UserExists(UUID uuid) const { -    return (GetUserIndex(uuid) != boost::none); +    return GetUserIndex(uuid) != std::nullopt;  }  bool ProfileManager::UserExistsIndex(std::size_t index) const { @@ -203,21 +206,23 @@ bool ProfileManager::UserExistsIndex(std::size_t index) const {  /// Opens a specific user  void ProfileManager::OpenUser(UUID uuid) { -    auto idx = GetUserIndex(uuid); -    if (idx == boost::none) { +    const auto idx = GetUserIndex(uuid); +    if (!idx) {          return;      } -    profiles[idx.get()].is_open = true; + +    profiles[*idx].is_open = true;      last_opened_user = uuid;  }  /// Closes a specific user  void ProfileManager::CloseUser(UUID uuid) { -    auto idx = GetUserIndex(uuid); -    if (idx == boost::none) { +    const auto idx = GetUserIndex(uuid); +    if (!idx) {          return;      } -    profiles[idx.get()].is_open = false; + +    profiles[*idx].is_open = false;  }  /// Gets all valid user ids on the system @@ -247,10 +252,10 @@ UUID ProfileManager::GetLastOpenedUser() const {  }  /// Return the users profile base and the unknown arbitary data. -bool ProfileManager::GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile, +bool ProfileManager::GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile,                                             ProfileData& data) const {      if (GetProfileBase(index, profile)) { -        data = profiles[index.get()].data; +        data = profiles[*index].data;          return true;      }      return false; @@ -259,7 +264,7 @@ bool ProfileManager::GetProfileBaseAndData(boost::optional<std::size_t> index, P  /// Return the users profile base and the unknown arbitary data.  bool ProfileManager::GetProfileBaseAndData(UUID uuid, ProfileBase& profile,                                             ProfileData& data) const { -    auto idx = GetUserIndex(uuid); +    const auto idx = GetUserIndex(uuid);      return GetProfileBaseAndData(idx, profile, data);  } @@ -277,8 +282,8 @@ bool ProfileManager::CanSystemRegisterUser() const {  }  bool ProfileManager::RemoveUser(UUID uuid) { -    auto index = GetUserIndex(uuid); -    if (index == boost::none) { +    const auto index = GetUserIndex(uuid); +    if (!index) {          return false;      } @@ -289,8 +294,8 @@ bool ProfileManager::RemoveUser(UUID uuid) {  }  bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) { -    auto index = GetUserIndex(uuid); -    if (profile_new.user_uuid == UUID(INVALID_UUID) || index == boost::none) { +    const auto index = GetUserIndex(uuid); +    if (!index || profile_new.user_uuid == UUID(INVALID_UUID)) {          return false;      } diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h index 235208d56..1cd2e51b2 100644 --- a/src/core/hle/service/acc/profile_manager.h +++ b/src/core/hle/service/acc/profile_manager.h @@ -5,8 +5,8 @@  #pragma once  #include <array> +#include <optional> -#include "boost/optional.hpp"  #include "common/common_types.h"  #include "common/swap.h"  #include "core/hle/result.h" @@ -96,13 +96,13 @@ public:      ResultCode AddUser(const ProfileInfo& user);      ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username);      ResultCode CreateNewUser(UUID uuid, const std::string& username); -    boost::optional<UUID> GetUser(std::size_t index) const; -    boost::optional<std::size_t> GetUserIndex(const UUID& uuid) const; -    boost::optional<std::size_t> GetUserIndex(const ProfileInfo& user) const; -    bool GetProfileBase(boost::optional<std::size_t> index, ProfileBase& profile) const; +    std::optional<UUID> GetUser(std::size_t index) const; +    std::optional<std::size_t> GetUserIndex(const UUID& uuid) const; +    std::optional<std::size_t> GetUserIndex(const ProfileInfo& user) const; +    bool GetProfileBase(std::optional<std::size_t> index, ProfileBase& profile) const;      bool GetProfileBase(UUID uuid, ProfileBase& profile) const;      bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; -    bool GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile, +    bool GetProfileBaseAndData(std::optional<std::size_t> index, ProfileBase& profile,                                 ProfileData& data) const;      bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const;      bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, @@ -120,16 +120,16 @@ public:      bool CanSystemRegisterUser() const;      bool RemoveUser(UUID uuid); -    bool SetProfileBase(UUID uuid, const ProfileBase& profile); +    bool SetProfileBase(UUID uuid, const ProfileBase& profile_new);  private:      void ParseUserSaveFile();      void WriteUserSaveFile(); +    std::optional<std::size_t> AddToProfiles(const ProfileInfo& profile); +    bool RemoveProfileAtIndex(std::size_t index);      std::array<ProfileInfo, MAX_USERS> profiles{};      std::size_t user_count = 0; -    boost::optional<std::size_t> AddToProfiles(const ProfileInfo& profile); -    bool RemoveProfileAtIndex(std::size_t index);      UUID last_opened_user{INVALID_UUID};  }; diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 4ed66d817..59aafd616 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -743,7 +743,7 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) {      Account::ProfileManager profile_manager{};      const auto uuid = profile_manager.GetUser(Settings::values.current_user); -    ASSERT(uuid != boost::none); +    ASSERT(uuid != std::nullopt);      params.current_user = uuid->uuid;      IPC::ResponseBuilder rb{ctx, 2, 0, 1}; diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 83cc49dfc..0bc307e99 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -153,7 +153,7 @@ void ConfigureSystem::UpdateCurrentUser() {      ui->pm_add->setEnabled(profile_manager->GetUserCount() < Service::Account::MAX_USERS);      const auto& current_user = profile_manager->GetUser(Settings::values.current_user); -    ASSERT(current_user != boost::none); +    ASSERT(current_user != std::nullopt);      const auto username = GetAccountUsername(*current_user);      scene->clear(); @@ -252,7 +252,7 @@ void ConfigureSystem::AddUser() {  void ConfigureSystem::RenameUser() {      const auto user = tree_view->currentIndex().row();      const auto uuid = profile_manager->GetUser(user); -    ASSERT(uuid != boost::none); +    ASSERT(uuid != std::nullopt);      const auto username = GetAccountUsername(*uuid);      Service::Account::ProfileBase profile; @@ -292,7 +292,7 @@ void ConfigureSystem::RenameUser() {  void ConfigureSystem::DeleteUser() {      const auto index = tree_view->currentIndex().row();      const auto uuid = profile_manager->GetUser(index); -    ASSERT(uuid != boost::none); +    ASSERT(uuid != std::nullopt);      const auto username = GetAccountUsername(*uuid);      const auto confirm = @@ -320,7 +320,7 @@ void ConfigureSystem::DeleteUser() {  void ConfigureSystem::SetUserImage() {      const auto index = tree_view->currentIndex().row();      const auto uuid = profile_manager->GetUser(index); -    ASSERT(uuid != boost::none); +    ASSERT(uuid != std::nullopt);      const auto username = GetAccountUsername(*uuid);      const auto file = QFileDialog::getOpenFileName(this, tr("Select User Image"), QString(), diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 47f494841..55508b1e1 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -785,7 +785,7 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target          ASSERT(index != -1 && index < 8);          const auto user_id = manager.GetUser(index); -        ASSERT(user_id != boost::none); +        ASSERT(user_id != std::nullopt);          path = nand_dir + FileSys::SaveDataFactory::GetFullPath(FileSys::SaveDataSpaceId::NandUser,                                                                  FileSys::SaveDataType::SaveData,                                                                  program_id, user_id->uuid, 0);  | 
