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);