From 728663bdc03dfe20343c45ff36f5fb080b49ffec Mon Sep 17 00:00:00 2001 From: mitaclaw <140017135+mitaclaw@users.noreply.github.com> Date: Sat, 28 Sep 2024 22:30:41 -0700 Subject: [PATCH] Modernize `std::binary_search` with ranges In VolumeVerifier.cpp, constructing a `std::string_view` of the volume's GameID is unnecessary, as `std::`(`ranges::`)`binary_search` supports heterogeneous lookup. The usage in GameFile.cpp is a perfect example. --- Source/Core/DiscIO/VolumeVerifier.cpp | 6 ++---- Source/Core/UICommon/GameFile.cpp | 3 +-- Source/Core/VideoCommon/VertexManagerBase.cpp | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Source/Core/DiscIO/VolumeVerifier.cpp b/Source/Core/DiscIO/VolumeVerifier.cpp index 5a4a9c6856..8e31eff4eb 100644 --- a/Source/Core/DiscIO/VolumeVerifier.cpp +++ b/Source/Core/DiscIO/VolumeVerifier.cpp @@ -722,8 +722,7 @@ bool VolumeVerifier::ShouldHaveChannelPartition() const }; static_assert(std::ranges::is_sorted(channel_discs)); - return std::binary_search(channel_discs.cbegin(), channel_discs.cend(), - std::string_view(m_volume.GetGameID())); + return std::ranges::binary_search(channel_discs, m_volume.GetGameID()); } bool VolumeVerifier::ShouldHaveInstallPartition() const @@ -755,8 +754,7 @@ bool VolumeVerifier::ShouldBeDualLayer() const }; static_assert(std::ranges::is_sorted(dual_layer_discs)); - return std::binary_search(dual_layer_discs.cbegin(), dual_layer_discs.cend(), - std::string_view(m_volume.GetGameID())); + return std::ranges::binary_search(dual_layer_discs, m_volume.GetGameID()); } void VolumeVerifier::CheckVolumeSize() diff --git a/Source/Core/UICommon/GameFile.cpp b/Source/Core/UICommon/GameFile.cpp index 9151aec796..5c32c511df 100644 --- a/Source/Core/UICommon/GameFile.cpp +++ b/Source/Core/UICommon/GameFile.cpp @@ -616,8 +616,7 @@ bool GameFile::CheckIfTwoDiscGame(const std::string& game_id) const static_assert(std::ranges::is_sorted(two_disc_game_id_prefixes)); std::string_view game_id_prefix(game_id.data(), GAME_ID_PREFIX_SIZE); - return std::binary_search(two_disc_game_id_prefixes.begin(), two_disc_game_id_prefixes.end(), - game_id_prefix); + return std::ranges::binary_search(two_disc_game_id_prefixes, game_id_prefix); } std::string GameFile::GetNetPlayName(const Core::TitleDatabase& title_database) const diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp index 02edb56d35..8a4f7f75bd 100644 --- a/Source/Core/VideoCommon/VertexManagerBase.cpp +++ b/Source/Core/VideoCommon/VertexManagerBase.cpp @@ -954,8 +954,7 @@ void VertexManagerBase::OnDraw() // Check if this draw is scheduled to kick a command buffer. // The draw counters will always be sorted so a binary search is possible here. - if (std::binary_search(m_scheduled_command_buffer_kicks.begin(), - m_scheduled_command_buffer_kicks.end(), m_draw_counter)) + if (std::ranges::binary_search(m_scheduled_command_buffer_kicks, m_draw_counter)) { // Kick a command buffer on the background thread. g_gfx->Flush();