Kaynağa Gözat

export: Use std::all_of to collect exports

Rewrite cmExport{Build,Install}FileGenerator::CollectExports to use
std::all_of as recommended by clang-tidy.
Matthew Woehlke 1 yıl önce
ebeveyn
işleme
ff24058e46

+ 9 - 8
Source/cmExportBuildFileGenerator.cxx

@@ -115,20 +115,21 @@ void cmExportBuildFileGenerator::SetImportLocationProperty(
 bool cmExportBuildFileGenerator::CollectExports(
   std::function<void(cmGeneratorTarget const*)> visitor)
 {
-  std::vector<TargetExport> 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<TargetExport> targets;
+  this->GetTargets(targets);
+  return std::all_of(targets.begin(), targets.end(), pred);
 }
 
 void cmExportBuildFileGenerator::HandleMissingTarget(

+ 11 - 7
Source/cmExportInstallFileGenerator.cxx

@@ -2,6 +2,7 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmExportInstallFileGenerator.h"
 
+#include <algorithm>
 #include <cassert>
 #include <cstddef>
 #include <memory>
@@ -313,18 +314,21 @@ std::string cmExportInstallFileGenerator::GetCxxModuleFile() const
 bool cmExportInstallFileGenerator::CollectExports(
   std::function<void(cmTargetExport const*)> const& visitor)
 {
-  for (auto const& te : this->GetExportSet()->GetTargetExports()) {
+  auto pred = [&](std::unique_ptr<cmTargetExport> 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(