Release is coming soon...and I'm going to get to do everything I wanted and maybe even some more!
I'm nearly finished with stacks and queues. The only item I want to do for them is modify a few names and change how cstl_stack_top and cstl_queue_front will work.
I now have about 2 weeks to work on all the extra stuff that I didnt plan for. If I get all of the extra work done early, then the release will be early. What's the extra stuff, you ask? Well thanks for asking, I'll tell you!
I'm sure that 2 weeks will be sufficient to gain a moderate understanding of configuring doxygen for the project, incorporating it into the automake build, and writing out interface documentation for everything.
I want to implement coherent error codes for operation failures. I want this library to remain portable, so I won't be relying on /usr/include/errno.h for my values. I'll have to comb the code and define all the error situations, and derive appropriate error codes from that.
I also want to change the data structure lifecycle beginning from an initialization to an allocation. This will allow me to hide the details of the C structs that everything is built upon by only providing public interfaces to forward declarations of structs, much the way that libSDL hides their mutex and condition variable implementation details.
I've really had fun with the project so far. In my daily job, I'm upheld to a coding standard that has decent rules for safety validation, but many of the coding standard rules are ridiculously stupid.
The one coding paradigm that I have most enjoyed exploiting in this project is the inclusion of multiple return points in my functions. I have also had the chance to be slightly lax with checking my pointers for null values, because the algorithm of the red-black guarantees that certains pointers cannot be null in certain situations.