lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [lmi] master b83ebb3 1/4: Reorder Query() functions


From: Greg Chicares
Subject: [lmi-commits] [lmi] master b83ebb3 1/4: Reorder Query() functions
Date: Mon, 5 Nov 2018 19:33:45 -0500 (EST)

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

    Reorder Query() functions
    
    In preparation for other changes, rearranged Query() functions in
    dependency order. Any that is implemented in terms of another now
    follows that other: code is easier to read without backtracking.
---
 database.cpp | 56 ++++++++++++++++++++++++++++----------------------------
 database.hpp |  7 ++++---
 2 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/database.cpp b/database.cpp
index 8d5dba7..09f84f0 100644
--- a/database.cpp
+++ b/database.cpp
@@ -91,13 +91,31 @@ database_index product_database::index() const
     return index_;
 }
 
-/// Query database, using default index; return a scalar.
-///
-/// Throw if the database entity is not scalar.
+/// Query database; write result into vector argument.
 
-double product_database::Query(e_database_key k) const
+void product_database::Query(std::vector<double>& dst, e_database_key k, 
database_index const& i) const
 {
-    return Query(k, index_);
+    int const local_length = maturity_age_ - 
i.index_vector()[e_axis_issue_age];
+    LMI_ASSERT(0 < local_length && local_length <= methuselah);
+    database_entity const& v = entity_from_key(k);
+    double const*const z = v[i];
+    if(1 == v.extent())
+        {
+        dst.assign(local_length, *z);
+        }
+    else
+        {
+        dst.reserve(local_length);
+        dst.assign(z, z + std::min(local_length, v.extent()));
+        dst.resize(local_length, dst.back());
+        }
+}
+
+/// Query database, using default index; write result into vector argument.
+
+void product_database::Query(std::vector<double>& dst, e_database_key k) const
+{
+    return Query(dst, k, index_);
 }
 
 /// Query database; return a scalar.
@@ -119,31 +137,13 @@ double product_database::Query(e_database_key k, 
database_index const& i) const
     return *v[i];
 }
 
-/// Query database, using default index; write result into vector argument.
-
-void product_database::Query(std::vector<double>& dst, e_database_key k) const
-{
-    return Query(dst, k, index_);
-}
-
-/// Query database; write result into vector argument.
+/// Query database, using default index; return a scalar.
+///
+/// Throw if the database entity is not scalar.
 
-void product_database::Query(std::vector<double>& dst, e_database_key k, 
database_index const& i) const
+double product_database::Query(e_database_key k) const
 {
-    int const local_length = maturity_age_ - 
i.index_vector()[e_axis_issue_age];
-    LMI_ASSERT(0 < local_length && local_length <= methuselah);
-    database_entity const& v = entity_from_key(k);
-    double const*const z = v[i];
-    if(1 == v.extent())
-        {
-        dst.assign(local_length, *z);
-        }
-    else
-        {
-        dst.reserve(local_length);
-        dst.assign(z, z + std::min(local_length, v.extent()));
-        dst.resize(local_length, dst.back());
-        }
+    return Query(k, index_);
 }
 
 /// Ascertain whether two database entities are equivalent.
diff --git a/database.hpp b/database.hpp
index 38ccf3d..6b48909 100644
--- a/database.hpp
+++ b/database.hpp
@@ -64,10 +64,11 @@ class LMI_SO product_database final
     int length() const;
     database_index index() const;
 
-    double Query(e_database_key) const;
-    double Query(e_database_key, database_index const&) const;
-    void Query(std::vector<double>&, e_database_key) const;
     void Query(std::vector<double>&, e_database_key, database_index const&) 
const;
+    void Query(std::vector<double>&, e_database_key) const;
+
+    double Query(e_database_key, database_index const&) const;
+    double Query(e_database_key) const;
 
     bool are_equivalent(e_database_key, e_database_key) const;
     bool varies_by_state(e_database_key) const;



reply via email to

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