diff options
Diffstat (limited to 'kmail/kmdict.cpp')
-rw-r--r-- | kmail/kmdict.cpp | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/kmail/kmdict.cpp b/kmail/kmdict.cpp deleted file mode 100644 index 0ad9367be..000000000 --- a/kmail/kmdict.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* simple hash table for kmail. inspired by TQDict */ -/* Author: Ronen Tzur <rtzur@shani.net> */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "kmdict.h" -#include "kmglobal.h" -#include <kdebug.h> - -#include <string.h> -//----------------------------------------------------------------------------- - -KMDict::KMDict( int size ) -{ - init( ( int ) KMail::nextPrime( size ) ); - //kdDebug( 5006 ) << "KMMDict::KMDict Size: " << mSize << endl; -} - -//----------------------------------------------------------------------------- - -KMDict::~KMDict() -{ - clear(); -} - -//----------------------------------------------------------------------------- - -void KMDict::init(int size) -{ - mSize = size; - mVecs = new KMDictItem *[mSize]; - memset(mVecs, 0, mSize * sizeof(KMDictItem *)); -} - -//----------------------------------------------------------------------------- - -void KMDict::clear() -{ - if (!mVecs) - return; - for (int i = 0; i < mSize; i++) { - KMDictItem *item = mVecs[i]; - while (item) { - KMDictItem *nextItem = item->next; - delete item; - item = nextItem; - } - } - delete [] mVecs; - mVecs = 0; -} - -//----------------------------------------------------------------------------- - -void KMDict::replace( long key, KMDictItem *item ) -{ - insert( key, item ); - removeFollowing( item, key ); // remove other items with same key -} - -//----------------------------------------------------------------------------- - - -void KMDict::insert( long key, KMDictItem *item ) -{ - item->key = key; - int idx = (unsigned long)key % mSize; // insert in - item->next = mVecs[idx]; // appropriate - mVecs[idx] = item; // column -} - -//----------------------------------------------------------------------------- - -void KMDict::remove(long key) -{ - int idx = (unsigned long)key % mSize; - KMDictItem *item = mVecs[idx]; - - if (item) { - if (item->key == key) { // if first in the column - mVecs[idx] = item->next; - delete item; - } else - removeFollowing(item, key); // if deep in the column - } -} - -//----------------------------------------------------------------------------- - -void KMDict::removeFollowing(KMDictItem *item, long key) -{ - while (item) { - KMDictItem *itemNext = item->next; - if (itemNext && itemNext->key == key) { - KMDictItem *itemNextNext = itemNext->next; - delete itemNext; - item->next = itemNextNext; - } else - item = itemNext; - } -} - -//----------------------------------------------------------------------------- - -KMDictItem *KMDict::find(long key) -{ - int idx = (unsigned long)key % mSize; - KMDictItem *item = mVecs[idx]; - while (item) { - if (item->key == key) - break; - item = item->next; - } - return item; -} |