Distributed under the GPL, v2, or any later version, at your option
This page contains a pair of generic hashing implementations for C.
A static, in a sense "templatized" implementation, which does static type checking, and should be fast, but will use one copy of the functions for
each data type to be hashed.
A dynamic implementation, that will allow you to use one copy of the code for all your data types, but the type checking is less thorough.