Removed reference to session_t from the iterators module.
This commit is contained in:
parent
6ca01af594
commit
47567307ce
5 changed files with 37 additions and 35 deletions
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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()();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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)) {
|
||||||
token_t& tok = next_token(in, tflags);
|
while (true) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue