To prepare for release I got the code compiling as C89, C99, and C++, and got it building under Windows in Visual Studio 2005 and 2008. Interestingly, the performance comparison of list versus doubly-linked lists is quite one-sided on Windows: the doubly-linked list is much slower, for some reason (perhaps a more expensive allocator). It's a little tricky asserting that the .vcproj/.sln files are public domain, since they're partly boilerplate generated by the tools, but I stripped out any of the content that didn't serve a functional purpose.
What next? Lots to do. Probably the most painfully needed is some kind of string. Strings are pretty straightforward until I start worrying about encoding - at the very least UTF8 and UTF16 support would be handy. Beyond that is associative array data structures, like hash tables, some kind of cache-friendly self-balancing search tree, and a simple association list for small dictionaries. What about after that? Well, I look to other libraries for inspiration.
- Bit arrays.
- There's a deque data structure that uses a dynamic array like a circular buffer.
- Priority queues (a buffer tree or funnel heap is a good candidate for cache efficiency).
- Stacks and queues, simpler interfaces on top of existing structures.
- Sets supporting union and intersection.
- Ropes.
- Disjoint-set data structures.
- Maybe collections for parallel programming? This could be hard to do in a platform-independent way.
do you have any plan for a SET library?
ReplyDelete