I don’t understand the indirection argument. What I suggested has very little indirection. The generated call would be easy to inspect and very explicit. Compared to your branch, it removes the unnecessary `*_func` struct indirection and the whole macro trickery.
As for maintenance, I think that if we move forward with this, we’ll end up with a lot of code using it but still only a single generator. I’d much rather prioritize user experience over saving a bit of code in widl.