summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am80
-rw-r--r--Makefile.in129
-rw-r--r--src/balance.h194
-rw-r--r--src/balpair.h235
-rw-r--r--src/value.h3
-rw-r--r--tests/UnitTests.h2
-rw-r--r--tests/numerics/t_amount.cc5
-rw-r--r--tests/numerics/t_balance.cc25
-rw-r--r--tests/numerics/t_balance.h30
-rw-r--r--tests/utility/t_times.cc (renamed from tests/numerics/t_times.cc)2
-rw-r--r--tests/utility/t_times.h (renamed from tests/numerics/t_times.h)0
-rw-r--r--tests/utility/t_utils.cc10
-rw-r--r--tests/utility/t_utils.h28
13 files changed, 458 insertions, 285 deletions
diff --git a/Makefile.am b/Makefile.am
index 251be397..59d2add1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -92,48 +92,50 @@ endif
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
-libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
+libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
libpyledger_la_SOURCES = \
- src/py_utils.cc \
- src/py_times.cc \
+ src/py_utils.cc \
+ src/py_times.cc \
src/py_amount.cc
pkginclude_HEADERS = \
- src/amount.h \
- src/balance.h \
- src/commodity.h \
- src/binary.h \
- src/context.h \
- src/csv.h \
- src/derive.h \
- src/emacs.h \
- src/fdstream.hpp \
- src/format.h \
- src/gnucash.h \
- src/journal.h \
- src/ledger.h \
- src/mask.h \
- src/ofx.h \
- src/option.h \
- src/parser.h \
- src/pyinterp.h \
- src/pyfstream.h \
- src/pyledger.h \
- src/qif.h \
- src/quotes.h \
- src/reconcile.h \
- src/register.h \
- src/report.h \
- src/session.h \
- src/system.hh \
- src/textual.h \
- src/times.h \
- src/transform.h \
- src/utils.h \
- src/value.h \
- src/xml.h \
+ src/amount.h \
+ src/balpair.h \
+ src/balance.h \
+ src/binary.h \
+ src/commodity.h \
+ src/context.h \
+ src/csv.h \
+ src/derive.h \
+ src/emacs.h \
+ src/flags.h \
+ src/format.h \
+ src/gnucash.h \
+ src/journal.h \
+ src/ledger.h \
+ src/mask.h \
+ src/ofx.h \
+ src/option.h \
+ src/parser.h \
+ src/pyfstream.h \
+ src/pyinterp.h \
+ src/pyledger.h \
+ src/pyutils.h \
+ src/qif.h \
+ src/quotes.h \
+ src/reconcile.h \
+ src/register.h \
+ src/report.h \
+ src/scoped_execute.h \
+ src/session.h \
+ src/textual.h \
+ src/times.h \
+ src/transform.h \
+ src/utils.h \
+ src/value.h \
+ src/xml.h \
src/xpath.h
######################################################################
@@ -214,9 +216,11 @@ check_PROGRAMS = $(TESTS)
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
\
- tests/numerics/t_times.cc \
+ tests/utility/t_utils.cc \
+ tests/utility/t_times.cc \
tests/numerics/t_commodity.cc \
- tests/numerics/t_amount.cc
+ tests/numerics/t_amount.cc \
+ tests/numerics/t_balance.cc
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
UnitTests_LDFLAGS = $(LIBADD_DL)
diff --git a/Makefile.in b/Makefile.in
index 7f05f1d6..1d270283 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -132,8 +132,9 @@ am_PyUnitTests_OBJECTS =
PyUnitTests_OBJECTS = $(am_PyUnitTests_OBJECTS)
PyUnitTests_LDADD = $(LDADD)
nodist_UnitTests_OBJECTS = UnitTests-UnitTests.$(OBJEXT) \
- UnitTests-t_times.$(OBJEXT) UnitTests-t_commodity.$(OBJEXT) \
- UnitTests-t_amount.$(OBJEXT)
+ UnitTests-t_utils.$(OBJEXT) UnitTests-t_times.$(OBJEXT) \
+ UnitTests-t_commodity.$(OBJEXT) UnitTests-t_amount.$(OBJEXT) \
+ UnitTests-t_balance.$(OBJEXT)
UnitTests_OBJECTS = $(nodist_UnitTests_OBJECTS)
UnitTests_DEPENDENCIES = $(lib_LTLIBRARIES) gdtoa/libgdtoa.la
UnitTests_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
@@ -373,44 +374,46 @@ libledger_la_SOURCES = src/utils.cc src/times.cc src/mask.cc \
libpyledger_la_CPPFLAGS = $(libledger_la_CPPFLAGS)
libpyledger_la_LDFLAGS = -release $(PACKAGE_VERSION)
libpyledger_la_SOURCES = \
- src/py_utils.cc \
- src/py_times.cc \
+ src/py_utils.cc \
+ src/py_times.cc \
src/py_amount.cc
pkginclude_HEADERS = \
- src/amount.h \
- src/balance.h \
- src/commodity.h \
- src/binary.h \
- src/context.h \
- src/csv.h \
- src/derive.h \
- src/emacs.h \
- src/fdstream.hpp \
- src/format.h \
- src/gnucash.h \
- src/journal.h \
- src/ledger.h \
- src/mask.h \
- src/ofx.h \
- src/option.h \
- src/parser.h \
- src/pyinterp.h \
- src/pyfstream.h \
- src/pyledger.h \
- src/qif.h \
- src/quotes.h \
- src/reconcile.h \
- src/register.h \
- src/report.h \
- src/session.h \
- src/system.hh \
- src/textual.h \
- src/times.h \
- src/transform.h \
- src/utils.h \
- src/value.h \
- src/xml.h \
+ src/amount.h \
+ src/balpair.h \
+ src/balance.h \
+ src/binary.h \
+ src/commodity.h \
+ src/context.h \
+ src/csv.h \
+ src/derive.h \
+ src/emacs.h \
+ src/flags.h \
+ src/format.h \
+ src/gnucash.h \
+ src/journal.h \
+ src/ledger.h \
+ src/mask.h \
+ src/ofx.h \
+ src/option.h \
+ src/parser.h \
+ src/pyfstream.h \
+ src/pyinterp.h \
+ src/pyledger.h \
+ src/pyutils.h \
+ src/qif.h \
+ src/quotes.h \
+ src/reconcile.h \
+ src/register.h \
+ src/report.h \
+ src/scoped_execute.h \
+ src/session.h \
+ src/textual.h \
+ src/times.h \
+ src/transform.h \
+ src/utils.h \
+ src/value.h \
+ src/xml.h \
src/xpath.h
ledger_CPPFLAGS = $(libledger_la_CPPFLAGS)
@@ -439,9 +442,11 @@ dist_lisp_LISP = lisp/ledger.el lisp/timeclock.el
@HAVE_BOOST_PYTHON_TRUE@ $(am__append_16) $(am__append_17)
nodist_UnitTests_SOURCES = tests/UnitTests.cc \
\
- tests/numerics/t_times.cc \
+ tests/utility/t_utils.cc \
+ tests/utility/t_times.cc \
tests/numerics/t_commodity.cc \
- tests/numerics/t_amount.cc
+ tests/numerics/t_amount.cc \
+ tests/numerics/t_balance.cc
UnitTests_CPPFLAGS = -I$(srcdir)/tests $(libledger_la_CPPFLAGS)
UnitTests_LDFLAGS = $(LIBADD_DL)
@@ -596,8 +601,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-UnitTests.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_amount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_balance.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_commodity.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_times.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnitTests-t_utils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ledger-option.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libledger_la-amount.Plo@am__quote@
@@ -880,19 +887,33 @@ UnitTests-UnitTests.obj: tests/UnitTests.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-UnitTests.obj `if test -f 'tests/UnitTests.cc'; then $(CYGPATH_W) 'tests/UnitTests.cc'; else $(CYGPATH_W) '$(srcdir)/tests/UnitTests.cc'; fi`
-UnitTests-t_times.o: tests/numerics/t_times.cc
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.o -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.o `test -f 'tests/numerics/t_times.cc' || echo '$(srcdir)/'`tests/numerics/t_times.cc
+UnitTests-t_utils.o: tests/utility/t_utils.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_utils.o -MD -MP -MF $(DEPDIR)/UnitTests-t_utils.Tpo -c -o UnitTests-t_utils.o `test -f 'tests/utility/t_utils.cc' || echo '$(srcdir)/'`tests/utility/t_utils.cc
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_utils.Tpo $(DEPDIR)/UnitTests-t_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_utils.cc' object='UnitTests-t_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_utils.o `test -f 'tests/utility/t_utils.cc' || echo '$(srcdir)/'`tests/utility/t_utils.cc
+
+UnitTests-t_utils.obj: tests/utility/t_utils.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_utils.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_utils.Tpo -c -o UnitTests-t_utils.obj `if test -f 'tests/utility/t_utils.cc'; then $(CYGPATH_W) 'tests/utility/t_utils.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_utils.cc'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_utils.Tpo $(DEPDIR)/UnitTests-t_utils.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_utils.cc' object='UnitTests-t_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_utils.obj `if test -f 'tests/utility/t_utils.cc'; then $(CYGPATH_W) 'tests/utility/t_utils.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_utils.cc'; fi`
+
+UnitTests-t_times.o: tests/utility/t_times.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.o -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.o `test -f 'tests/utility/t_times.cc' || echo '$(srcdir)/'`tests/utility/t_times.cc
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_times.cc' object='UnitTests-t_times.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_times.cc' object='UnitTests-t_times.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.o `test -f 'tests/numerics/t_times.cc' || echo '$(srcdir)/'`tests/numerics/t_times.cc
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.o `test -f 'tests/utility/t_times.cc' || echo '$(srcdir)/'`tests/utility/t_times.cc
-UnitTests-t_times.obj: tests/numerics/t_times.cc
-@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.obj `if test -f 'tests/numerics/t_times.cc'; then $(CYGPATH_W) 'tests/numerics/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_times.cc'; fi`
+UnitTests-t_times.obj: tests/utility/t_times.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_times.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_times.Tpo -c -o UnitTests-t_times.obj `if test -f 'tests/utility/t_times.cc'; then $(CYGPATH_W) 'tests/utility/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_times.cc'; fi`
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_times.Tpo $(DEPDIR)/UnitTests-t_times.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_times.cc' object='UnitTests-t_times.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/utility/t_times.cc' object='UnitTests-t_times.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.obj `if test -f 'tests/numerics/t_times.cc'; then $(CYGPATH_W) 'tests/numerics/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_times.cc'; fi`
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_times.obj `if test -f 'tests/utility/t_times.cc'; then $(CYGPATH_W) 'tests/utility/t_times.cc'; else $(CYGPATH_W) '$(srcdir)/tests/utility/t_times.cc'; fi`
UnitTests-t_commodity.o: tests/numerics/t_commodity.cc
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_commodity.o -MD -MP -MF $(DEPDIR)/UnitTests-t_commodity.Tpo -c -o UnitTests-t_commodity.o `test -f 'tests/numerics/t_commodity.cc' || echo '$(srcdir)/'`tests/numerics/t_commodity.cc
@@ -922,6 +943,20 @@ UnitTests-t_amount.obj: tests/numerics/t_amount.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_amount.obj `if test -f 'tests/numerics/t_amount.cc'; then $(CYGPATH_W) 'tests/numerics/t_amount.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_amount.cc'; fi`
+UnitTests-t_balance.o: tests/numerics/t_balance.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_balance.o -MD -MP -MF $(DEPDIR)/UnitTests-t_balance.Tpo -c -o UnitTests-t_balance.o `test -f 'tests/numerics/t_balance.cc' || echo '$(srcdir)/'`tests/numerics/t_balance.cc
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_balance.Tpo $(DEPDIR)/UnitTests-t_balance.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_balance.cc' object='UnitTests-t_balance.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_balance.o `test -f 'tests/numerics/t_balance.cc' || echo '$(srcdir)/'`tests/numerics/t_balance.cc
+
+UnitTests-t_balance.obj: tests/numerics/t_balance.cc
+@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnitTests-t_balance.obj -MD -MP -MF $(DEPDIR)/UnitTests-t_balance.Tpo -c -o UnitTests-t_balance.obj `if test -f 'tests/numerics/t_balance.cc'; then $(CYGPATH_W) 'tests/numerics/t_balance.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_balance.cc'; fi`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/UnitTests-t_balance.Tpo $(DEPDIR)/UnitTests-t_balance.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/numerics/t_balance.cc' object='UnitTests-t_balance.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(UnitTests_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnitTests-t_balance.obj `if test -f 'tests/numerics/t_balance.cc'; then $(CYGPATH_W) 'tests/numerics/t_balance.cc'; else $(CYGPATH_W) '$(srcdir)/tests/numerics/t_balance.cc'; fi`
+
ledger-option.o: src/option.cc
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ledger_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ledger-option.o -MD -MP -MF $(DEPDIR)/ledger-option.Tpo -c -o ledger-option.o `test -f 'src/option.cc' || echo '$(srcdir)/'`src/option.cc
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/ledger-option.Tpo $(DEPDIR)/ledger-option.Po
diff --git a/src/balance.h b/src/balance.h
index 40f1eec0..614bffc7 100644
--- a/src/balance.h
+++ b/src/balance.h
@@ -230,200 +230,6 @@ inline std::ostream& operator<<(std::ostream& out, const balance_t& bal) {
return out;
}
-class balance_pair_t
- : public equality_comparable<balance_pair_t,
- equality_comparable<balance_pair_t, balance_t,
- equality_comparable<balance_pair_t, amount_t,
- additive<balance_pair_t,
- additive<balance_pair_t, balance_t,
- additive<balance_pair_t, amount_t,
- multiplicative<balance_pair_t, unsigned long,
- multiplicative<balance_pair_t, long,
- multiplicative<balance_pair_t, amount_t> > > > > > > > >
-{
- balance_t quantity;
- optional<balance_t> cost;
-
- friend class value_t;
- friend class entry_base_t;
-
-public:
- // constructors
- balance_pair_t() {
- TRACE_CTOR(balance_pair_t, "");
- }
- balance_pair_t(const balance_pair_t& bal_pair)
- : quantity(bal_pair.quantity), cost(bal_pair.cost) {
- TRACE_CTOR(balance_pair_t, "copy");
- }
- balance_pair_t(const balance_t& _quantity)
- : quantity(_quantity) {
- TRACE_CTOR(balance_pair_t, "const balance_t&");
- }
- balance_pair_t(const amount_t& _quantity)
- : quantity(_quantity) {
- TRACE_CTOR(balance_pair_t, "const amount_t&");
- }
- ~balance_pair_t() {
- TRACE_DTOR(balance_pair_t);
- }
-
- // assignment operator
- balance_pair_t& operator=(const balance_pair_t& bal_pair) {
- if (this != &bal_pair) {
- quantity = bal_pair.quantity;
- cost = bal_pair.cost;
- }
- return *this;
- }
-
- // in-place arithmetic
- balance_pair_t& operator+=(const balance_pair_t& bal_pair) {
- if (bal_pair.cost && ! cost)
- cost = quantity;
- quantity += bal_pair.quantity;
- if (cost)
- *cost += bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
- return *this;
- }
- balance_pair_t& operator-=(const balance_pair_t& bal_pair) {
- if (bal_pair.cost && ! cost)
- cost = quantity;
- quantity -= bal_pair.quantity;
- if (cost)
- *cost -= bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
- return *this;
- }
-
- // comparison
- bool operator==(const balance_pair_t& bal_pair) const {
- return quantity == bal_pair.quantity;
- }
- bool operator==(const balance_t& bal) const {
- return quantity == bal;
- }
- bool operator==(const amount_t& amt) const {
- return quantity == amt;
- }
-
- balance_pair_t& operator*=(const amount_t& amt) {
- quantity *= amt;
- if (cost)
- *cost *= amt;
- return *this;
- }
- balance_pair_t& operator/=(const amount_t& amt) {
- quantity /= amt;
- if (cost)
- *cost /= amt;
- return *this;
- }
-
- // unary negation
- void in_place_negate() {
- quantity.in_place_negate();
- if (cost)
- cost->in_place_negate();
- }
- balance_pair_t negate() const {
- balance_pair_t temp = *this;
- temp.in_place_negate();
- return temp;
- }
- balance_pair_t operator-() const {
- return negate();
- }
-
- // test for non-zero (use ! for zero)
- operator bool() const {
- return quantity;
- }
-
- bool is_realzero() const {
- return ((! cost || cost->is_realzero()) && quantity.is_realzero());
- }
-
- balance_pair_t abs() const {
- balance_pair_t temp = *this;
- temp.quantity = temp.quantity.abs();
- if (temp.cost)
- temp.cost = temp.cost->abs();
- return temp;
- }
-
- optional<amount_t> amount(const optional<const commodity_t&>& commodity =
- optional<const commodity_t&>()) const {
- return quantity.amount(commodity);
- }
- optional<balance_t> value(const optional<moment_t>& moment =
- optional<moment_t>()) const {
- return quantity.value(moment);
- }
-
- balance_t
- strip_annotations(const bool keep_price = amount_t::keep_price,
- const bool keep_date = amount_t::keep_date,
- const bool keep_tag = amount_t::keep_tag) const {
- return quantity.strip_annotations(keep_price, keep_date, keep_tag);
- }
-
- void print(std::ostream& out, const int first_width,
- const int latter_width = -1) const {
- quantity.print(out, first_width, latter_width);
- }
-
- balance_pair_t& add(const amount_t& amt,
- const optional<amount_t>& a_cost = optional<amount_t>()) {
- if (a_cost && ! cost)
- cost = quantity;
- quantity += amt;
- if (cost)
- *cost += a_cost ? *a_cost : amt;
- return *this;
- }
-
- bool valid() {
- return quantity.valid() && (! cost || cost->valid());
- }
-
- void in_place_reduce() {
- quantity.in_place_reduce();
- if (cost) cost->in_place_reduce();
- }
- balance_pair_t reduce() const {
- balance_pair_t temp(*this);
- temp.in_place_reduce();
- return temp;
- }
-
- void in_place_round() {
- quantity = quantity.round();
- if (cost)
- cost = cost->round();
- }
- balance_pair_t round() const {
- balance_pair_t temp(*this);
- temp.in_place_round();
- return temp;
- }
-
- balance_pair_t unround() const {
- balance_pair_t temp(quantity.unround());
- if (cost)
- temp.cost = cost->unround();
- return temp;
- }
-
- friend std::ostream& operator<<(std::ostream& out,
- const balance_pair_t& bal_pair);
-};
-
-inline std::ostream& operator<<(std::ostream& out,
- const balance_pair_t& bal_pair) {
- bal_pair.quantity.print(out, 12);
- return out;
-}
-
} // namespace ledger
#endif // _BALANCE_H
diff --git a/src/balpair.h b/src/balpair.h
new file mode 100644
index 00000000..358b74f4
--- /dev/null
+++ b/src/balpair.h
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2003-2007, John Wiegley. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of New Artisans LLC nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _BALPAIR_H
+#define _BARPAIR_H
+
+#include "balance.h"
+
+namespace ledger {
+
+class balance_pair_t
+ : public equality_comparable<balance_pair_t,
+ equality_comparable<balance_pair_t, balance_t,
+ equality_comparable<balance_pair_t, amount_t,
+ additive<balance_pair_t,
+ additive<balance_pair_t, balance_t,
+ additive<balance_pair_t, amount_t,
+ multiplicative<balance_pair_t, unsigned long,
+ multiplicative<balance_pair_t, long,
+ multiplicative<balance_pair_t, amount_t> > > > > > > > >
+{
+ balance_t quantity;
+ optional<balance_t> cost;
+
+ friend class value_t;
+ friend class entry_base_t;
+
+public:
+ // constructors
+ balance_pair_t() {
+ TRACE_CTOR(balance_pair_t, "");
+ }
+ balance_pair_t(const balance_pair_t& bal_pair)
+ : quantity(bal_pair.quantity), cost(bal_pair.cost) {
+ TRACE_CTOR(balance_pair_t, "copy");
+ }
+ balance_pair_t(const balance_t& _quantity)
+ : quantity(_quantity) {
+ TRACE_CTOR(balance_pair_t, "const balance_t&");
+ }
+ balance_pair_t(const amount_t& _quantity)
+ : quantity(_quantity) {
+ TRACE_CTOR(balance_pair_t, "const amount_t&");
+ }
+ ~balance_pair_t() {
+ TRACE_DTOR(balance_pair_t);
+ }
+
+ // assignment operator
+ balance_pair_t& operator=(const balance_pair_t& bal_pair) {
+ if (this != &bal_pair) {
+ quantity = bal_pair.quantity;
+ cost = bal_pair.cost;
+ }
+ return *this;
+ }
+
+ // in-place arithmetic
+ balance_pair_t& operator+=(const balance_pair_t& bal_pair) {
+ if (bal_pair.cost && ! cost)
+ cost = quantity;
+ quantity += bal_pair.quantity;
+ if (cost)
+ *cost += bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
+ return *this;
+ }
+ balance_pair_t& operator-=(const balance_pair_t& bal_pair) {
+ if (bal_pair.cost && ! cost)
+ cost = quantity;
+ quantity -= bal_pair.quantity;
+ if (cost)
+ *cost -= bal_pair.cost ? *bal_pair.cost : bal_pair.quantity;
+ return *this;
+ }
+
+ // comparison
+ bool operator==(const balance_pair_t& bal_pair) const {
+ return quantity == bal_pair.quantity;
+ }
+ bool operator==(const balance_t& bal) const {
+ return quantity == bal;
+ }
+ bool operator==(const amount_t& amt) const {
+ return quantity == amt;
+ }
+
+ balance_pair_t& operator*=(const amount_t& amt) {
+ quantity *= amt;
+ if (cost)
+ *cost *= amt;
+ return *this;
+ }
+ balance_pair_t& operator/=(const amount_t& amt) {
+ quantity /= amt;
+ if (cost)
+ *cost /= amt;
+ return *this;
+ }
+
+ // unary negation
+ void in_place_negate() {
+ quantity.in_place_negate();
+ if (cost)
+ cost->in_place_negate();
+ }
+ balance_pair_t negate() const {
+ balance_pair_t temp = *this;
+ temp.in_place_negate();
+ return temp;
+ }
+ balance_pair_t operator-() const {
+ return negate();
+ }
+
+ // test for non-zero (use ! for zero)
+ operator bool() const {
+ return quantity;
+ }
+
+ bool is_realzero() const {
+ return ((! cost || cost->is_realzero()) && quantity.is_realzero());
+ }
+
+ balance_pair_t abs() const {
+ balance_pair_t temp = *this;
+ temp.quantity = temp.quantity.abs();
+ if (temp.cost)
+ temp.cost = temp.cost->abs();
+ return temp;
+ }
+
+ optional<amount_t> amount(const optional<const commodity_t&>& commodity =
+ optional<const commodity_t&>()) const {
+ return quantity.amount(commodity);
+ }
+ optional<balance_t> value(const optional<moment_t>& moment =
+ optional<moment_t>()) const {
+ return quantity.value(moment);
+ }
+
+ balance_t
+ strip_annotations(const bool keep_price = amount_t::keep_price,
+ const bool keep_date = amount_t::keep_date,
+ const bool keep_tag = amount_t::keep_tag) const {
+ return quantity.strip_annotations(keep_price, keep_date, keep_tag);
+ }
+
+ void print(std::ostream& out, const int first_width,
+ const int latter_width = -1) const {
+ quantity.print(out, first_width, latter_width);
+ }
+
+ balance_pair_t& add(const amount_t& amt,
+ const optional<amount_t>& a_cost = optional<amount_t>()) {
+ if (a_cost && ! cost)
+ cost = quantity;
+ quantity += amt;
+ if (cost)
+ *cost += a_cost ? *a_cost : amt;
+ return *this;
+ }
+
+ bool valid() {
+ return quantity.valid() && (! cost || cost->valid());
+ }
+
+ void in_place_reduce() {
+ quantity.in_place_reduce();
+ if (cost) cost->in_place_reduce();
+ }
+ balance_pair_t reduce() const {
+ balance_pair_t temp(*this);
+ temp.in_place_reduce();
+ return temp;
+ }
+
+ void in_place_round() {
+ quantity = quantity.round();
+ if (cost)
+ cost = cost->round();
+ }
+ balance_pair_t round() const {
+ balance_pair_t temp(*this);
+ temp.in_place_round();
+ return temp;
+ }
+
+ balance_pair_t unround() const {
+ balance_pair_t temp(quantity.unround());
+ if (cost)
+ temp.cost = cost->unround();
+ return temp;
+ }
+
+ friend std::ostream& operator<<(std::ostream& out,
+ const balance_pair_t& bal_pair);
+};
+
+inline std::ostream& operator<<(std::ostream& out,
+ const balance_pair_t& bal_pair) {
+ bal_pair.quantity.print(out, 12);
+ return out;
+}
+
+} // namespace ledger
+
+#endif // _BALPAIR_H
diff --git a/src/value.h b/src/value.h
index a6bb091f..eba9f6a0 100644
--- a/src/value.h
+++ b/src/value.h
@@ -32,8 +32,7 @@
#ifndef _VALUE_H
#define _VALUE_H
-#include "amount.h"
-#include "balance.h"
+#include "balpair.h" // pulls in balance.h and amount.h
namespace ledger {
diff --git a/tests/UnitTests.h b/tests/UnitTests.h
index 5edfb5d3..e7027cf4 100644
--- a/tests/UnitTests.h
+++ b/tests/UnitTests.h
@@ -19,4 +19,6 @@ using namespace ledger;
#define assertMessage(x,y) CPPUNIT_ASSERT_MESSAGE(x,y)
#define assertThrow(x,y) CPPUNIT_ASSERT_THROW(x,y)
+#define internalAmount(x) amount_t::exact(x)
+
#endif /* _UNITTESTS_H */
diff --git a/tests/numerics/t_amount.cc b/tests/numerics/t_amount.cc
index 67ea1781..a59ff2ea 100644
--- a/tests/numerics/t_amount.cc
+++ b/tests/numerics/t_amount.cc
@@ -1,7 +1,5 @@
#include "t_amount.h"
-#define internalAmount(x) amount_t::exact(x)
-
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AmountTestCase, "numerics");
void AmountTestCase::setUp()
@@ -11,7 +9,8 @@ void AmountTestCase::setUp()
// Cause the display precision for dollars to be initialized to 2.
amount_t x1("$1.00");
assertTrue(x1);
- amount_t::stream_fullstrings = true; // makes error reports from UnitTests accurate
+
+ amount_t::stream_fullstrings = true; // make reports from UnitTests accurate
}
void AmountTestCase::tearDown()
diff --git a/tests/numerics/t_balance.cc b/tests/numerics/t_balance.cc
new file mode 100644
index 00000000..ca759836
--- /dev/null
+++ b/tests/numerics/t_balance.cc
@@ -0,0 +1,25 @@
+#include "t_balance.h"
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(BalanceTestCase, "numerics");
+
+void BalanceTestCase::setUp()
+{
+ ledger::set_session_context(&session);
+
+ // Cause the display precision for dollars to be initialized to 2.
+ amount_t x1("$1.00");
+ assertTrue(x1);
+
+ amount_t::stream_fullstrings = true; // make reports from UnitTests accurate
+}
+
+void BalanceTestCase::tearDown()
+{
+ amount_t::stream_fullstrings = false;
+
+ ledger::set_session_context();
+}
+
+void BalanceTestCase::testConstructors()
+{
+}
diff --git a/tests/numerics/t_balance.h b/tests/numerics/t_balance.h
new file mode 100644
index 00000000..7c27f7e8
--- /dev/null
+++ b/tests/numerics/t_balance.h
@@ -0,0 +1,30 @@
+#ifndef _T_BALANCE_H
+#define _T_BALANCE_H
+
+#include "UnitTests.h"
+
+class BalanceTestCase : public CPPUNIT_NS::TestCase
+{
+ CPPUNIT_TEST_SUITE(BalanceTestCase);
+
+ CPPUNIT_TEST(testConstructors);
+
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+ ledger::session_t session;
+
+ BalanceTestCase() {}
+ virtual ~BalanceTestCase() {}
+
+ virtual void setUp();
+ virtual void tearDown();
+
+ void testConstructors();
+
+private:
+ BalanceTestCase(const BalanceTestCase &copy);
+ void operator=(const BalanceTestCase &copy);
+};
+
+#endif // _T_BALANCE_H
diff --git a/tests/numerics/t_times.cc b/tests/utility/t_times.cc
index 0d89d03f..c2d6fe64 100644
--- a/tests/numerics/t_times.cc
+++ b/tests/utility/t_times.cc
@@ -1,6 +1,6 @@
#include "t_times.h"
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "numerics");
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "utility");
void DateTimeTestCase::setUp() {}
void DateTimeTestCase::tearDown() {}
diff --git a/tests/numerics/t_times.h b/tests/utility/t_times.h
index 5bbadf21..5bbadf21 100644
--- a/tests/numerics/t_times.h
+++ b/tests/utility/t_times.h
diff --git a/tests/utility/t_utils.cc b/tests/utility/t_utils.cc
new file mode 100644
index 00000000..eda84a3a
--- /dev/null
+++ b/tests/utility/t_utils.cc
@@ -0,0 +1,10 @@
+#include "t_utils.h"
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(UtilitiesTestCase, "utility");
+
+void UtilitiesTestCase::setUp() {}
+void UtilitiesTestCase::tearDown() {}
+
+void UtilitiesTestCase::testConstructors()
+{
+}
diff --git a/tests/utility/t_utils.h b/tests/utility/t_utils.h
new file mode 100644
index 00000000..97154bae
--- /dev/null
+++ b/tests/utility/t_utils.h
@@ -0,0 +1,28 @@
+#ifndef _T_UTILS_H
+#define _T_UTILS_H
+
+#include "UnitTests.h"
+
+class UtilitiesTestCase : public CPPUNIT_NS::TestCase
+{
+ CPPUNIT_TEST_SUITE(UtilitiesTestCase);
+
+ CPPUNIT_TEST(testConstructors);
+
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+ UtilitiesTestCase() {}
+ virtual ~UtilitiesTestCase() {}
+
+ virtual void setUp();
+ virtual void tearDown();
+
+ void testConstructors();
+
+private:
+ UtilitiesTestCase(const UtilitiesTestCase &copy);
+ void operator=(const UtilitiesTestCase &copy);
+};
+
+#endif /* _T_UTILS_H */