25 lines
1.0 KiB
Plaintext
25 lines
1.0 KiB
Plaintext
|
|
/*
|
||
|
|
* akglapp -- a complete program, brought up headless and run.
|
||
|
|
*
|
||
|
|
* This is the prelude behind `c run=akglapp`, and it is the reason the harness
|
||
|
|
* links at all. -fsyntax-only proves a call typechecks; it does not prove the
|
||
|
|
* startup order works, that the sprite loads, or that an ATTEMPT block gives
|
||
|
|
* back what it took. A run= block proves those, and an `output` block below it
|
||
|
|
* pins what the reader will actually see.
|
||
|
|
*
|
||
|
|
* The block supplies the body. Anything it prints on stdout is the example's
|
||
|
|
* output; libakgl's own registry chatter goes to stderr and is not compared.
|
||
|
|
*
|
||
|
|
* The startup here is the same sequence tests/sprite.c and tools/docs_screenshot.c
|
||
|
|
* use, and it is the sequence chapter 07 documents: error registry, renderer
|
||
|
|
* backend, SDL, window, bind, heap, registries, camera. A host that owns its own
|
||
|
|
* window does exactly this rather than calling akgl_game_init().
|
||
|
|
*/
|
||
|
|
#include <docs_prelude.h>
|
||
|
|
|
||
|
|
akerr_ErrorContext AKERR_NOIGNORE *docs_example(void);
|
||
|
|
|
||
|
|
akerr_ErrorContext *docs_example(void)
|
||
|
|
{
|
||
|
|
PREPARE_ERROR(errctx);
|