lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] odd/unique_vs_shared 748838c: Replace shared_ptr wit


From: Greg Chicares
Subject: [lmi-commits] [lmi] odd/unique_vs_shared 748838c: Replace shared_ptr with unique_ptr
Date: Tue, 2 Feb 2021 17:11:55 -0500 (EST)

branch: odd/unique_vs_shared
commit 748838cd0de3c4ddcbf617eaf3eda72625160485
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Replace shared_ptr with unique_ptr
    
    Changed certain auxiliary objects in class BasicValues from shared_ptr
    to unique_ptr, because unique_ptr is preferable where it suffices.
    
    This requires an unfavorable change to the physical structure: forward
    declarations no longer suffice, so 'basic_values.hpp' must include more
    headers. But the auxiliary classes don't change often, so that shouldn't
    affect 'make' times much. That change must be propagated to class
    Irc7702, but arguably writing its dtor inline is worth the price, which,
    again, is insignificant because class ULCommFns rarely changes.
    
    Ultimately, these objects should probably be held directly, rather than
    through any kind of fancy pointer. That would require including their
    headers in 'basic_values.hpp', so this commit is a reasonable waypoint.
---
 basic_values.hpp | 34 +++++++++++++++++-----------------
 basicvalues.cpp  |  6 ------
 ihs_basicval.cpp |  8 --------
 ihs_irc7702.cpp  |  9 ---------
 ihs_irc7702.hpp  |  3 ++-
 5 files changed, 19 insertions(+), 41 deletions(-)

diff --git a/basic_values.hpp b/basic_values.hpp
index 25668bc..1b3e640 100644
--- a/basic_values.hpp
+++ b/basic_values.hpp
@@ -28,14 +28,22 @@
 #include "currency.hpp"
 #include "database.hpp"
 #include "dbnames.hpp"                  // e_database_key
+#include "death_benefits.hpp"
+#include "ihs_irc7702.hpp"
+#include "ihs_irc7702a.hpp"
+#include "interest_rates.hpp"
+#include "loads.hpp"
 #include "mc_enum_type_enums.hpp"
+#include "mortality_rates.hpp"
 #include "oecumenic_enumerations.hpp"
+#include "outlay.hpp"
+#include "premium_tax.hpp"
 #include "product_data.hpp"
 #include "round_to.hpp"
 #include "so_attributes.hpp"
 #include "yare_input.hpp"
 
-#include <memory>                       // shared_ptr
+#include <memory>                       // shared_ptr, unique_ptr
 #include <string>
 #include <utility>                      // pair
 #include <vector>
@@ -54,15 +62,7 @@
 
 class FundData;
 class Input;
-class InterestRates;
-class Irc7702;
-class Irc7702A;
-class Loads;
-class MortalityRates;
-class death_benefits;
 class lingo;
-class modal_outlay;
-class premium_tax;
 class rounding_rules;
 class stratified_charges;
 
@@ -126,14 +126,14 @@ class LMI_SO BasicValues
     std::shared_ptr<rounding_rules     const> RoundingRules_;
     std::shared_ptr<stratified_charges const> StratifiedCharges_;
 
-    std::shared_ptr<MortalityRates>     MortalityRates_;
-    std::shared_ptr<InterestRates>      InterestRates_;
-    std::shared_ptr<death_benefits>     DeathBfts_;
-    std::shared_ptr<modal_outlay>       Outlay_;
-    std::shared_ptr<premium_tax>        PremiumTax_;
-    std::shared_ptr<Loads>              Loads_;
-    std::shared_ptr<Irc7702>            Irc7702_;
-    std::shared_ptr<Irc7702A>           Irc7702A_;
+    std::unique_ptr<MortalityRates>     MortalityRates_;
+    std::unique_ptr<InterestRates>      InterestRates_;
+    std::unique_ptr<death_benefits>     DeathBfts_;
+    std::unique_ptr<modal_outlay>       Outlay_;
+    std::unique_ptr<premium_tax>        PremiumTax_;
+    std::unique_ptr<Loads>              Loads_;
+    std::unique_ptr<Irc7702>            Irc7702_;
+    std::unique_ptr<Irc7702A>           Irc7702A_;
 
     product_data     const& product () const {return *product_;}
     product_database const& database() const {return database_;}
