Public APIs which are too complex or too big to be documented are totally worthless.
When you come to write your docs, you have to rewrite all that code.
I’ve spent the last half-day rewriting the libbenchmark abstraction API for enumerating processer/memory topology.
The problem has been that the function was directly using a bunch of topology_node API stuff, which then would all needed to be documented.
I’ve written a small set of helper functions, which mask all of the topology_node stuff.