lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master d54ae72 4/6: Replace shared_ptr with unique_p


From: Greg Chicares
Subject: [lmi-commits] [lmi] master d54ae72 4/6: Replace shared_ptr with unique_ptr
Date: Tue, 16 Oct 2018 09:19:10 -0400 (EDT)

branch: master
commit d54ae7223e6253885cc2b6c34e585cc8866a86af
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Replace shared_ptr with unique_ptr
    
    The virtual dtor (which should always have been public anyway) makes
    covariant return (and hence destruction through a base-class pointer)
    safe. It is assumed that the conversion performed by covariant return
    is optimized well enough that it doesn't matter.
---
 group_values.cpp        |  4 ++--
 progress_meter.cpp      |  2 +-
 progress_meter.hpp      | 10 +++++-----
 progress_meter_cgi.cpp  |  8 +++-----
 progress_meter_cli.cpp  |  8 +++-----
 progress_meter_test.cpp | 14 +++++++-------
 progress_meter_wx.cpp   |  8 +++-----
 7 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/group_values.cpp b/group_values.cpp
index 313597b..b422971 100644
--- a/group_values.cpp
+++ b/group_values.cpp
@@ -118,7 +118,7 @@ census_run_result run_census_in_series::operator()
 {
     Timer timer;
     census_run_result result;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (lmi::ssize(cells)
             ,"Calculating all cells"
@@ -241,7 +241,7 @@ census_run_result run_census_in_parallel::operator()
 {
     Timer timer;
     census_run_result result;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (lmi::ssize(cells)
             ,"Initializing all cells"
diff --git a/progress_meter.cpp b/progress_meter.cpp
index 64df241..0b5b827 100644
--- a/progress_meter.cpp
+++ b/progress_meter.cpp
@@ -37,7 +37,7 @@ std::ostringstream& progress_meter_unit_test_stream()
 
 progress_meter_creator_type progress_meter_creator = nullptr;
 
-std::shared_ptr<progress_meter> create_progress_meter
+std::unique_ptr<progress_meter> create_progress_meter
     (int                               max_count
     ,std::string const&                title
     ,progress_meter::enum_display_mode display_mode
diff --git a/progress_meter.hpp b/progress_meter.hpp
index 99b5e31..f0e2572 100644
--- a/progress_meter.hpp
+++ b/progress_meter.hpp
@@ -195,7 +195,7 @@
 #include "so_attributes.hpp"
 
 #include <iosfwd>
-#include <memory>                       // shared_ptr
+#include <memory>                       // unique_ptr
 #include <string>
 
 std::ostringstream& LMI_SO progress_meter_unit_test_stream();
@@ -209,6 +209,8 @@ class LMI_SO progress_meter
         ,e_unit_test_mode
         };
 
+    virtual ~progress_meter();
+
     void dawdle(int seconds);
     bool reflect_progress();
     void culminate();
@@ -220,8 +222,6 @@ class LMI_SO progress_meter
         ,enum_display_mode
         );
 
-    virtual ~progress_meter();
-
     int count() const;
     int max_count() const;
 
@@ -249,13 +249,13 @@ class LMI_SO progress_meter
     bool              was_cancelled_;
 };
 
-std::shared_ptr<progress_meter> LMI_SO create_progress_meter
+std::unique_ptr<progress_meter> LMI_SO create_progress_meter
     (int                               max_count
     ,std::string const&                title = std::string()
     ,progress_meter::enum_display_mode       = progress_meter::e_normal_display
     );
 
-typedef std::shared_ptr<progress_meter> (*progress_meter_creator_type)
+typedef std::unique_ptr<progress_meter> (*progress_meter_creator_type)
     (int                               max_count
     ,std::string const&                title
     ,progress_meter::enum_display_mode
diff --git a/progress_meter_cgi.cpp b/progress_meter_cgi.cpp
index 3a7075e..b30f979 100644
--- a/progress_meter_cgi.cpp
+++ b/progress_meter_cgi.cpp
@@ -73,15 +73,13 @@ void concrete_progress_meter::culminate_ui()
 {
 }
 
-std::shared_ptr<progress_meter> concrete_progress_meter_creator
+std::unique_ptr<progress_meter> concrete_progress_meter_creator
     (int                               max_count
     ,std::string const&                title
-    ,progress_meter::enum_display_mode display_mode
+    ,progress_meter::enum_display_mode mode
     )
 {
-    return std::shared_ptr<progress_meter>
-        (new concrete_progress_meter(max_count, title, display_mode)
-        );
+    return std::make_unique<concrete_progress_meter>(max_count, title, mode);
 }
 
 bool volatile ensure_setup = set_progress_meter_creator
diff --git a/progress_meter_cli.cpp b/progress_meter_cli.cpp
index a023e86..f02d58e 100644
--- a/progress_meter_cli.cpp
+++ b/progress_meter_cli.cpp
@@ -110,15 +110,13 @@ void concrete_progress_meter::culminate_ui()
     os_ << std::endl;
 }
 
-std::shared_ptr<progress_meter> concrete_progress_meter_creator
+std::unique_ptr<progress_meter> concrete_progress_meter_creator
     (int                               max_count
     ,std::string const&                title
-    ,progress_meter::enum_display_mode display_mode
+    ,progress_meter::enum_display_mode mode
     )
 {
-    return std::shared_ptr<progress_meter>
-        (new concrete_progress_meter(max_count, title, display_mode)
-        );
+    return std::make_unique<concrete_progress_meter>(max_count, title, mode);
 }
 
 bool volatile ensure_setup = set_progress_meter_creator
diff --git a/progress_meter_test.cpp b/progress_meter_test.cpp
index 094a8c2..2543793 100644
--- a/progress_meter_test.cpp
+++ b/progress_meter_test.cpp
@@ -53,7 +53,7 @@ void progress_meter_test::test_normal_usage()
 {
     progress_meter_unit_test_stream().str("");
     int const max_count = 3;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (max_count
             ,"Some title"
@@ -78,7 +78,7 @@ void progress_meter_test::test_normal_usage()
 void progress_meter_test::test_quiet_display_mode()
 {
     int const max_count = 3;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (max_count
             ,"ERROR: THIS SHOULD NOT DISPLAY"
@@ -97,7 +97,7 @@ void progress_meter_test::test_distinct_metered_operations()
     progress_meter_unit_test_stream().str("");
     int const max_count = 3;
 
-    std::shared_ptr<progress_meter> meter0
+    std::unique_ptr<progress_meter> meter0
         (create_progress_meter
             (max_count
             ,"Operation 0"
@@ -111,7 +111,7 @@ void progress_meter_test::test_distinct_metered_operations()
     meter0->culminate();
 
     // Use a different shared pointer.
-    std::shared_ptr<progress_meter> meter1
+    std::unique_ptr<progress_meter> meter1
         (create_progress_meter
             (max_count
             ,"Operation 1"
@@ -146,7 +146,7 @@ void 
progress_meter_test::test_empty_title_and_zero_max_count()
 {
     progress_meter_unit_test_stream().str("");
     int const max_count = 0;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (max_count
             ,""
@@ -168,7 +168,7 @@ void progress_meter_test::test_postcondition_failure()
 {
     progress_meter_unit_test_stream().str("");
     int const max_count = 3;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (max_count
             ,"Some title"
@@ -213,7 +213,7 @@ void progress_meter_test::test_failure_to_culminate()
 {
     progress_meter_unit_test_stream().str("");
     int const max_count = 3;
-    std::shared_ptr<progress_meter> meter
+    std::unique_ptr<progress_meter> meter
         (create_progress_meter
             (max_count
             ,"Some title"
diff --git a/progress_meter_wx.cpp b/progress_meter_wx.cpp
index b04116e..5e16e38 100644
--- a/progress_meter_wx.cpp
+++ b/progress_meter_wx.cpp
@@ -150,15 +150,13 @@ void concrete_progress_meter::culminate_ui()
 {
 }
 
-std::shared_ptr<progress_meter> concrete_progress_meter_creator
+std::unique_ptr<progress_meter> concrete_progress_meter_creator
     (int                               max_count
     ,std::string const&                title
-    ,progress_meter::enum_display_mode display_mode
+    ,progress_meter::enum_display_mode mode
     )
 {
-    return std::shared_ptr<progress_meter>
-        (new concrete_progress_meter(max_count, title, display_mode)
-        );
+    return std::make_unique<concrete_progress_meter>(max_count, title, mode);
 }
 
 bool volatile ensure_setup = set_progress_meter_creator



reply via email to

[Prev in Thread] Current Thread [Next in Thread]