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

View file

@ -119,15 +119,15 @@ public:
entries_iterator() : entries_uninitialized(true) {
TRACE_CTOR(entries_iterator, "");
}
entries_iterator(session_t& session) : entries_uninitialized(true) {
TRACE_CTOR(entries_iterator, "session_t&");
reset(session);
entries_iterator(journal_t& journal) : entries_uninitialized(true) {
TRACE_CTOR(entries_iterator, "journal_t&");
reset(journal);
}
virtual ~entries_iterator() throw() {
TRACE_DTOR(entries_iterator);
}
void reset(session_t& session);
void reset(journal_t& journal);
entry_t * operator()();
};
@ -137,24 +137,24 @@ public:
*
* Long.
*/
class session_xacts_iterator : public xacts_iterator
class journal_xacts_iterator : public xacts_iterator
{
entries_iterator entries;
entry_xacts_iterator xacts;
public:
session_xacts_iterator() {
TRACE_CTOR(session_xacts_iterator, "");
journal_xacts_iterator() {
TRACE_CTOR(journal_xacts_iterator, "");
}
session_xacts_iterator(session_t& session) {
TRACE_CTOR(session_xacts_iterator, "session_t&");
reset(session);
journal_xacts_iterator(journal_t& journal) {
TRACE_CTOR(journal_xacts_iterator, "journal_t&");
reset(journal);
}
virtual ~session_xacts_iterator() throw() {
TRACE_DTOR(session_xacts_iterator);
virtual ~journal_xacts_iterator() throw() {
TRACE_DTOR(journal_xacts_iterator);
}
void reset(session_t& session);
void reset(journal_t& journal);
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));
if (node && ! tflags.has_flags(PARSE_SINGLE)) {
token_t& tok = next_token(in, tflags);
if (tok.kind == token_t::DOT) {
ptr_op_t prev(node);
node = new op_t(op_t::O_LOOKUP);
node->set_left(prev);
node->set_right(parse_dot_expr(in, tflags));
if (! node->right())
throw_(parse_error,
tok.symbol << " operator not followed by argument");
} else {
push_token(tok);
while (true) {
token_t& tok = next_token(in, tflags);
if (tok.kind == token_t::DOT) {
ptr_op_t prev(node);
node = new op_t(op_t::O_LOOKUP);
node->set_left(prev);
node->set_right(parse_value_term(in, tflags));
if (! node->right())
throw_(parse_error,
tok.symbol << " operator not followed by argument");
} else {
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)
{
session_xacts_iterator walker(session);
journal_xacts_iterator walker(*session.journal.get());
pass_down_xacts(chain_xact_handlers(*this, handler), walker);
session.clean_xacts();
}
@ -110,7 +110,7 @@ void report_t::sum_all_accounts()
expr_t& expr(HANDLER(amount_).expr);
expr.set_context(this);
session_xacts_iterator walker(session);
journal_xacts_iterator walker(*session.journal.get());
pass_down_xacts
(chain_xact_handlers(*this, xact_handler_ptr(new set_account_value(expr)),
false), walker);

View file

@ -150,7 +150,7 @@ std::size_t session_t::read_data(const string& master_account)
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);
}