Added actual_date() methods for items

This commit is contained in:
John Wiegley 2010-02-04 19:47:16 -05:00
parent b78e22d52b
commit 9d61d3d621
4 changed files with 22 additions and 0 deletions

View file

@ -199,6 +199,9 @@ namespace {
value_t get_date(item_t& item) {
return item.date();
}
value_t get_actual_date(item_t& item) {
return item.actual_date();
}
value_t get_effective_date(item_t& item) {
if (optional<date_t> effective = item.effective_date())
return *effective;
@ -351,6 +354,8 @@ expr_t::ptr_op_t item_t::lookup(const symbol_t::kind_t kind,
case 'a':
if (name == "actual")
return WRAP_FUNCTOR(get_wrapper<&get_actual>);
else if (name == "actual_date")
return WRAP_FUNCTOR(get_wrapper<&get_actual_date>);
break;
case 'b':

View file

@ -173,6 +173,10 @@ public:
return *effective;
return *_date;
}
virtual date_t actual_date() const {
assert(_date);
return *_date;
}
virtual optional<date_t> effective_date() const {
return _date_eff;
}

View file

@ -97,6 +97,18 @@ date_t post_t::date() const
return *_date;
}
date_t post_t::actual_date() const
{
if (xdata_ && is_valid(xdata_->date))
return xdata_->date;
if (! _date) {
assert(xact);
return xact->date();
}
return *_date;
}
optional<date_t> post_t::effective_date() const
{
optional<date_t> date = item_t::effective_date();

View file

@ -105,6 +105,7 @@ public:
const optional<mask_t>& value_mask = none) const;
virtual date_t date() const;
virtual date_t actual_date() const;
virtual optional<date_t> effective_date() const;
bool must_balance() const {