From a22c04137920bc20bd158a2ec5edce7ac49d1dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Mon, 21 Apr 2025 02:35:44 +0300 Subject: [PATCH] Enable the use of std::string_view for find in ObjectRepository --- src/openrct2/core/String.hpp | 18 ++++++++++++++++++ src/openrct2/object/ObjectRepository.cpp | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/openrct2/core/String.hpp b/src/openrct2/core/String.hpp index da52e289d3..113f4977d7 100644 --- a/src/openrct2/core/String.hpp +++ b/src/openrct2/core/String.hpp @@ -19,6 +19,24 @@ namespace OpenRCT2::String { + struct Hash + { + using is_transparent = void; + + size_t operator()(const char* txt) const + { + return std::hash{}(txt); + } + size_t operator()(std::string_view txt) const + { + return std::hash{}(txt); + } + size_t operator()(const std::string& txt) const + { + return std::hash{}(txt); + } + }; + std::string toStd(const utf8* str); std::string toUtf8(std::wstring_view src); std::wstring toWideChar(std::string_view src); diff --git a/src/openrct2/object/ObjectRepository.cpp b/src/openrct2/object/ObjectRepository.cpp index 2fe05c3b04..ad54541eae 100644 --- a/src/openrct2/object/ObjectRepository.cpp +++ b/src/openrct2/object/ObjectRepository.cpp @@ -69,7 +69,7 @@ struct ObjectEntryEqual } }; -using ObjectIdentifierMap = std::unordered_map; +using ObjectIdentifierMap = std::unordered_map>; using ObjectEntryMap = std::unordered_map; class ObjectFileIndex final : public FileIndex @@ -235,7 +235,7 @@ public: const ObjectRepositoryItem* FindObject(std::string_view identifier) const override final { - auto kvp = _newItemMap.find(std::string(identifier)); + auto kvp = _newItemMap.find(identifier); if (kvp != _newItemMap.end()) { return &_items[kvp->second];