I'm guessing this is common API design in the world of C libraries? Coming from Swift / other high-level languages, it seems awfully error-prone to have to call an API multiple times, sometimes with null arguments, sometimes with pointers to buffers that <i>hopefully</i> are the right size, just to process some data. Programmer errors / misinterpretation of the documentation leading to programmer errors seems inevitable.