[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;