From 2eccbc105ac9272876e453217e7ed5dc0cac04f6 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sat, 7 Aug 2004 21:49:28 -0400 Subject: added walk.cc --- walk.cc | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 walk.cc diff --git a/walk.cc b/walk.cc new file mode 100644 index 00000000..5b923a86 --- /dev/null +++ b/walk.cc @@ -0,0 +1,31 @@ +#include "walk.h" + +namespace ledger { + +class sum_in_account +{ + public: + void operator()(transaction_t * xact) const { + xact->account->value += *xact; + } +}; + +void calc__accounts(account_t * account, + item_predicate& pred_functor, + unsigned int flags) +{ + sum_in_account functor; + + for (transactions_list::iterator i = account->transactions.begin(); + i != account->transactions.end(); + i++) + if (pred_functor(*i)) + handle_transaction(*i, functor, flags); + + for (accounts_map::iterator i = account->accounts.begin(); + i != account->accounts.end(); + i++) + calc__accounts((*i).second, pred_functor, flags); +} + +} // namespace ledger -- cgit v1.2.3