diff options
author | John Wiegley <johnw@newartisans.com> | 2005-10-28 07:20:34 +0000 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2008-04-13 02:41:20 -0400 |
commit | 00fe8bc815764a67b6d30411bcf9770320cc08ea (patch) | |
tree | 1b0d7310c1554ef143702a70ed23c737c1026ceb /valexpr.cc | |
parent | 83cc662b8570a173850e260b1c6adc8457d98a83 (diff) | |
download | fork-ledger-00fe8bc815764a67b6d30411bcf9770320cc08ea.tar.gz fork-ledger-00fe8bc815764a67b6d30411bcf9770320cc08ea.tar.bz2 fork-ledger-00fe8bc815764a67b6d30411bcf9770320cc08ea.zip |
Added a `terminus' global, which if set marks the "current time" as
seen by the value expression logic. This has the effect of changing
valexprs that test against the current time, such as for calculating
the market value of commodities.
Diffstat (limited to 'valexpr.cc')
-rw-r--r-- | valexpr.cc | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -13,6 +13,8 @@ namespace ledger { std::auto_ptr<value_expr_t> amount_expr; std::auto_ptr<value_expr_t> total_expr; +std::time_t terminus = now; + void value_expr_t::compute(value_t& result, const details_t& details) const { switch (kind) { @@ -112,7 +114,7 @@ void value_expr_t::compute(value_t& result, const details_t& details) const else if (details.entry) result = long(details.entry->date()); else - result = long(now); + result = long(terminus); break; case CLEARED: if (details.xact) @@ -286,7 +288,7 @@ void value_expr_t::compute(value_t& result, const details_t& details) const assert(left); left->compute(result, details); - std::time_t moment = now; + std::time_t moment = terminus; if (right) { switch (right->kind) { case DATE: @@ -453,7 +455,7 @@ value_expr_t * parse_value_term(std::istream& in) // Basic terms case 'm': node.reset(new value_expr_t(value_expr_t::CONSTANT_T)); - node->constant_t = now; + node->constant_t = terminus; break; case 'a': node.reset(new value_expr_t(value_expr_t::AMOUNT)); break; |