typedef int (* HashTable_CmpFn)(void *, void *);
typedef int (* HashTable_HashFn)(void *);
typedef void (* HashTable_DupKeyFn)(void *, void *);
typedef struct HashTable HashTable;
typedef struct HashTable_Entry HashTable_Entry;
typedef struct HashTable_Itr {
HashTable *ht;
int bin;
HashTable_Entry *last;
HashTable_Entry *entry;
} HashTable_Itr;
Flag HashTable_all_create(int id, int snapshotId,
int nBins, int keySize, int dataSize,
HashTable_CmpFn cmpFn, HashTable_HashFn hashFn,
Flag *flagPtr, Counter *ctr);
Flag HashTable_all_destroy(int id, Counter *ctr);
Flag HashTable_dupKeyFn(int id, HashTable_DupKeyFn dupKeyFn);
Flag HashTable_insert(int id, void *key, void *data,
Flag *flagPtr, Counter *ctr);
Flag HashTable_lookup(int id, void *key, void *data,
Flag *flagPtr, Counter *ctr);
Flag HashTable_delete(int id, void *key,
Flag *flagPtr, Counter *ctr);
Flag HashTable_itrInit(int id, HashTable_Itr *itr);
Flag HashTable_itrNext(HashTable_Itr *itr,
void **keyPtr, void **dataPtr);
Flag HashTable_itrDelete(HashTable_Itr *itr);
Flag HashTable_clear(int id);
Flag HashTable_count(int id, int *countPtr);