--- parser3/src/include/pa_hash.h 2001/01/27 12:04:53 1.2 +++ parser3/src/include/pa_hash.h 2001/01/29 11:53:42 1.7 @@ -1,5 +1,5 @@ /* - $Id: pa_hash.h,v 1.2 2001/01/27 12:04:53 paf Exp $ + $Id: pa_hash.h,v 1.7 2001/01/29 11:53:42 paf Exp $ */ /* @@ -17,16 +17,16 @@ class Pool; -typedef String Key; -typedef void Value; - class Hash { public: + typedef String Key; + typedef void Value; + private: friend Pool; - // expand when there would be used this %% of size + // expand when these %% of size exausted enum { THRESHOLD_PERCENT=75 }; @@ -34,10 +34,10 @@ private: // the pool I'm allocated on Pool *pool; - // the index of size in sizes + // the index of [size] in [sizes] int size_index; - // possible sizes. prime numbers + // possible [sizes]. prime numbers static uint sizes[]; static int sizes_count; @@ -73,16 +73,27 @@ private: Hash(Pool *apool); - bool full() { - return used==threshold; - } + // filled to threshold: needs expanding + bool full() { return used==threshold; } + + // allocate larger buffer & rehash void expand(); public: + // useful generic hash function static uint generic_code(uint aresult, char *start, uint size); - void put(Key& key, Value *value); - Value* get(Key& key); + + // put a [value] under the [key] + /*SYNCHRONIZED*/ void put(Key& key, Value *value); + + // get associated [value] by the [key] + /*SYNCHRONIZED*/ Value* get(Key& key); + +private: //disabled + + Hash& operator = (Hash& src) { return *this; } + Hash(Hash& src) {} }; #endif