Thread: [cvs] SF.net SVN: bogofilter:[6798] trunk/bogofilter/src/wordhash.c
Fast Bayesian spam filter along lines suggested by Paul Graham
Brought to you by:
m-a
From: <re...@us...> - 2009-02-14 23:22:42
|
Revision: 6798 http://bogofilter.svn.sourceforge.net/bogofilter/?rev=6798&view=rev Author: relson Date: 2009-02-14 21:58:29 +0000 (Sat, 14 Feb 2009) Log Message: ----------- Replace conditionals with switch. Modified Paths: -------------- trunk/bogofilter/src/wordhash.c Modified: trunk/bogofilter/src/wordhash.c =================================================================== --- trunk/bogofilter/src/wordhash.c 2009-02-14 21:13:00 UTC (rev 6797) +++ trunk/bogofilter/src/wordhash.c 2009-02-14 21:58:29 UTC (rev 6798) @@ -76,23 +76,26 @@ */ wordhash_t * -wordhash_init (wh_t t, uint c) +wordhash_init (wh_t type, uint count) { wordhash_t *wh = xcalloc (1, sizeof (wordhash_t)); - wh->type = t; + wh->type = type; wh->count = 0; - wh->size = (t == WH_NORMAL) ? 0 : ((c == 0) ? WH_INIT : c); + wh->size = (type == WH_NORMAL) ? 0 : ((count == 0) ? WH_INIT : count); - if (t == WH_NORMAL) + switch (type) + { + case WH_NORMAL: wh->bin = xcalloc (NHASH, sizeof (hashnode_t **)); - - if (t == WH_CNTS) + break; + case WH_CNTS: // used for bogotune with msg_count files wh->cnts = (wordcnts_t *) xcalloc(wh->size, sizeof(wordcnts_t)); - - if (t == WH_PROPS) { + break; + case WH_PROPS: wh->freeable = true; wh->props = (hashnode_t *) xcalloc(wh->size, sizeof(hashnode_t)); + break; } return wh; @@ -101,8 +104,8 @@ wordhash_t * wordhash_new (void) { - wh_t t = (!fBogotune || !msg_count_file) ? WH_NORMAL : WH_CNTS; - wordhash_t *wh = wordhash_init(t, 0); + wh_t type = (!fBogotune || !msg_count_file) ? WH_NORMAL : WH_CNTS; + wordhash_t *wh = wordhash_init(type, 0); return wh; } @@ -164,16 +167,24 @@ wordhash_free_strings(wh); xfree (wh->order); - if (wh->type == WH_CNTS) + + switch (wh->type) + { + case WH_NORMAL: + break; + case WH_CNTS: xfree (wh->cnts); - if (wh->type == WH_PROPS) { + break; + case WH_PROPS: if (wh->freeable) { uint i; for (i=0; i<wh->size; i++) xfree(wh->props[i].data); } xfree (wh->props); + break; } + xfree (wh->bin); xfree (wh); } @@ -397,14 +408,14 @@ case WH_NORMAL: val = wh->iter_ptr = wh->iter_head; break; + case WH_CNTS: + wh->index = 0; + val = &wh->cnts[wh->index]; + break; case WH_PROPS: wh->index = 0; val = &wh->props[wh->index]; break; - case WH_CNTS: - wh->index = 0; - val = &wh->cnts[wh->index]; - break; } return val; @@ -420,14 +431,14 @@ if (wh->iter_ptr != NULL) val = wh->iter_ptr = wh->iter_ptr->iter_next; break; + case WH_CNTS: + if (++wh->index < wh->count) + val = &wh->cnts[wh->index]; + break; case WH_PROPS: if (++wh->index < wh->count) val = &wh->props[wh->index]; break; - case WH_CNTS: - if (++wh->index < wh->count) - val = &wh->cnts[wh->index]; - break; } return val; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |