From: Simon Tatham Date: Sat, 30 Mar 2013 16:59:19 +0000 (+0000) Subject: Add a midend function to return the current random seed, parallel to X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=e6026d9d8e7864c4d0f1eeba53c33d430ac36dfd;p=sgt-puzzles.git 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] --- 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);