/* * akglbody -- the inside of a function that returns an error context. * * The overwhelmingly common shape of a libakgl example: a few locals, an * ATTEMPT block, and calls that are checked. Written out in full, every one of * those blocks would open with the same four lines and close with the same two, * and a reader would learn the protocol six times instead of the call once. * * The block supplies everything between `PREPARE_ERROR` and the closing brace. * `errctx` is the local error context, per the house parameter names. * * Nothing here declares an akgl_ function. A prelude that did would let an * example calling it with the wrong arguments compile, which is the one thing * this whole harness exists to catch. */ #include akerr_ErrorContext AKERR_NOIGNORE *docs_example(void); akerr_ErrorContext *docs_example(void) { PREPARE_ERROR(errctx);