aboutsummaryrefslogtreecommitdiff
path: root/midend.c
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-02-13 22:41:40 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-04-08 20:08:16 +0100
commit418cb3a5671404d2d91bf221887df2be2ae2654f (patch)
treedd3fe0d67118ca803578708b799aaeab37dc27fd /midend.c
parente411db788cfc0d0ed54b3c9b9deb15edba7d237a (diff)
downloadpuzzles-418cb3a5671404d2d91bf221887df2be2ae2654f.zip
puzzles-418cb3a5671404d2d91bf221887df2be2ae2654f.tar.gz
puzzles-418cb3a5671404d2d91bf221887df2be2ae2654f.tar.bz2
puzzles-418cb3a5671404d2d91bf221887df2be2ae2654f.tar.xz
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.
Diffstat (limited to 'midend.c')
-rw-r--r--midend.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/midend.c b/midend.c
index e66d15a..2e49e8d 100644
--- a/midend.c
+++ b/midend.c
@@ -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);
/*