8 #ifndef __CO_HASH_BASE_H
9 #define __CO_HASH_BASE_H
26 template <
class KEY,
class DATA>
27 class coHashBase :
public coMultiHashBase<KEY, DATA>
38 virtual unsigned long nextHash(
unsigned long )
const
44 virtual int insert(
const KEY &key,
const DATA &inData);
47 virtual unsigned long hash1(
const KEY &)
const = 0;
50 virtual unsigned long hash2(
const KEY &)
const = 0;
53 virtual bool equal(
const KEY &,
const KEY &)
const = 0;
58 template <
class KEY,
class DATA>
61 unsigned int x, u, hash;
69 && (!equal(key, this->keys[x])))
70 x = (x + u) % this->
size;
76 this->
data[
x] = inData;
81 x = (x + u) % this->
size;
83 && (x != hash) && (!equal(key, this->keys[x])))
85 x = (x + u) % this->
size;
93 if (this->entries > this->maxEntries)
GLsizeiptr size
Definition: khronos-glext.h:6610
virtual unsigned long hash2(const KEY &) const =0
second hash function (pure virtual)
virtual unsigned long hash1(const KEY &) const =0
first hash function (pure virtual)
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: khronos-glext.h:6354
coHashBase(DATA nullelem)
Definition: coHashBase.h:31
coHashBase()
Definition: coHashBase.h:34
Definition: coIntMultiHash.h:25
virtual bool equal(const KEY &, const KEY &) const =0
KEY1 == KEY2 operation (pure virtual)
virtual unsigned long nextHash(unsigned long) const
no identical keys in table
Definition: coHashBase.h:38
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
virtual int insert(const KEY &key, const DATA &inData)
insert: if existing element, replace it
Definition: coHashBase.h:59