From ff24058e46be5c8757da17602272e7668e6bd8ff Mon Sep 17 00:00:00 2001 From: Matthew Woehlke Date: Thu, 18 Jul 2024 12:44:12 -0400 Subject: [PATCH] export: Use std::all_of to collect exports Rewrite cmExport{Build,Install}FileGenerator::CollectExports to use std::all_of as recommended by clang-tidy. --- Source/cmExportBuildFileGenerator.cxx | 17 +++++++++-------- Source/cmExportInstallFileGenerator.cxx | 18 +++++++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index 73a458536b..eefc5161de 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -115,20 +115,21 @@ void cmExportBuildFileGenerator::SetImportLocationProperty( bool cmExportBuildFileGenerator::CollectExports( std::function visitor) { - std::vector targets; - this->GetTargets(targets); - for (auto const& tei : targets) { + auto pred = [&](cmExportBuildFileGenerator::TargetExport& tei) -> bool { cmGeneratorTarget* te = this->LG->FindGeneratorTargetToUse(tei.Name); if (this->ExportedTargets.insert(te).second) { this->Exports.emplace_back(te, tei.XcFrameworkLocation); visitor(te); - } else { - this->ComplainAboutDuplicateTarget(te->GetName()); - return false; + return true; } - } - return true; + this->ComplainAboutDuplicateTarget(te->GetName()); + return false; + }; + + std::vector targets; + this->GetTargets(targets); + return std::all_of(targets.begin(), targets.end(), pred); } void cmExportBuildFileGenerator::HandleMissingTarget( diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 374b5eddf9..87389386a1 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -2,6 +2,7 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmExportInstallFileGenerator.h" +#include #include #include #include @@ -313,18 +314,21 @@ std::string cmExportInstallFileGenerator::GetCxxModuleFile() const bool cmExportInstallFileGenerator::CollectExports( std::function const& visitor) { - for (auto const& te : this->GetExportSet()->GetTargetExports()) { + auto pred = [&](std::unique_ptr const& te) -> bool { if (te->NamelinkOnly) { - continue; + return true; } if (this->ExportedTargets.insert(te->Target).second) { visitor(te.get()); - } else { - this->ComplainAboutDuplicateTarget(te->Target->GetName()); - return false; + return true; } - } - return true; + + this->ComplainAboutDuplicateTarget(te->Target->GetName()); + return false; + }; + + auto const& targets = this->GetExportSet()->GetTargetExports(); + return std::all_of(targets.begin(), targets.end(), pred); } bool cmExportInstallFileGenerator::PopulateInterfaceProperties(