The main focus here was to improve the docs significantly. Furthermore, I reimplemented `Set`, `Map` and `VectorSet`. They are now (usually) faster, simpler and more customizable. I also rewrote `Stack` as well to make it more efficient.
Obviously, this is not the end of improvements to these data structures. My hope is that this update will make other developers more comfortable with the idea of having custom implementations for these basic structures.
What I expect from this review:
- Feedback on some statements I made throughout the code like `BLI::Vector should be your default choice for a vector data structure in Blender`. There are similar statements for the other data structures and also `ArrayRef` and `StringRef`.
- Feedback on public method/class names. I like the names I used, but if there is a majority who prefers other names like `push_back` instead of `append`, I can change that. The best time for these changes is now.
You are free to give feedback on implementation details as well of course, but those can be changed at any point later on. So they should not be the main focus of this review. It probably does not make too much sense to look at the diff, so I recommend you apply this patch and read through it in your editor.