Open addressing with double hashing. Double hashing makes use of two hash functions to calculate the index an item should be stored at after i collisions. What happens when the array is full?
ht_<module_name>_<function_name>
for a function that works on a struct:
ht_<module_name>_<StructName>_<function_name>