So I'm pleased that the hashing is so simple, I am going to make the meshes and materials use them next. I like that I dont have to walk the linked list to get my pointer, and the hashing is just multiplication and addition, so its cheap. I don't like having to have a fixed size array, for each table. However the size of the table isn't really that big, an 41 char string, and a 32bit pointer. I could even shorten the string length to something like 16 I bet.
I have been trying to impliment a way to reload all the pointers on Invalidate/RestoreDeviceObjects, but I only have the textures doing it right now. So it crashes when it trys to render the mesh that was released, but the pointer is still pointing to the released mesh, blah blah its not done so I didn't upload any new source.
Yup its late, time for bed.