diff --git a/basicvalues.cpp b/basicvalues.cpp
index 08a2d1b..03c56a6 100644
--- a/basicvalues.cpp
+++ b/basicvalues.cpp
@@ -25,13 +25,7 @@
 
 #include "alert.hpp"
 #include "assert_lmi.hpp"
-#include "death_benefits.hpp"
 #include "input.hpp"
-#include "interest_rates.hpp"
-#include "loads.hpp"
-#include "mortality_rates.hpp"
-#include "outlay.hpp"
-#include "premium_tax.hpp"
 
 #include <algorithm>                    // max()
 #include <cmath>                        // pow()
diff --git a/ihs_basicval.cpp b/ihs_basicval.cpp
index 0af78ac..6c6803f 100644
--- a/ihs_basicval.cpp
+++ b/ihs_basicval.cpp
@@ -30,26 +30,18 @@
 #include "calendar_date.hpp"
 #include "contains.hpp"
 #include "data_directory.hpp"
-#include "death_benefits.hpp"
 #include "et_vector.hpp"
 #include "financial.hpp"                // list_bill_premium()
 #include "fund_data.hpp"
 #include "global_settings.hpp"
 #include "gpt_specamt.hpp"
 #include "ieee754.hpp"                  // ldbl_eps_plus_one_times()
-#include "ihs_irc7702.hpp"
-#include "ihs_irc7702a.hpp"
 #include "input.hpp"
-#include "interest_rates.hpp"
 #include "irc7702_interest.hpp"         // iglp(), igsp()
 #include "lingo.hpp"
-#include "loads.hpp"
 #include "math_functions.hpp"
 #include "mc_enum_types_aux.hpp"        // mc_str()
-#include "mortality_rates.hpp"
 #include "oecumenic_enumerations.hpp"
-#include "outlay.hpp"
-#include "premium_tax.hpp"
 #include "rounding_rules.hpp"
 #include "stl_extensions.hpp"           // nonstd::power()
 #include "stratified_charges.hpp"
diff --git a/ihs_irc7702.cpp b/ihs_irc7702.cpp
index a249014..9787234 100644
--- a/ihs_irc7702.cpp
+++ b/ihs_irc7702.cpp
@@ -25,7 +25,6 @@
 
 #include "alert.hpp"
 #include "assert_lmi.hpp"
-#include "commutation_functions.hpp"
 #include "materially_equal.hpp"
 #include "ssize_lmi.hpp"
 #include "value_cast.hpp"
@@ -202,14 +201,6 @@ Irc7702::Irc7702
     Init();
 }
 
-/// Destructor.
-///
-/// Although it is explicitly defaulted, this destructor cannot be
-/// implemented inside the class definition, where a class type that
-/// it depends upon is incomplete.
-
-Irc7702::~Irc7702() = default;
-
 //============================================================================
 void Irc7702::ProcessGptPmt
     (int     a_Duration
diff --git a/ihs_irc7702.hpp b/ihs_irc7702.hpp
index c6d5ef3..2035139 100644
--- a/ihs_irc7702.hpp
+++ b/ihs_irc7702.hpp
@@ -24,6 +24,7 @@
 
 #include "config.hpp"
 
+#include "commutation_functions.hpp"
 #include "mc_enum_type_enums.hpp"
 #include "round_to.hpp"
 
@@ -89,7 +90,7 @@ class Irc7702 final
         ,double                     a_InforceCumPremsPaid
         // TODO ?? TAXATION !! Perhaps other arguments are needed for inforce.
         );
-    ~Irc7702();
+    ~Irc7702() = default;
 
     void Initialize7702
         (double                     a_BftAmt



reply via email to

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