Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ranges Algorithms Modernization - Return #13091

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Source/Android/jni/AndroidCommon/AndroidCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ bool IsPathAndroidContent(std::string_view uri)
std::string OpenModeToAndroid(std::string mode)
{
// The 'b' specifier is not supported by Android. Since we're on POSIX, it's fine to just skip it.
mode.erase(std::remove(mode.begin(), mode.end(), 'b'));
const auto remove_result = std::ranges::remove(mode, 'b');
mode.erase(remove_result.begin(), remove_result.end());
Comment on lines +65 to +66
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't C++20's std::erase be a better fit here?


if (mode == "r")
return "r";
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/Common/FileSearch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
// not because std::filesystem returns duplicates). Also note that this pathname-based uniqueness
// isn't as thorough as std::filesystem::equivalent.
std::sort(result.begin(), result.end());
result.erase(std::unique(result.begin(), result.end()), result.end());
const auto unique_result = std::ranges::unique(result);
result.erase(unique_result.begin(), unique_result.end());

// Dolphin expects to be able to use "/" (DIR_SEP) everywhere.
// std::filesystem uses the OS separator.
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/Core/IOS/Network/Socket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1085,10 +1085,10 @@ void WiiSockMan::UpdatePollCommands()
std::vector<int> original_order(pfds.size());
std::iota(original_order.begin(), original_order.end(), 0);
// Select indices with valid fds
auto mid = std::partition(original_order.begin(), original_order.end(), [&](auto i) {
const auto partition_result = std::ranges::partition(original_order, [&](auto i) {
return GetHostSocket(memory.Read_U32(pcmd.buffer_out + 0xc * i)) >= 0;
});
const auto n_valid = std::distance(original_order.begin(), mid);
const auto n_valid = std::distance(original_order.begin(), partition_result.begin());

// Move all the valid pollfds to the front of the vector
for (auto i = 0; i < n_valid; ++i)
Expand Down
6 changes: 3 additions & 3 deletions Source/Core/Core/Movie.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1081,11 +1081,11 @@ void MovieManager::LoadInput(const std::string& movie_path)
std::vector<u8> movInput(m_current_byte);
t_record.ReadArray(movInput.data(), movInput.size());

const auto result = std::mismatch(movInput.begin(), movInput.end(), m_temp_input.begin());
const auto mismatch_result = std::ranges::mismatch(movInput, m_temp_input);

if (result.first != movInput.end())
if (mismatch_result.in1 != movInput.end())
{
const ptrdiff_t mismatch_index = std::distance(movInput.begin(), result.first);
const ptrdiff_t mismatch_index = std::distance(movInput.begin(), mismatch_result.in1);

// this is a "you did something wrong" alert for the user's benefit.
// we'll try to say what's going on in excruciating detail, otherwise the user might not
Expand Down
9 changes: 4 additions & 5 deletions Source/Core/DiscIO/NANDImporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,19 +240,18 @@ bool NANDImporter::ExtractCertificates()

for (const PEMCertificate& certificate : certificates)
{
const auto search_result =
std::search(content_bytes.begin(), content_bytes.end(), certificate.search_bytes.begin(),
certificate.search_bytes.end());
const auto search_result = std::ranges::search(content_bytes, certificate.search_bytes);

if (search_result == content_bytes.end())
if (search_result.empty())
{
ERROR_LOG_FMT(DISCIO, "ExtractCertificates: Could not find offset for certficate '{}'",
certificate.filename);
return false;
}

const std::string pem_file_path = m_nand_root + std::string(certificate.filename);
const ptrdiff_t certificate_offset = std::distance(content_bytes.begin(), search_result);
const ptrdiff_t certificate_offset =
std::distance(content_bytes.begin(), search_result.begin());
constexpr int min_offset = 2;
if (certificate_offset < min_offset)
{
Expand Down
6 changes: 3 additions & 3 deletions Source/Core/DolphinQt/Settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,11 +335,11 @@ void Settings::RemovePath(const QString& qpath)
std::string path = qpath.toStdString();
std::vector<std::string> paths = Config::GetIsoPaths();

auto new_end = std::remove(paths.begin(), paths.end(), path);
if (new_end == paths.end())
const auto remove_result = std::ranges::remove(paths, path);
if (remove_result.empty())
return;

paths.erase(new_end, paths.end());
paths.erase(remove_result.begin(), remove_result.end());
Config::SetIsoPaths(paths);
emit PathRemoved(qpath);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ BuildExpression(const std::vector<ciface::Core::DeviceContainer::InputDetection>

// Remove duplicates
std::sort(alternations.begin(), alternations.end());
alternations.erase(std::unique(alternations.begin(), alternations.end()), alternations.end());
const auto unique_result = std::ranges::unique(alternations);
alternations.erase(unique_result.begin(), unique_result.end());

return fmt::to_string(fmt::join(alternations, "|"));
}
Expand Down