it's a very simple approach and not the fastest, but it's not that slow. the only bottleneck is the llist_index_of-function. furthermore it's not a hashmap but only a simple map. there are c-compatible hashmaps out there, and if you're willing to spend the time you could simply make a wrapper for the std::map or std::multimap classes.
i also just noted that i've changed the list functions' names a bit, but it should not be hard for you to alter them accordingly.
joey.