Give every exported function a declaration, and check that it stays that way
Closes internal-consistency items 7 through 15. Nineteen non-static functions were in the ABI with no declaration anywhere, so no consumer could call them and any consumer could collide with them. The four gamepad_handle_* functions are the ones that mattered: controller.h declared akgl_controller_handle_button_down and three siblings that did not exist, so anything compiled against the header alone failed to link. The definitions carry the declared names now, which also closes Defects -> Known and still open item 10, and their documentation moved to the header. The rest are either declared under a "part of the internal API" block -- akgl_game_save_actors and akgl_game_load_versioncmp, which tests/game.c had to declare for itself, plus six tilemap loader helpers the untested-loader work wants to reach -- or static, which is what the four save iterators and load_objectnamemap should always have been. akgl_path_relative_from is deleted: declared nowhere, called from nowhere, never wrote its output, and leaked a pooled string on every call, so it closes Known and still open item 4 and item 40 by ceasing to exist. scripts/check_api_surface.sh keeps it closed. It reads the built library's dynamic symbol table and every public header with comments stripped, and fails on an exported akgl_* symbol that is declared nowhere. Stripping comments is the whole point -- four of these were mentioned in controller.h prose, which is how they went unnoticed. The pool-size ceilings are defined once, in heap.h, so the #ifndef override hook fires for the first time; actor.h, sprite.h and character.h were defining the same four unconditionally from headers heap.h includes above its own guard. tests/header_pool_override.c fails the compile if that regresses. Also here: (void) rather than () on the twelve no-argument entry points, AKERR_NOIGNORE only on declarations, static helpers with the akgl_ prefix dropped, and the six parameter-name mismatches. akgl_get_json_with_default had its two contexts swapped rather than merely misspelled -- the incoming one was `err` and its own was `e`, which is the name reserved for an incoming one. 24/24 pass, reindent --check clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -64,7 +64,7 @@ extern SDL_PropertiesID AKGL_REGISTRY_PROPERTIES;
|
||||
* @warning This does not create #AKGL_REGISTRY_PROPERTIES -- see the warning on
|
||||
* this file.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init(void);
|
||||
/**
|
||||
* @brief Create the music registry.
|
||||
* @return `NULL` on success, otherwise an error context owned by the caller.
|
||||
@@ -72,7 +72,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init();
|
||||
* @note Overwrites the existing id without destroying the old set, so calling it
|
||||
* twice leaks the first one along with everything registered in it.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_music();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_music(void);
|
||||
/**
|
||||
* @brief Create the font registry.
|
||||
* @return `NULL` on success, otherwise an error context owned by the caller.
|
||||
@@ -80,7 +80,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_music();
|
||||
* @note Overwrites the existing id without destroying the old set. See
|
||||
* akgl_registry_init_music.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_font();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_font(void);
|
||||
/**
|
||||
* @brief Create the actor registry, destroying any previous one first.
|
||||
*
|
||||
@@ -94,7 +94,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_font();
|
||||
* @throws AKERR_NULLPOINTER If SDL cannot allocate the property set. The old one
|
||||
* has already been destroyed at that point, so the registry is left at 0.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_actor();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_actor(void);
|
||||
/**
|
||||
* @brief Create the sprite registry.
|
||||
* @return `NULL` on success, otherwise an error context owned by the caller.
|
||||
@@ -102,7 +102,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_actor();
|
||||
* @note Overwrites the existing id without destroying the old set. See
|
||||
* akgl_registry_init_music.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_sprite();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_sprite(void);
|
||||
/**
|
||||
* @brief Create the spritesheet registry.
|
||||
* @return `NULL` on success, otherwise an error context owned by the caller.
|
||||
@@ -110,7 +110,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_sprite();
|
||||
* @note Overwrites the existing id without destroying the old set. See
|
||||
* akgl_registry_init_music.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_spritesheet();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_spritesheet(void);
|
||||
/**
|
||||
* @brief Create the character registry.
|
||||
* @return `NULL` on success, otherwise an error context owned by the caller.
|
||||
@@ -118,7 +118,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_spritesheet();
|
||||
* @note Overwrites the existing id without destroying the old set. See
|
||||
* akgl_registry_init_music.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_character();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_character(void);
|
||||
/**
|
||||
* @brief Create the configuration-property registry.
|
||||
*
|
||||
@@ -133,7 +133,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_character();
|
||||
* @note Overwrites the existing id without destroying the old set, so every
|
||||
* property set before a second call is lost.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_properties();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_properties(void);
|
||||
/**
|
||||
* @brief Load a JSON configuration file into the property registry.
|
||||
*
|
||||
@@ -172,7 +172,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_load_properties(char *fname);
|
||||
* and `MOVING_OUT`, so those two states cannot be named from JSON at all.
|
||||
* TODO.md items 24-26.
|
||||
*/
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_actor_state_strings();
|
||||
akerr_ErrorContext AKERR_NOIGNORE *akgl_registry_init_actor_state_strings(void);
|
||||
/**
|
||||
* @brief Set one configuration property.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user