diff --git a/.gitignore b/.gitignore index a2dc7a58..a76601ff 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ /missing /pending /stamp-h1 +/system.hh.gch /texinfo.tex AUTHORS INSTALL diff --git a/Makefile.am b/Makefile.am index 72ff6f38..80a0f1aa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -163,10 +163,9 @@ if USE_PCH nodist_libledger_la_SOURCES = system.hh.gch BUILT_SOURCES += system.hh.gch -CLEANFILES += system.hh.gch system.hh +CLEANFILES += system.hh.gch $(top_builddir)/system.hh.gch: $(srcdir)/system.hh $(top_builddir)/acconf.h - echo "#include \"$(srcdir)/system.hh\"" > $(top_builddir)/system.hh $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(libledger_la_CPPFLAGS) \ $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) \ diff --git a/acprep b/acprep index 75226516..ff20b1fd 100755 --- a/acprep +++ b/acprep @@ -86,8 +86,7 @@ CXXFLAGS="$CXXFLAGS -Wwrite-strings" while [ -n "$1" ]; do case "$1" in --devel) - #SWITCHES="$SWITCHES --disable-shared --enable-pch" - SWITCHES="$SWITCHES --disable-shared" + SWITCHES="$SWITCHES --disable-shared --enable-pch" CPPFLAGS="$CPPFLAGS -DBOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING=1" CPPFLAGS="$CPPFLAGS -DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE=1" shift 1 ;; @@ -161,7 +160,7 @@ fi # errors and warnings much easier. if [ -f Makefile ]; then - perl -i -pe 's/^\t(\$\((LIBTOOL|CXX)\).*)/\t\@echo " " CXX \$\@;$1 > \/dev\/null/;' Makefile + perl -i -pe 's/^\t(\$\((LIBTOOL|CXX)\).*?\.cc)$/\t\@echo " " CXX \$\@;$1 > \/dev\/null/;' Makefile perl -i -pe 's/^\tmv -f/\t\@mv -f/;' Makefile perl -i -pe 's/^\t(\$\((.*?)LINK\).*)/\t\@echo " " LD \$\@;$1 > \/dev\/null/;' Makefile fi diff --git a/myacprep b/myacprep new file mode 100755 index 00000000..745c9edd --- /dev/null +++ b/myacprep @@ -0,0 +1,5 @@ +#!/bin/sh + +# This is how I run acprep on my OS X Leopard machine. + +./acprep --local --devel --debug --boost mt-1_35 diff --git a/report.cc b/report.cc index f250a1c4..f746b3a0 100644 --- a/report.cc +++ b/report.cc @@ -463,10 +463,32 @@ void report_t::entry_report(const entry_t& entry, const string& format) { } +value_t report_t::get_amount_expr(call_scope_t& scope) +{ + return amount_expr.calc(scope); +} + +value_t report_t::get_total_expr(call_scope_t& scope) +{ + return total_expr.calc(scope); +} + expr_t::ptr_op_t report_t::lookup(const string& name) { const char * p = name.c_str(); switch (*p) { + case 'f': + if (std::strncmp(p, "fmt_", 4) == 0) { + p = p + 4; + switch (*p) { + case 't': + return MAKE_FUNCTOR(report_t::get_amount_expr); + case 'T': + return MAKE_FUNCTOR(report_t::get_total_expr); + } + } + break; + case 'o': if (std::strncmp(p, "opt_", 4) == 0) { p = p + 4; diff --git a/report.h b/report.h index b160c15b..6bcd8e88 100644 --- a/report.h +++ b/report.h @@ -238,9 +238,8 @@ public: // Formatting functions // - value_t get_amount_expr(call_scope_t&) { - return NULL_VALUE; - } + value_t get_amount_expr(call_scope_t& scope); + value_t get_total_expr(call_scope_t& scope); // // Scope members diff --git a/xact.cc b/xact.cc index d9886752..02dc1842 100644 --- a/xact.cc +++ b/xact.cc @@ -86,6 +86,13 @@ namespace { return xact.amount; } + value_t get_total(xact_t& xact) { + if (xact.xdata_) + return xact.xdata_->total; + else + return xact.amount; + } + value_t get_cost(xact_t& xact) { return xact.cost ? *xact.cost : xact.amount; } @@ -134,15 +141,6 @@ namespace { return long(xact.end_line); } - // xdata_t members... - - value_t get_total(xact_t& xact) { - if (xact.xdata_) - return xact.xdata_->total; - else - return xact.amount; - } - template value_t get_wrapper(call_scope_t& scope) { return (*Func)(find_scope(scope)); @@ -187,6 +185,13 @@ expr_t::ptr_op_t xact_t::lookup(const string& name) case 'p': if (name == "pending") return expr_t::op_t::wrap_value(2L); + else if (name == "payee") + return WRAP_FUNCTOR(get_wrapper<&get_payee>); + break; + + case 't': + if (name[1] == '\0' || name == "total") + return WRAP_FUNCTOR(get_wrapper<&get_total>); break; case 'u':