mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	profile_manager: Use type aliases for username data, profile data, and user arrays
Avoids the need to repeatedly specify the whole array type in multiple places.
This commit is contained in:
		
							parent
							
								
									f9a26d468c
								
							
						
					
					
						commit
						38cd4e9c61
					
				| @ -62,7 +62,7 @@ ResultCode ProfileManager::AddUser(const ProfileInfo& user) { | ||||
| 
 | ||||
| /// Create a new user on the system. If the uuid of the user already exists, the user is not
 | ||||
| /// created.
 | ||||
| ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::array<u8, 0x20>& username) { | ||||
| ResultCode ProfileManager::CreateNewUser(UUID uuid, const ProfileUsername& username) { | ||||
|     if (user_count == MAX_USERS) { | ||||
|         return ERROR_TOO_MANY_USERS; | ||||
|     } | ||||
| @ -89,7 +89,7 @@ ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::array<u8, 0x20>& | ||||
| /// specifically by allowing an std::string for the username. This is required specifically since
 | ||||
| /// we're loading a string straight from the config
 | ||||
| ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::string& username) { | ||||
|     std::array<u8, 0x20> username_output; | ||||
|     ProfileUsername username_output; | ||||
|     if (username.size() > username_output.size()) { | ||||
|         std::copy_n(username.begin(), username_output.size(), username_output.begin()); | ||||
|     } else { | ||||
| @ -178,8 +178,8 @@ void ProfileManager::CloseUser(UUID uuid) { | ||||
| } | ||||
| 
 | ||||
| /// Gets all valid user ids on the system
 | ||||
| std::array<UUID, MAX_USERS> ProfileManager::GetAllUsers() const { | ||||
|     std::array<UUID, MAX_USERS> output; | ||||
| UserIDArray ProfileManager::GetAllUsers() const { | ||||
|     UserIDArray output; | ||||
|     std::transform(profiles.begin(), profiles.end(), output.begin(), | ||||
|                    [](const ProfileInfo& p) { return p.user_uuid; }); | ||||
|     return output; | ||||
| @ -187,8 +187,8 @@ std::array<UUID, MAX_USERS> ProfileManager::GetAllUsers() const { | ||||
| 
 | ||||
| /// Get all the open users on the system and zero out the rest of the data. This is specifically
 | ||||
| /// needed for GetOpenUsers and we need to ensure the rest of the output buffer is zero'd out
 | ||||
| std::array<UUID, MAX_USERS> ProfileManager::GetOpenUsers() const { | ||||
|     std::array<UUID, MAX_USERS> output; | ||||
| UserIDArray ProfileManager::GetOpenUsers() const { | ||||
|     UserIDArray output; | ||||
|     std::transform(profiles.begin(), profiles.end(), output.begin(), [](const ProfileInfo& p) { | ||||
|         if (p.is_open) | ||||
|             return p.user_uuid; | ||||
| @ -205,7 +205,7 @@ UUID ProfileManager::GetLastOpenedUser() const { | ||||
| 
 | ||||
| /// Return the users profile base and the unknown arbitary data.
 | ||||
| bool ProfileManager::GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, | ||||
|                                            std::array<u8, MAX_DATA>& data) const { | ||||
|                                            ProfileData& data) const { | ||||
|     if (GetProfileBase(index, profile)) { | ||||
|         std::memcpy(data.data(), profiles[index.get()].data.data(), MAX_DATA); | ||||
|         return true; | ||||
| @ -215,14 +215,14 @@ bool ProfileManager::GetProfileBaseAndData(boost::optional<size_t> index, Profil | ||||
| 
 | ||||
| /// Return the users profile base and the unknown arbitary data.
 | ||||
| bool ProfileManager::GetProfileBaseAndData(UUID uuid, ProfileBase& profile, | ||||
|                                            std::array<u8, MAX_DATA>& data) const { | ||||
|                                            ProfileData& data) const { | ||||
|     auto idx = GetUserIndex(uuid); | ||||
|     return GetProfileBaseAndData(idx, profile, data); | ||||
| } | ||||
| 
 | ||||
| /// Return the users profile base and the unknown arbitary data.
 | ||||
| bool ProfileManager::GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, | ||||
|                                            std::array<u8, MAX_DATA>& data) const { | ||||
|                                            ProfileData& data) const { | ||||
|     return GetProfileBaseAndData(user.user_uuid, profile, data); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -48,20 +48,24 @@ struct UUID { | ||||
| }; | ||||
| static_assert(sizeof(UUID) == 16, "UUID is an invalid size!"); | ||||
| 
 | ||||
| using ProfileUsername = std::array<u8, 0x20>; | ||||
| using ProfileData = std::array<u8, MAX_DATA>; | ||||
| using UserIDArray = std::array<UUID, MAX_USERS>; | ||||
| 
 | ||||
| /// This holds general information about a users profile. This is where we store all the information
 | ||||
| /// based on a specific user
 | ||||
| struct ProfileInfo { | ||||
|     UUID user_uuid; | ||||
|     std::array<u8, 0x20> username; | ||||
|     ProfileUsername username; | ||||
|     u64 creation_time; | ||||
|     std::array<u8, MAX_DATA> data; // TODO(ognik): Work out what this is
 | ||||
|     ProfileData data; // TODO(ognik): Work out what this is
 | ||||
|     bool is_open; | ||||
| }; | ||||
| 
 | ||||
| struct ProfileBase { | ||||
|     UUID user_uuid; | ||||
|     u64_le timestamp; | ||||
|     std::array<u8, 0x20> username; | ||||
|     ProfileUsername username; | ||||
| 
 | ||||
|     // Zero out all the fields to make the profile slot considered "Empty"
 | ||||
|     void Invalidate() { | ||||
| @ -79,7 +83,7 @@ class ProfileManager { | ||||
| public: | ||||
|     ProfileManager(); // TODO(ogniK): Load from system save
 | ||||
|     ResultCode AddUser(const ProfileInfo& user); | ||||
|     ResultCode CreateNewUser(UUID uuid, const std::array<u8, 0x20>& username); | ||||
|     ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username); | ||||
|     ResultCode CreateNewUser(UUID uuid, const std::string& username); | ||||
|     boost::optional<size_t> GetUserIndex(const UUID& uuid) const; | ||||
|     boost::optional<size_t> GetUserIndex(const ProfileInfo& user) const; | ||||
| @ -87,18 +91,17 @@ public: | ||||
|     bool GetProfileBase(UUID uuid, ProfileBase& profile) const; | ||||
|     bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; | ||||
|     bool GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, | ||||
|                                std::array<u8, MAX_DATA>& data) const; | ||||
|     bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, | ||||
|                                std::array<u8, MAX_DATA>& data) const; | ||||
|                                ProfileData& data) const; | ||||
|     bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const; | ||||
|     bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, | ||||
|                                std::array<u8, MAX_DATA>& data) const; | ||||
|                                ProfileData& data) const; | ||||
|     size_t GetUserCount() const; | ||||
|     size_t GetOpenUserCount() const; | ||||
|     bool UserExists(UUID uuid) const; | ||||
|     void OpenUser(UUID uuid); | ||||
|     void CloseUser(UUID uuid); | ||||
|     std::array<UUID, MAX_USERS> GetOpenUsers() const; | ||||
|     std::array<UUID, MAX_USERS> GetAllUsers() const; | ||||
|     UserIDArray GetOpenUsers() const; | ||||
|     UserIDArray GetAllUsers() const; | ||||
|     UUID GetLastOpenedUser() const; | ||||
| 
 | ||||
|     bool CanSystemRegisterUser() const; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash