Removed reference to session_t from the iterators module.

This commit is contained in:
John Wiegley 2009-02-09 17:41:55 -04:00
parent 6ca01af594
commit 47567307ce
5 changed files with 37 additions and 35 deletions

View file

@ -30,15 +30,15 @@
*/ */
#include "iterators.h" #include "iterators.h"
#include "session.h" #include "journal.h"
#include "compare.h" #include "compare.h"
namespace ledger { namespace ledger {
void entries_iterator::reset(session_t& session) void entries_iterator::reset(journal_t& journal)
{ {
entries_i = session.journal->entries.begin(); entries_i = journal.entries.begin();
entries_end = session.journal->entries.end(); entries_end = journal.entries.end();
entries_uninitialized = false; entries_uninitialized = false;
} }
@ -50,16 +50,16 @@ entry_t * entries_iterator::operator()()
return NULL; return NULL;
} }
void session_xacts_iterator::reset(session_t& session) void journal_xacts_iterator::reset(journal_t& journal)
{ {
entries.reset(session); entries.reset(journal);
entry_t * entry = entries(); entry_t * entry = entries();
if (entry != NULL) if (entry != NULL)
xacts.reset(*entry); xacts.reset(*entry);
} }
xact_t * session_xacts_iterator::operator()() xact_t * journal_xacts_iterator::operator()()
{ {
xact_t * xact = xacts(); xact_t * xact = xacts();
if (xact == NULL) { if (xact == NULL) {

View file

@ -119,15 +119,15 @@ public:
entries_iterator() : entries_uninitialized(true) { entries_iterator() : entries_uninitialized(true) {
TRACE_CTOR(entries_iterator, ""); TRACE_CTOR(entries_iterator, "");
} }
entries_iterator(session_t& session) : entries_uninitialized(true) { entries_iterator(journal_t& journal) : entries_uninitialized(true) {
TRACE_CTOR(entries_iterator, "session_t&"); TRACE_CTOR(entries_iterator, "journal_t&");
reset(session); reset(journal);
} }
virtual ~entries_iterator() throw() { virtual ~entries_iterator() throw() {
TRACE_DTOR(entries_iterator); TRACE_DTOR(entries_iterator);
} }
void reset(session_t& session); void reset(journal_t& journal);
entry_t * operator()(); entry_t * operator()();
}; };
@ -137,24 +137,24 @@ public:
* *
* Long. * Long.
*/ */
class session_xacts_iterator : public xacts_iterator class journal_xacts_iterator : public xacts_iterator
{ {
entries_iterator entries; entries_iterator entries;
entry_xacts_iterator xacts; entry_xacts_iterator xacts;
public: public:
session_xacts_iterator() { journal_xacts_iterator() {
TRACE_CTOR(session_xacts_iterator, ""); TRACE_CTOR(journal_xacts_iterator, "");
} }
session_xacts_iterator(session_t& session) { journal_xacts_iterator(journal_t& journal) {
TRACE_CTOR(session_xacts_iterator, "session_t&"); TRACE_CTOR(journal_xacts_iterator, "journal_t&");
reset(session); reset(journal);
} }
virtual ~session_xacts_iterator() throw() { virtual ~journal_xacts_iterator() throw() {
TRACE_DTOR(session_xacts_iterator); TRACE_DTOR(journal_xacts_iterator);
} }
void reset(session_t& session); void reset(journal_t& journal);
virtual xact_t * operator()(); virtual xact_t * operator()();
}; };

View file

@ -90,18 +90,20 @@ expr_t::parser_t::parse_dot_expr(std::istream& in,
ptr_op_t node(parse_value_term(in, tflags)); ptr_op_t node(parse_value_term(in, tflags));
if (node && ! tflags.has_flags(PARSE_SINGLE)) { if (node && ! tflags.has_flags(PARSE_SINGLE)) {
while (true) {
token_t& tok = next_token(in, tflags); token_t& tok = next_token(in, tflags);
if (tok.kind == token_t::DOT) { if (tok.kind == token_t::DOT) {
ptr_op_t prev(node); ptr_op_t prev(node);
node = new op_t(op_t::O_LOOKUP); node = new op_t(op_t::O_LOOKUP);
node->set_left(prev); node->set_left(prev);
node->set_right(parse_dot_expr(in, tflags)); node->set_right(parse_value_term(in, tflags));
if (! node->right()) if (! node->right())
throw_(parse_error, throw_(parse_error,
tok.symbol << " operator not followed by argument"); tok.symbol << " operator not followed by argument");
} else { } else {
push_token(tok); push_token(tok);
break;
}
} }
} }

View file

@ -93,7 +93,7 @@ report_t::report_t(session_t& _session) : session(_session)
void report_t::xacts_report(xact_handler_ptr handler) void report_t::xacts_report(xact_handler_ptr handler)
{ {
session_xacts_iterator walker(session); journal_xacts_iterator walker(*session.journal.get());
pass_down_xacts(chain_xact_handlers(*this, handler), walker); pass_down_xacts(chain_xact_handlers(*this, handler), walker);
session.clean_xacts(); session.clean_xacts();
} }
@ -110,7 +110,7 @@ void report_t::sum_all_accounts()
expr_t& expr(HANDLER(amount_).expr); expr_t& expr(HANDLER(amount_).expr);
expr.set_context(this); expr.set_context(this);
session_xacts_iterator walker(session); journal_xacts_iterator walker(*session.journal.get());
pass_down_xacts pass_down_xacts
(chain_xact_handlers(*this, xact_handler_ptr(new set_account_value(expr)), (chain_xact_handlers(*this, xact_handler_ptr(new set_account_value(expr)),
false), walker); false), walker);

View file

@ -150,7 +150,7 @@ std::size_t session_t::read_data(const string& master_account)
void session_t::clean_xacts() void session_t::clean_xacts()
{ {
session_xacts_iterator walker(*this); journal_xacts_iterator walker(*journal.get());
pass_down_xacts(xact_handler_ptr(new clear_xact_xdata), walker); pass_down_xacts(xact_handler_ptr(new clear_xact_xdata), walker);
} }