Hash MakeHash(int size, int (*map)(unsigned int)) { Hash retval; int i; retval = (Hash) localmalloc(sizeof(*retval)); retval->array = (HashEntry *) localmalloc(size*sizeof(HashEntry)); for (i=0; i<size; i++) retval->array[i]=NULL; retval->mapfunc = map; retval->size = size; return retval; }
Hash MakeHash(int size, int (*map)(unsigned int)) { Hash retval; void* cp; /* modified by jqwu@princeton, use the library malloc */ retval = (Hash)localmalloc(sizeof(*retval)); cp = localmalloc(size*sizeof(HashEntry)); /* was localmalloc */ memset(cp, 0, size * sizeof(HashEntry)); retval->array = (HashEntry*)cp; retval->mapfunc = map; retval->size = size; return retval; }
void HashInsert(void *entry,unsigned int key,Hash hash) { HashEntry ent; int j; assert(3,!HashLookup(key,hash)); j = (hash->mapfunc)(key); ent = (HashEntry) localmalloc(sizeof(*ent)); ent->next = hash->array[j]; hash->array[j]=ent; ent->key = key; ent->entry = entry; }