From bf2897a6eced742de52a68d9ddbda51cd0a741fd Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Tue, 17 Oct 2017 18:06:48 +0200
Subject: [PATCH] [App/IO] GMSH I/F: Unique_ptr for mesh strategy.

---
 Applications/FileIO/Gmsh/GMSHInterface.cpp | 11 ++++++-----
 Applications/FileIO/Gmsh/GMSHInterface.h   |  2 +-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/Applications/FileIO/Gmsh/GMSHInterface.cpp b/Applications/FileIO/Gmsh/GMSHInterface.cpp
index 01fabb7d3e5..2946419bac8 100644
--- a/Applications/FileIO/Gmsh/GMSHInterface.cpp
+++ b/Applications/FileIO/Gmsh/GMSHInterface.cpp
@@ -49,11 +49,13 @@ GMSHInterface::GMSHInterface(
 {
     switch (mesh_density_algorithm) {
     case GMSH::MeshDensityAlgorithm::FixedMeshDensity:
-        _mesh_density_strategy = new GMSH::GMSHFixedMeshDensity(pnt_density);
+        _mesh_density_strategy =
+            std::make_unique<GMSH::GMSHFixedMeshDensity>(pnt_density);
         break;
     case GMSH::MeshDensityAlgorithm::AdaptiveMeshDensity:
-        _mesh_density_strategy = new GMSH::GMSHAdaptiveMeshDensity(
-            pnt_density, station_density, max_pnts_per_leaf);
+        _mesh_density_strategy =
+            std::make_unique<GMSH::GMSHAdaptiveMeshDensity>(
+                pnt_density, station_density, max_pnts_per_leaf);
         break;
     }
 }
@@ -62,7 +64,6 @@ GMSHInterface::~GMSHInterface()
 {
     for (auto * gmsh_pnt : _gmsh_pnts)
         delete gmsh_pnt;
-    delete _mesh_density_strategy;
     for (auto * polygon_tree : _polygon_tree_list)
         delete polygon_tree;
 }
@@ -138,7 +139,7 @@ int GMSHInterface::writeGMSHInputFile(std::ostream& out)
         }
         _polygon_tree_list.push_back(new GMSH::GMSHPolygonTree(
             new GeoLib::PolygonWithSegmentMarker(*polyline), nullptr, _geo_objs,
-            _gmsh_geo_name, _mesh_density_strategy));
+            _gmsh_geo_name, _mesh_density_strategy.get()));
     }
     DBUG(
         "GMSHInterface::writeGMSHInputFile(): Computed topological hierarchy - "
diff --git a/Applications/FileIO/Gmsh/GMSHInterface.h b/Applications/FileIO/Gmsh/GMSHInterface.h
index d9a71be64dc..ae8d68f3265 100644
--- a/Applications/FileIO/Gmsh/GMSHInterface.h
+++ b/Applications/FileIO/Gmsh/GMSHInterface.h
@@ -104,7 +104,7 @@ private:
 
     std::vector<GMSH::GMSHPoint*> _gmsh_pnts;
 
-    GMSH::GMSHMeshDensityStrategy *_mesh_density_strategy;
+    std::unique_ptr<GMSH::GMSHMeshDensityStrategy> _mesh_density_strategy;
     /// Holds the inverse rotation matrix. The matrix is used in writePoints() to
     /// revert the rotation done in writeGMSHInputFile().
     MathLib::DenseMatrix<double> _inverse_rot_mat =
-- 
GitLab