Browse Source

cmOrderDirectories: Modernize memory management

Marc Chevrier 6 years ago
parent
commit
3c632b89ab
2 changed files with 15 additions and 14 deletions
  1. 11 12
      Source/cmOrderDirectories.cxx
  2. 4 2
      Source/cmOrderDirectories.h

+ 11 - 12
Source/cmOrderDirectories.cxx

@@ -8,9 +8,9 @@
 #include <sstream>
 #include <vector>
 
+#include <cm/memory>
 #include <cmext/algorithm>
 
-#include "cmAlgorithms.h"
 #include "cmGeneratorTarget.h"
 #include "cmGlobalGenerator.h"
 #include "cmMessageType.h"
@@ -250,11 +250,7 @@ cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg,
   this->Computed = false;
 }
 
-cmOrderDirectories::~cmOrderDirectories()
-{
-  cmDeleteAll(this->ConstraintEntries);
-  cmDeleteAll(this->ImplicitDirEntries);
-}
+cmOrderDirectories::~cmOrderDirectories() = default;
 
 std::vector<std::string> const& cmOrderDirectories::GetOrderedDirectories()
 {
@@ -288,14 +284,16 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
 
       if (this->IsImplicitDirectory(dir)) {
         this->ImplicitDirEntries.push_back(
-          new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
+          cm::make_unique<cmOrderDirectoriesConstraintSOName>(this, fullPath,
+                                                              soname));
         return;
       }
     }
 
     // Construct the runtime information entry for this library.
     this->ConstraintEntries.push_back(
-      new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
+      cm::make_unique<cmOrderDirectoriesConstraintSOName>(this, fullPath,
+                                                          soname));
   } else {
     // This can happen if the same library is linked multiple times.
     // In that case the runtime information check need be done only
@@ -316,14 +314,15 @@ void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath)
       std::string dir = cmSystemTools::GetFilenamePath(fullPath);
       if (this->IsImplicitDirectory(dir)) {
         this->ImplicitDirEntries.push_back(
-          new cmOrderDirectoriesConstraintLibrary(this, fullPath));
+          cm::make_unique<cmOrderDirectoriesConstraintLibrary>(this,
+                                                               fullPath));
         return;
       }
     }
 
     // Construct the link library entry.
     this->ConstraintEntries.push_back(
-      new cmOrderDirectoriesConstraintLibrary(this, fullPath));
+      cm::make_unique<cmOrderDirectoriesConstraintLibrary>(this, fullPath));
   }
 }
 
@@ -371,7 +370,7 @@ void cmOrderDirectories::CollectOriginalDirectories()
   this->AddOriginalDirectories(this->UserDirectories);
 
   // Add directories containing constraints.
-  for (cmOrderDirectoriesConstraint* entry : this->ConstraintEntries) {
+  for (const auto& entry : this->ConstraintEntries) {
     entry->AddDirectory();
   }
 
@@ -456,7 +455,7 @@ void cmOrderDirectories::FindImplicitConflicts()
   // Check for items in implicit link directories that have conflicts
   // in the explicit directories.
   std::ostringstream conflicts;
-  for (cmOrderDirectoriesConstraint* entry : this->ImplicitDirEntries) {
+  for (const auto& entry : this->ImplicitDirEntries) {
     entry->FindImplicitConflicts(conflicts);
   }
 

+ 4 - 2
Source/cmOrderDirectories.h

@@ -6,6 +6,7 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <map>
+#include <memory>
 #include <set>
 #include <string>
 #include <utility>
@@ -46,8 +47,9 @@ private:
 
   std::vector<std::string> OrderedDirectories;
 
-  std::vector<cmOrderDirectoriesConstraint*> ConstraintEntries;
-  std::vector<cmOrderDirectoriesConstraint*> ImplicitDirEntries;
+  std::vector<std::unique_ptr<cmOrderDirectoriesConstraint>> ConstraintEntries;
+  std::vector<std::unique_ptr<cmOrderDirectoriesConstraint>>
+    ImplicitDirEntries;
   std::vector<std::string> UserDirectories;
   std::vector<std::string> LanguageDirectories;
   cmsys::RegularExpression RemoveLibraryExtension;