[Gnucash-changes] replace the algo in xaccTransGetImbalance() with
a higher-performance
Linas Vepstas
linas at cvs.gnucash.org
Mon Jul 5 23:36:48 EDT 2004
Log Message:
-----------
replace the algo in xaccTransGetImbalance() with a higher-performance version
also, clean up some debug outp[ut printing
Modified Files:
--------------
gnucash/src/engine:
Transaction.c
Revision Data
-------------
Index: Transaction.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Transaction.c,v
retrieving revision 1.313
retrieving revision 1.314
diff -Lsrc/engine/Transaction.c -Lsrc/engine/Transaction.c -u -r1.313 -r1.314
--- src/engine/Transaction.c
+++ src/engine/Transaction.c
@@ -749,7 +749,7 @@
xaccSplitSetAmount (Split *s, gnc_numeric amt)
{
if(!s) return;
- ENTER ("split=%p old amt=%lld/%lld new amt=%lld/%lld", s,
+ ENTER ("(split=%p) old amt=%lld/%lld new amt=%lld/%lld", s,
s->amount.num, s->amount.denom, amt.num, amt.denom);
check_open (s->parent);
@@ -764,7 +764,7 @@
xaccSplitSetValue (Split *s, gnc_numeric amt)
{
if(!s) return;
- ENTER ("split=%p old val=%lld/%lld new val=%lld/%lld", s,
+ ENTER ("(split=%p) old val=%lld/%lld new val=%lld/%lld", s,
s->value.num, s->value.denom, amt.num, amt.denom);
check_open (s->parent);
@@ -1006,7 +1006,7 @@
if (!trans) return;
- ENTER ("addr=%p", trans);
+ ENTER ("(addr=%p)", trans);
if (((char *) 1) == trans->num)
{
PERR ("double-free %p", trans);
@@ -1044,7 +1044,7 @@
qof_instance_release (&trans->inst);
g_free(trans);
- LEAVE ("addr=%p", trans);
+ LEAVE ("(addr=%p)", trans);
}
/********************************************************************
@@ -1379,11 +1379,20 @@
gnc_numeric
xaccTransGetImbalance (const Transaction * trans)
{
- if (!trans)
- return gnc_numeric_zero ();
+ GList *node;
+ gnc_numeric imbal = gnc_numeric_zero();
+ if (!trans) return imbal;
+
+ ENTER("(trans=%p)", trans);
- return xaccSplitsComputeValue (trans->splits, NULL,
- trans->common_currency);
+ for (node=trans->splits; node; node=node->next)
+ {
+ Split *s = node->data;
+ imbal = gnc_numeric_add(imbal, xaccSplitGetValue(s),
+ GNC_DENOM_AUTO, GNC_HOW_DENOM_EXACT);
+ }
+ LEAVE("(trans=%p) imbal=%s", trans, gnc_num_dbg_to_string(imbal));
+ return imbal;
}
gnc_numeric
@@ -1402,7 +1411,7 @@
Account *a = xaccSplitGetAccount (s);
if (a == account)
total = gnc_numeric_add (total, xaccSplitGetValue (s),
- GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD);
+ GNC_DENOM_AUTO, GNC_HOW_DENOM_EXACT);
}
return total;
}
@@ -1654,7 +1663,7 @@
trans->inst.editlevel--;
gen_event_trans (trans);
- LEAVE ("trans addr=%p\n", trans);
+ LEAVE ("(trans=%p)", trans);
}
/* Ughhh. The Rollback function is terribly complex, and, what's worse,
More information about the gnucash-changes
mailing list