Make encode_ui() and decode_ui() optional in back-ends

The majority of back-ends define encode_ui() to return NULL and
decode_ui() to do nothing.  This commit allows them to instead specify
the relevant function pointers as NULL, in which case the mid-end won't
try to call them.

I'm planning to add a parameter to decode_ui(), and if I'm going to have
to touch every back-end's version of decode_ui(), I may as well ensure
that most of them never need to be touched again.  And obviously
encode_ui() should go the same way for symmetry.
This commit is contained in:
Ben Harris
2023-02-13 22:41:40 +00:00
parent e411db788c
commit 418cb3a567
42 changed files with 88 additions and 445 deletions

View File

@ -885,6 +885,9 @@ user could edit the save file by hand... But if the user is \e{that}
determined to cheat, they could just as easily modify the game's
source.)
The \cw{encode_ui()} function is optional. If a back-end doesn't need
this function it can just set the pointer to \cw{NULL}.
\S{backend-decode-ui} \cw{decode_ui()}
\c void (*decode_ui)(game_ui *ui, const char *encoding);
@ -896,6 +899,9 @@ the best it can, which might just mean not changing the \c{game_ui}
structure at all. This might happen if a save file is corrupted, or
simply from a newer version that encodes more \c{game_ui} data.
Like \cw{encode_ui()}, \cw{decode_ui()} is optional. If a back-end
doesn't need this function it can just set the pointer to \cw{NULL}.
\S{backend-changed-state} \cw{changed_state()}
\c void (*changed_state)(game_ui *ui, const game_state *oldstate,