--- parser3/src/include/pa_hash.h 2001/03/10 11:44:31 1.20 +++ parser3/src/include/pa_hash.h 2001/03/18 13:22:05 1.27 @@ -1,10 +1,9 @@ /* - $Id: pa_hash.h,v 1.20 2001/03/10 11:44:31 paf Exp $ -*/ - -/* - + Parser + Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexander Petrosyan (http://design.ru/paf) + $Id: pa_hash.h,v 1.27 2001/03/18 13:22:05 paf Exp $ */ #ifndef PA_HASH_H @@ -16,16 +15,19 @@ #include "pa_types.h" #include "pa_string.h" -class Hash : virtual public Pooled { +class Hash : public Pooled { public: typedef String Key; typedef void Value; + typedef void (*Foreach_func)(const Key& key, Value *value, void *info); + public: - Hash(Pool& apool,bool) : Pooled(apool) { construct(apool, true); } - Hash(Pool& apool) : Pooled(apool) { construct(apool, false); } + Hash(Pool& apool,bool athread_safe=false) : Pooled(apool) { + construct(apool, athread_safe); + } // useful generic hash function static uint generic_code(uint aresult, const char *start, uint allocated); @@ -53,6 +55,10 @@ public: int size() { return used; } + void foreach(Foreach_func func, void *info=0); + + void clear(); + protected: void construct(Pool& apool, bool athread_safe);