From e6026d9d8e7864c4d0f1eeba53c33d430ac36dfd Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 30 Mar 2013 16:59:19 +0000 Subject: [PATCH] Add a midend function to return the current random seed, parallel to the existing one that returns the game id. No front end has so far needed this, but one is about to. [originally from svn r9778] --- devel.but | 11 +++++++++++ midend.c | 15 +++++++++++++++ puzzles.h | 1 + 3 files changed, 27 insertions(+) diff --git a/devel.but b/devel.but index 9668651..02f9cfa 100644 --- a/devel.but +++ b/devel.but @@ -3091,6 +3091,17 @@ Returns a descriptive game ID (i.e. one in the form \cq{params:description}) describing the game currently active in the mid-end. The returned string is dynamically allocated. +\H{midend-get-random-seed} \cw{midend_get_random_seed()} + +\c char *midend_get_random_seed(midend *me) + +Returns a random game ID (i.e. one in the form \cq{params#seedstring}) +describing the game currently active in the mid-end, if there is one. +If the game was created by entering a description, no random seed will +currently exist and this function will return \cw{NULL}. + +The returned string, if it is non-\cw{NULL}, is dynamically allocated. + \H{midend-can-format-as-text-now} \cw{midend_can_format_as_text_now()} \c int midend_can_format_as_text_now(midend *me); diff --git a/midend.c b/midend.c index 53dca21..fddf01d 100644 --- a/midend.c +++ b/midend.c @@ -1304,6 +1304,21 @@ char *midend_get_game_id(midend *me) return ret; } +char *midend_get_random_seed(midend *me) +{ + char *parstr, *ret; + + if (!me->seedstr) + return NULL; + + parstr = me->ourgame->encode_params(me->curparams, TRUE); + assert(parstr); + ret = snewn(strlen(parstr) + strlen(me->seedstr) + 2, char); + sprintf(ret, "%s#%s", parstr, me->seedstr); + sfree(parstr); + return ret; +} + char *midend_set_config(midend *me, int which, config_item *cfg) { char *error; diff --git a/puzzles.h b/puzzles.h index e8a75c2..fbd1828 100644 --- a/puzzles.h +++ b/puzzles.h @@ -251,6 +251,7 @@ config_item *midend_get_config(midend *me, int which, char **wintitle); char *midend_set_config(midend *me, int which, config_item *cfg); char *midend_game_id(midend *me, char *id); char *midend_get_game_id(midend *me); +char *midend_get_random_seed(midend *me); int midend_can_format_as_text_now(midend *me); char *midend_text_format(midend *me); char *midend_solve(midend *me); -- 2.30.2