CGameProject: Make use of std::string_view where applicable

Makes a few functions have non-allocating arguments
This commit is contained in:
Lioncash 2020-06-18 05:27:54 -04:00
parent 6d98e918ae
commit bb9947fe0e
3 changed files with 13 additions and 14 deletions

View File

@ -39,7 +39,7 @@ void CAudioManager::LoadAssets()
} }
// Load audio lookup table + sfx name list // Load audio lookup table + sfx name list
const TString AudioLookupName = (mpProject->Game() < EGame::EchoesDemo ? "sound_lookup" : "sound_lookup_ATBL"); const std::string_view AudioLookupName = mpProject->Game() < EGame::EchoesDemo ? "sound_lookup" : "sound_lookup_ATBL";
const CAssetID AudioLookupID = mpProject->FindNamedResource(AudioLookupName); const CAssetID AudioLookupID = mpProject->FindNamedResource(AudioLookupName);
if (AudioLookupID.IsValid()) if (AudioLookupID.IsValid())

View File

@ -148,7 +148,7 @@ void CGameProject::GetWorldList(std::list<CAssetID>& rOut) const
} }
} }
CAssetID CGameProject::FindNamedResource(const TString& rkName) const CAssetID CGameProject::FindNamedResource(std::string_view name) const
{ {
for (const auto& pkg : mPackages) for (const auto& pkg : mPackages)
{ {
@ -156,7 +156,7 @@ CAssetID CGameProject::FindNamedResource(const TString& rkName) const
{ {
const SNamedResource& rkRes = pkg->NamedResourceByIndex(iRes); const SNamedResource& rkRes = pkg->NamedResourceByIndex(iRes);
if (rkRes.Name == rkName) if (rkRes.Name == name)
return rkRes.ID; return rkRes.ID;
} }
} }
@ -164,17 +164,15 @@ CAssetID CGameProject::FindNamedResource(const TString& rkName) const
return CAssetID::InvalidID(mGame); return CAssetID::InvalidID(mGame);
} }
CPackage* CGameProject::FindPackage(const TString& rkName) const CPackage* CGameProject::FindPackage(std::string_view name) const
{ {
for (const auto& pPackage : mPackages) const auto iter = std::find_if(mPackages.begin(), mPackages.end(),
{ [name](const auto& package) { return package->Name() == name; });
if (pPackage->Name() == rkName)
{
return pPackage.get();
}
}
return nullptr; if (iter == mPackages.cend())
return nullptr;
return iter->get();
} }
std::unique_ptr<CGameProject> CGameProject::CreateProjectForExport( std::unique_ptr<CGameProject> CGameProject::CreateProjectForExport(

View File

@ -14,6 +14,7 @@
#include <Common/TString.h> #include <Common/TString.h>
#include <Common/FileIO/CFileLock.h> #include <Common/FileIO/CFileLock.h>
#include <memory> #include <memory>
#include <string_view>
namespace nod { class DiscWii; } namespace nod { class DiscWii; }
@ -57,8 +58,8 @@ public:
bool BuildISO(const TString& rkIsoPath, IProgressNotifier *pProgress); bool BuildISO(const TString& rkIsoPath, IProgressNotifier *pProgress);
bool MergeISO(const TString& rkIsoPath, nod::DiscWii *pOriginalIso, IProgressNotifier *pProgress); bool MergeISO(const TString& rkIsoPath, nod::DiscWii *pOriginalIso, IProgressNotifier *pProgress);
void GetWorldList(std::list<CAssetID>& rOut) const; void GetWorldList(std::list<CAssetID>& rOut) const;
CAssetID FindNamedResource(const TString& rkName) const; CAssetID FindNamedResource(std::string_view name) const;
CPackage* FindPackage(const TString& rkName) const; CPackage* FindPackage(std::string_view name) const;
// Static // Static
static std::unique_ptr<CGameProject> CreateProjectForExport( static std::unique_ptr<CGameProject> CreateProjectForExport(