128 typedef Comparator<K> MyComparator;
130 virtual bool compare(
const void *key,
const void *elem)
const
131 {
return MyComparator::compare((
const K *)key,
132 Accessor::get_key((
const T *)elem)); }
134 unsigned hash(
const T *data)
135 {
return WvHash(*Accessor::get_key(data)); }
137 virtual unsigned do_hash(
const void *data)
138 {
return hash((
const T *)data); }
140 virtual void do_delete(
void *data)
141 {
delete (T *)data; }
147 T *operator[] (
const K &key)
const
148 {
return (T *)(genfind_or_null(&key, WvHash(key))); }
150 void add(
const T *data,
bool autofree =
false)
151 { _add((
void *)data, hash(data), autofree); }
153 void remove(
const T *data)
154 { _remove(Accessor::get_key(data), hash(data)); }
156 void set_autofree(
const K &key,
bool autofree)
158 _set_autofree(key, WvHash(key), autofree);
161 void set_autofree(
const T *data,
bool autofree)
163 _set_autofree(Accessor::get_key(data), hash(data), autofree);
166 bool get_autofree(
const K &key)
168 return _get_autofree(key, WvHash(key));
171 bool get_autofree(
const T *data)
173 return _get_autofree(Accessor::get_key(data), hash(data));
186 unsigned char *getstatus() {
return &xstatus[index-1]; }
189 {
return (T *)(get()); }