OK, it is possible to do some crude OOP-type coding in C. This page discusses the basic technique. That in mind, I am going to have to go through DwHash.c, and separate out the code that adds stuff to the hash from the code that puts new hash elements in the fila and deletes elements if they are expired, sets the expire time of the hash element, etc.
The advantage is this: If I can pull this off, it will make it so the DwDict and DwHash both use the same code; we just add a dwd_autogrow() function to DwDict and use the simplified hash/dictionary managing routines in DwDict.c.
This is going to take a few days; I am planning things out right now.