diff options
| author | Léo Lam <leo@leolam.fr> | 2020-12-30 01:47:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-30 01:47:01 +0100 |
| commit | 8a3b14d7dca147232a87b51cef12840656292171 (patch) | |
| tree | 2b1185886542fbe8a772ce825276b568154eea87 /Source/Core | |
| parent | 806a4f3a9a68da5068b4902bf2d3516b7f8a1b38 (diff) | |
| parent | 0e91470828769bd68b1f3ee59d5616bcf3f129df (diff) | |
Merge pull request #9391 from lioncash/find-str
IOS: Allow for heterogenous name lookup
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/IOS/IOS.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/Core/IOS/IOS.h | 7 |
2 files changed, 7 insertions, 6 deletions
diff --git a/Source/Core/Core/IOS/IOS.cpp b/Source/Core/Core/IOS/IOS.cpp index 342a630fe9..3f715215dd 100644 --- a/Source/Core/Core/IOS/IOS.cpp +++ b/Source/Core/Core/IOS/IOS.cpp @@ -409,7 +409,7 @@ bool Kernel::BootIOS(const u64 ios_title_id, const std::string& boot_content_pat void Kernel::AddDevice(std::unique_ptr<Device::Device> device) { ASSERT(device->GetDeviceType() == Device::Device::DeviceType::Static); - m_device_map[device->GetDeviceName()] = std::move(device); + m_device_map.insert_or_assign(device->GetDeviceName(), std::move(device)); } void Kernel::AddCoreDevices() @@ -505,14 +505,14 @@ s32 Kernel::GetFreeDeviceID() return -1; } -std::shared_ptr<Device::Device> Kernel::GetDeviceByName(const std::string& device_name) +std::shared_ptr<Device::Device> Kernel::GetDeviceByName(std::string_view device_name) { std::lock_guard lock(m_device_map_mutex); const auto iterator = m_device_map.find(device_name); return iterator != m_device_map.end() ? iterator->second : nullptr; } -std::shared_ptr<Device::Device> EmulationKernel::GetDeviceByName(const std::string& device_name) +std::shared_ptr<Device::Device> EmulationKernel::GetDeviceByName(std::string_view device_name) { return Kernel::GetDeviceByName(device_name); } diff --git a/Source/Core/Core/IOS/IOS.h b/Source/Core/Core/IOS/IOS.h index daf53585ab..ffb37c47f9 100644 --- a/Source/Core/Core/IOS/IOS.h +++ b/Source/Core/Core/IOS/IOS.h @@ -10,6 +10,7 @@ #include <memory> #include <mutex> #include <string> +#include <string_view> #include <vector> #include "Common/CommonTypes.h" @@ -110,14 +111,14 @@ protected: void AddDevice(std::unique_ptr<Device::Device> device); void AddCoreDevices(); void AddStaticDevices(); - std::shared_ptr<Device::Device> GetDeviceByName(const std::string& device_name); + std::shared_ptr<Device::Device> GetDeviceByName(std::string_view device_name); s32 GetFreeDeviceID(); IPCCommandResult OpenDevice(OpenRequest& request); bool m_is_responsible_for_nand_root = false; u64 m_title_id = 0; static constexpr u8 IPC_MAX_FDS = 0x18; - std::map<std::string, std::shared_ptr<Device::Device>> m_device_map; + std::map<std::string, std::shared_ptr<Device::Device>, std::less<>> m_device_map; std::mutex m_device_map_mutex; // TODO: make this fdmap per process. std::array<std::shared_ptr<Device::Device>, IPC_MAX_FDS> m_fdmap; @@ -144,7 +145,7 @@ public: // Get a resource manager by name. // This only works for devices which are part of the device map. - std::shared_ptr<Device::Device> GetDeviceByName(const std::string& device_name); + std::shared_ptr<Device::Device> GetDeviceByName(std::string_view device_name); }; // Used for controlling and accessing an IOS instance that is tied to emulation. |
