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

@ -2204,7 +2204,7 @@ void midend_serialise(midend *me,
/*
* Any required serialisation of the game_ui.
*/
if (me->ui) {
if (me->ui && me->ourgame->encode_ui) {
char *s = me->ourgame->encode_ui(me->ui);
if (s) {
wr("UI", s);
@ -2541,7 +2541,7 @@ static const char *midend_deserialise_internal(
}
data.ui = me->ourgame->new_ui(data.states[0].state);
if (data.uistr)
if (data.uistr && me->ourgame->decode_ui)
me->ourgame->decode_ui(data.ui, data.uistr);
/*