diff options
-rw-r--r-- | config.cc | 5 | ||||
-rw-r--r-- | valexpr.cc | 8 | ||||
-rw-r--r-- | valexpr.h | 2 |
3 files changed, 12 insertions, 3 deletions
@@ -3,6 +3,7 @@ #include "option.h" #include "datetime.h" #include "quotes.h" +#include "valexpr.h" #include "walk.h" #ifdef USE_BOOST_PYTHON #include "py_eval.h" @@ -647,6 +648,8 @@ OPT_BEGIN(end, "e:") { config.predicate += "d<["; config.predicate += buf; config.predicate += "]"; + + terminus = interval.end; } OPT_END(end); OPT_BEGIN(current, "c") { @@ -811,6 +814,8 @@ OPT_BEGIN(period, "p:") { config.predicate += "d<["; config.predicate += buf; config.predicate += "]"; + + terminus = interval.end; } } OPT_END(period); @@ -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; @@ -127,6 +127,8 @@ struct value_expr_t extern std::auto_ptr<value_expr_t> amount_expr; extern std::auto_ptr<value_expr_t> total_expr; +extern std::time_t terminus; + inline void compute_amount(value_t& result, const details_t& details) { if (amount_expr.get()) amount_expr->compute(result, details); |