From bd6ffa19e41ee1a203eb7d132f525ec751afd86a Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Sun, 1 Feb 1998 20:43:24 +0000 Subject: [PATCH] rework the ledger utils git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@480 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/LedgerUtils.c | 154 ---------------------------------------------- src/RegWindow.c | 85 +++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 154 deletions(-) diff --git a/src/LedgerUtils.c b/src/LedgerUtils.c index 0e745befd5..d31f711b0b 100644 --- a/src/LedgerUtils.c +++ b/src/LedgerUtils.c @@ -170,158 +170,4 @@ xaccGroupToList (Account *acc) return list; } -/* ------------------------------------------------------ */ - -int -ledgerListCount (struct _RegWindow **list) -{ - struct _RegWindow *reg; - int n; - - if (!list) return 0; - - n = 0; - reg = list[0]; - while (reg) { - n++; - reg = list[n]; - } - return n; -} - -/* ------------------------------------------------------ */ - -void -ledgerListAdd (Account * acc, struct _RegWindow *addreg) -{ - struct _RegWindow **oldlist; - struct _RegWindow **newlist; - struct _RegWindow *reg; - int n; - - if (!acc) return; - if (!addreg) return; - -/* oldlist = acc->ledgerList; */ - n = ledgerListCount (oldlist); - - newlist = (struct _RegWindow **) - _malloc ((n+2) * sizeof (struct _RegWindow *)); - - n = 0; - if (oldlist) { - reg = oldlist[0]; - while (reg) { - newlist[n] = reg; - n++; - reg = oldlist[n]; - } - _free (oldlist); - } - newlist[n] = addreg; - newlist[n+1] = NULL; - -/* acc->ledgerList = newlist; */ -} - -/* ------------------------------------------------------ */ - -void -ledgerListRemove (Account * acc, struct _RegWindow *delreg) -{ - struct _RegWindow **oldlist; - struct _RegWindow **newlist; - struct _RegWindow *reg; - int n, i; - - if (!acc) return; - if (!delreg) return; - - /* oldlist = acc->ledgerList; */ - n = ledgerListCount (oldlist); - - newlist = (struct _RegWindow **) - _malloc ((n+1) * sizeof (struct _RegWindow *)); - - n = 0; - i = 0; - if (oldlist) { - reg = oldlist[0]; - while (reg) { - newlist[i] = reg; - if (delreg == reg) i--; - i++; - n++; - reg = oldlist[n]; - } - _free (oldlist); - } - newlist[i] = NULL; - - /* acc->ledgerList = newlist; */ -} - -/* ------------------------------------------------------ */ - -int -ledgerListIsMember (Account * acc, struct _RegWindow *memreg) -{ - struct _RegWindow **list; - struct _RegWindow *reg; - int n; - - if (!acc) return 0; - if (!memreg) return 0; - - /* list = acc->ledgerList; */ - if (!list) return 0; - - n = 0; - reg = list[0]; - while (reg) { - if (memreg == reg) return 1; - n++; - reg = list[n]; - } - return 0; -} - -/* ------------------------------------------------------ */ - -void -ledgerListAddList (Account ** list, struct _RegWindow *reg) -{ - Account *acc; - int n = 0; - - if (!list) return; - if (!reg) return; - - acc = list[0]; - while (acc) { - ledgerListAdd (acc, reg); - n++; - acc = list[n]; - } -} - -/* ------------------------------------------------------ */ - -void -ledgerListRemoveList (Account ** list, struct _RegWindow *reg) -{ - Account *acc; - int n = 0; - - if (!list) return; - if (!reg) return; - - acc = list[0]; - while (acc) { - ledgerListRemove (acc, reg); - n++; - acc = list[n]; - } -} - /************************** END OF FILE *************************/ diff --git a/src/RegWindow.c b/src/RegWindow.c index c72e5a2795..11dcfa1bce 100644 --- a/src/RegWindow.c +++ b/src/RegWindow.c @@ -99,6 +99,91 @@ static void recordCB( Widget mw, XtPointer cd, XtPointer cb ); static void deleteCB( Widget mw, XtPointer cd, XtPointer cb ); static void cancelCB( Widget mw, XtPointer cd, XtPointer cb ); +/********************************************************************\ + * Ledger utilities * +\********************************************************************/ + +int +ledgerListCount (RegWindow **list) +{ + int n = 0; + if (!list) return 0; + while (list[n]) n++; + return n; +} + +/* ------------------------------------------------------ */ + +RegWindow ** +ledgerListAdd (RegWindow **oldlist, RegWindow *addreg) +{ + RegWindow **newlist; + RegWindow *reg; + int n; + + if (!addreg) return oldlist; + + n = ledgerListCount (oldlist); + newlist = (RegWindow **) _malloc ((n+2) * sizeof (RegWindow *)); + + n = 0; + if (oldlist) { + reg = oldlist[0]; + while (reg) { + newlist[n] = reg; + n++; + reg = oldlist[n]; + } + _free (oldlist); + } + newlist[n] = addreg; + newlist[n+1] = NULL; + + return newlist; +} + +/* ------------------------------------------------------ */ + +void +ledgerListRemove (RegWindow **list, RegWindow *delreg) +{ + RegWindow *reg; + int n, i; + + if (!list) return; + if (!delreg) return; + + n = 0; + i = 0; + while (list[n]) { + list[i] = list[n]; + if (delreg == list[n]) i--; + i++; + n++; + } + list[i] = NULL; +} + +/* ------------------------------------------------------ */ + +int +ledgerIsMember (RegWindow *reg, Account * acc) +{ + int n; + + if (!acc) return 0; + if (!reg) return 0; + + if (acc == reg->leader) return 1; + + n = 0; + while (reg->blackacc[n]) { + if (acc == reg->blackacc[n]) return 1; + n++; + } + return 0; +} + /********************************************************************\ * regWindowSimple * * opens up a register window for Account account *