/** * @file docs_prelude.h * @brief The include set every `c wrap=`, `c run=` and `c screenshot=` block gets. * * The four preludes in this directory all begin with this file, so the list of * headers a wrapped example can rely on lives in exactly one place. It is not * reachable from a `c` block with no `wrap=`: an unwrapped block is a whole * translation unit and has to show its own `#include` lines, which is usually * what a chapter wants a reader to see. * * Every public header, deliberately. The `headers` suite already proves each one * is self-contained, so there is no ordering to get right, and an example that * calls one subsystem while illustrating another does not have to grow an * include line that is noise in the chapter. * * `docs_frame()` is declared here rather than in tools/docs_screenshot.c so the * host and the akglframe prelude cannot drift apart on the signature. */ #ifndef _AKGL_DOCS_PRELUDE_H_ #define _AKGL_DOCS_PRELUDE_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @brief One frame of drawing, supplied by a `c screenshot=NAME` block. * * tools/docs_screenshot.c brings libakgl up against an offscreen target, calls * this, and writes what it drew to `docs/images/NAME.png`. The body is the * chapter's own listing, wrapped by tests/docs_preludes/akglframe.pre. */ akerr_ErrorContext AKERR_NOIGNORE *docs_frame(void); #endif // _AKGL_DOCS_PRELUDE_H_