From 0b93de904a98f119b1a95d3a53029f1ed4bfb9b3 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 12 Apr 2013 17:11:49 +0000 Subject: [PATCH] Add 'const' to the game_params arguments in validate_desc and new_desc. Oddities in the 'make test' output brought to my attention that a few puzzles have been modifying their input game_params for various reasons; they shouldn't do that, because that's the game_params held permanently by the midend and it will affect subsequent game generations if they modify it. So now those arguments are const, and all the games which previously modified their game_params now take a copy and modify that instead. [originally from svn r9830] --- blackbox.c | 4 ++-- bridges.c | 6 +++--- cube.c | 7 ++++--- devel.but | 4 ++-- dominosa.c | 4 ++-- fifteen.c | 4 ++-- filling.c | 4 ++-- flip.c | 4 ++-- galaxies.c | 6 +++--- guess.c | 4 ++-- inertia.c | 4 ++-- keen.c | 4 ++-- lightup.c | 11 +++++++---- loopy.c | 8 ++++---- magnets.c | 9 +++++---- map.c | 6 +++--- mines.c | 4 ++-- net.c | 4 ++-- netslide.c | 4 ++-- nullgame.c | 4 ++-- pattern.c | 4 ++-- pearl.c | 6 +++--- pegs.c | 4 ++-- puzzles.h | 4 ++-- range.c | 4 ++-- rect.c | 6 ++++-- samegame.c | 4 ++-- signpost.c | 6 +++--- singles.c | 8 ++++---- sixteen.c | 4 ++-- slant.c | 4 ++-- solo.c | 9 +++++---- tents.c | 6 ++++-- towers.c | 4 ++-- twiddle.c | 4 ++-- undead.c | 6 +++--- unequal.c | 8 +++++--- unfinished/group.c | 6 +++--- unfinished/separate.c | 4 ++-- unfinished/slide.c | 4 ++-- unfinished/sokoban.c | 4 ++-- unruly.c | 4 ++-- untangle.c | 4 ++-- 43 files changed, 117 insertions(+), 105 deletions(-) diff --git a/blackbox.c b/blackbox.c index 1546d91..c0417ec 100644 --- a/blackbox.c +++ b/blackbox.c @@ -210,7 +210,7 @@ static char *validate_params(game_params *params, int full) * Then we obfuscate it. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int nballs = params->minballs, i; @@ -251,7 +251,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int nballs, dlen = strlen(desc), i; unsigned char *bmp; diff --git a/bridges.c b/bridges.c index a5eef25..d60036b 100644 --- a/bridges.c +++ b/bridges.c @@ -1735,7 +1735,7 @@ static int solve_from_scratch(game_state *state, int difficulty) /* --- New game functions --- */ -static game_state *new_state(game_params *params) +static game_state *new_state(const game_params *params) { game_state *ret = snew(game_state); int wh = params->w * params->h, i; @@ -1845,7 +1845,7 @@ static void free_game(game_state *state) #define ORDER(a,b) do { if (a < b) { int tmp=a; int a=b; int b=tmp; } } while(0) -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { game_state *tobuild = NULL; @@ -2015,7 +2015,7 @@ generated: return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int i, wh = params->w * params->h; diff --git a/cube.c b/cube.c index 15c479b..380e330 100644 --- a/cube.c +++ b/cube.c @@ -315,7 +315,8 @@ static char *encode_params(game_params *params, int full) } typedef void (*egc_callback)(void *, struct grid_square *); -static void enum_grid_squares(game_params *params, egc_callback callback, void *ctx) +static void enum_grid_squares(const game_params *params, egc_callback callback, + void *ctx) { const struct solid *solid = solids[params->solid]; @@ -597,7 +598,7 @@ static void classify_grid_square_callback(void *ctx, struct grid_square *sq) data->squareindex++; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { struct grid_data data; @@ -845,7 +846,7 @@ static struct solid *transform_poly(const struct solid *solid, int flip, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int area = grid_area(params->d1, params->d2, solids[params->solid]->order); int i, j; diff --git a/devel.but b/devel.but index c218cd1..e95e1d2 100644 --- a/devel.but +++ b/devel.but @@ -655,7 +655,7 @@ a descriptive-format game ID. \S{backend-new-desc} \cw{new_desc()} -\c char *(*new_desc)(game_params *params, random_state *rs, +\c char *(*new_desc)(const game_params *params, random_state *rs, \c char **aux, int interactive); This function is where all the really hard work gets done. This is @@ -696,7 +696,7 @@ again in the game description. \S{backend-validate-desc} \cw{validate_desc()} -\c char *(*validate_desc)(game_params *params, char *desc); +\c char *(*validate_desc)(const game_params *params, char *desc); This function is given a game description, and its job is to validate that it describes a puzzle which makes sense. diff --git a/dominosa.c b/dominosa.c index 2662410..d80425c 100644 --- a/dominosa.c +++ b/dominosa.c @@ -545,7 +545,7 @@ static int solver(int w, int h, int n, int *grid, int *output) * End of solver code. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int n = params->n, w = n+2, h = n+1, wh = w*h; @@ -746,7 +746,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int n = params->n, w = n+2, h = n+1, wh = w*h; int *occurrences; diff --git a/fifteen.c b/fifteen.c index 1a106e8..06e738b 100644 --- a/fifteen.c +++ b/fifteen.c @@ -155,7 +155,7 @@ static int perm_parity(int *perm, int n) return ret; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int gap, n, i, x; @@ -271,7 +271,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *p, *err; int i, area; diff --git a/filling.c b/filling.c index a0c9fc4..4cd4318 100644 --- a/filling.c +++ b/filling.c @@ -867,7 +867,7 @@ static void minimize_clue_set(int *board, int w, int h, int *randomize) { sfree(board_cp); } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { const int w = params->w; @@ -906,7 +906,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return game_description; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int i; const int sz = params->w * params->h; diff --git a/flip.c b/flip.c index c30e484..e42e8c0 100644 --- a/flip.c +++ b/flip.c @@ -347,7 +347,7 @@ static void addneighbours(tree234 *t, int w, int h, int cx, int cy, addsq(t, w, h, cx, cy, x, y+1, matrix); } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h, wh = w * h; @@ -596,7 +596,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h, wh = w * h; int mlen = (wh*wh+3)/4, glen = (wh+3)/4; diff --git a/galaxies.c b/galaxies.c index db89700..bd0e982 100644 --- a/galaxies.c +++ b/galaxies.c @@ -1233,7 +1233,7 @@ static void generate_pass(game_state *state, random_state *rs, int *scratch, static int check_complete(game_state *state, int *dsf, int *colours); static int solver_state(game_state *state, int maxdiff); -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { game_state *state = blank_game(params->w, params->h), *copy; @@ -1480,7 +1480,7 @@ static int dots_too_close(game_state *state) return (ret == -1) ? 1 : 0; } -static game_state *load_game(game_params *params, char *desc, +static game_state *load_game(const game_params *params, char *desc, char **why_r) { game_state *state = blank_game(params->w, params->h); @@ -1528,7 +1528,7 @@ fail: return NULL; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *why = NULL; game_state *dummy = load_game(params, desc, &why); diff --git a/guess.c b/guess.c index 15cf0d9..b4374ba 100644 --- a/guess.c +++ b/guess.c @@ -264,7 +264,7 @@ static void free_pegrow(pegrow pegs) sfree(pegs); } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { unsigned char *bmp = snewn(params->npegs, unsigned char); @@ -287,7 +287,7 @@ newcol: return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { unsigned char *bmp; int i; diff --git a/inertia.c b/inertia.c index eb850ac..590be69 100644 --- a/inertia.c +++ b/inertia.c @@ -583,13 +583,13 @@ static char *gengrid(int w, int h, random_state *rs) return grid; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { return gengrid(params->w, params->h, rs); } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h, wh = w*h; int starts = 0, gems = 0, i; diff --git a/keen.c b/keen.c index e951dba..ccda002 100644 --- a/keen.c +++ b/keen.c @@ -740,7 +740,7 @@ static char *parse_block_structure(const char **p, int w, int *dsf) return NULL; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, a = w*w; @@ -1145,7 +1145,7 @@ done * Gameplay. */ -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, a = w*w; int *dsf; diff --git a/lightup.c b/lightup.c index 9131428..97ccc2a 100644 --- a/lightup.c +++ b/lightup.c @@ -367,7 +367,7 @@ static char *validate_params(game_params *params, int full) /* --- Game state construction/freeing helper functions --- */ -static game_state *new_state(game_params *params) +static game_state *new_state(const game_params *params) { game_state *ret = snew(game_state); @@ -568,7 +568,8 @@ static void clean_board(game_state *state, int leave_blacks) state->nlights = 0; } -static void set_blacks(game_state *state, game_params *params, random_state *rs) +static void set_blacks(game_state *state, const game_params *params, + random_state *rs) { int x, y, degree = 0, rotate = 0, nblack; int rh, rw, i; @@ -1516,9 +1517,11 @@ static int puzzle_is_good(game_state *state, int difficulty) #define MAX_GRIDGEN_TRIES 20 -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params_in, random_state *rs, char **aux, int interactive) { + game_params params_copy = *params_in; /* structure copy */ + game_params *params = ¶ms_copy; game_state *news = new_state(params), *copys; int i, j, run, x, y, wh = params->w*params->h, num; char *ret, *p; @@ -1625,7 +1628,7 @@ goodpuzzle: return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int i; for (i = 0; i < params->w*params->h; i++) { diff --git a/loopy.c b/loopy.c index 6b3d53e..68cf646 100644 --- a/loopy.c +++ b/loopy.c @@ -231,7 +231,7 @@ struct game_drawstate { char *clue_satisfied; }; -static char *validate_desc(game_params *params, char *desc); +static char *validate_desc(const game_params *params, char *desc); static int dot_order(const game_state* state, int i, char line_type); static int face_order(const game_state* state, int i, char line_type); static solver_state *solve_game_rec(const solver_state *sstate); @@ -277,7 +277,7 @@ static const struct { /* Generates a (dynamically allocated) new grid, according to the * type and size requested in params. Does nothing if the grid is already * generated. */ -static grid *loopy_generate_grid(game_params *params, char *grid_desc) +static grid *loopy_generate_grid(const game_params *params, char *grid_desc) { return grid_new(grid_types[params->type], params->w, params->h, grid_desc); } @@ -713,7 +713,7 @@ static char *extract_grid_desc(char **desc) /* We require that the params pass the test in validate_params and that the * description fills the entire game area */ -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int count = 0; grid *g; @@ -1364,7 +1364,7 @@ static game_state *remove_clues(game_state *state, random_state *rs, } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { /* solution and description both use run-length encoding in obvious ways */ diff --git a/magnets.c b/magnets.c index e9b8c7d..2f56c7c 100644 --- a/magnets.c +++ b/magnets.c @@ -422,7 +422,8 @@ badchar: return NULL; } -static game_state *new_game_int(game_params *params, char *desc, const char **prob) +static game_state *new_game_int(const game_params *params, char *desc, + const char **prob) { game_state *state = new_state(params->w, params->h); int x, y, idx, *count; @@ -529,7 +530,7 @@ done: return state; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { const char *prob; game_state *st = new_game_int(params, desc, &prob); @@ -1603,7 +1604,7 @@ static void generate_aux(game_state *new, char *aux) aux[new->wh] = '\0'; } -static int check_difficulty(game_params *params, game_state *new, +static int check_difficulty(const game_params *params, game_state *new, random_state *rs) { int *scratch, *grid_correct, slen, i; @@ -1675,7 +1676,7 @@ static int check_difficulty(game_params *params, game_state *new, return 0; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux_r, int interactive) { game_state *new = new_state(params->w, params->h); diff --git a/map.c b/map.c index af7c0af..34a9536 100644 --- a/map.c +++ b/map.c @@ -1393,7 +1393,7 @@ static int map_solver(struct solver_scratch *sc, * Game generation main function. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { struct solver_scratch *sc = NULL; @@ -1704,7 +1704,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *parse_edge_list(game_params *params, char **desc, int *map) +static char *parse_edge_list(const game_params *params, char **desc, int *map) { int w = params->w, h = params->h, wh = w*h, n = params->n; int i, k, pos, state; @@ -1780,7 +1780,7 @@ static char *parse_edge_list(game_params *params, char **desc, int *map) return NULL; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h, wh = w*h, n = params->n; int area; diff --git a/mines.c b/mines.c index abd1ad8..f8adcd3 100644 --- a/mines.c +++ b/mines.c @@ -1955,7 +1955,7 @@ static char *new_mine_layout(int w, int h, int n, int x, int y, int unique, return grid; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { /* @@ -1994,7 +1994,7 @@ static char *new_game_desc(game_params *params, random_state *rs, } } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int wh = params->w * params->h; int x, y; diff --git a/net.c b/net.c index 2e19f1f..13aa191 100644 --- a/net.c +++ b/net.c @@ -1126,7 +1126,7 @@ static void perturb(int w, int h, unsigned char *tiles, int wrapping, sfree(perimeter); } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { tree234 *possibilities, *barriertree; @@ -1545,7 +1545,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->width, h = params->height; int i; diff --git a/netslide.c b/netslide.c index 8d18652..e3fc901 100644 --- a/netslide.c +++ b/netslide.c @@ -324,7 +324,7 @@ static char *validate_params(game_params *params, int full) * Randomly select a new game description. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { tree234 *possibilities, *barriertree; @@ -696,7 +696,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->width, h = params->height; int i; diff --git a/nullgame.c b/nullgame.c index 4e68bf2..e315d00 100644 --- a/nullgame.c +++ b/nullgame.c @@ -83,13 +83,13 @@ static char *validate_params(game_params *params, int full) return NULL; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { return dupstr("FIXME"); } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { return NULL; } diff --git a/pattern.c b/pattern.c index 300a1b3..a10d8a3 100644 --- a/pattern.c +++ b/pattern.c @@ -662,7 +662,7 @@ static unsigned char *generate_soluble(random_state *rs, int w, int h) return grid; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { unsigned char *grid; @@ -749,7 +749,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int i, n, rowspace; char *p; diff --git a/pearl.c b/pearl.c index ed1ee16..1159c04 100644 --- a/pearl.c +++ b/pearl.c @@ -1158,7 +1158,7 @@ void pearl_loopgen(int w, int h, char *lines, random_state *rs) #endif } -static int new_clues(game_params *params, random_state *rs, +static int new_clues(const game_params *params, random_state *rs, char *clues, char *grid) { int w = params->w, h = params->h, diff = params->difficulty; @@ -1356,7 +1356,7 @@ static int new_clues(game_params *params, random_state *rs, return ngen; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { char *grid, *clues; @@ -1393,7 +1393,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int i, sizesofar; const int totalsize = params->w * params->h; diff --git a/pegs.c b/pegs.c index 3dac5fc..066ab09 100644 --- a/pegs.c +++ b/pegs.c @@ -503,7 +503,7 @@ static void pegs_generate(unsigned char *grid, int w, int h, random_state *rs) * it as part of the puzzle. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h; @@ -660,7 +660,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int len = params->w * params->h; diff --git a/puzzles.h b/puzzles.h index 8232692..421d030 100644 --- a/puzzles.h +++ b/puzzles.h @@ -487,9 +487,9 @@ struct game { config_item *(*configure)(game_params *params); game_params *(*custom_params)(config_item *cfg); char *(*validate_params)(game_params *params, int full); - char *(*new_desc)(game_params *params, random_state *rs, + char *(*new_desc)(const game_params *params, random_state *rs, char **aux, int interactive); - char *(*validate_desc)(game_params *params, char *desc); + char *(*validate_desc)(const game_params *params, char *desc); game_state *(*new_game)(midend *me, game_params *params, char *desc); game_state *(*dup_game)(game_state *state); void (*free_game)(game_state *state); diff --git a/range.c b/range.c index 43231d9..7e71814 100644 --- a/range.c +++ b/range.c @@ -672,7 +672,7 @@ static void newdesc_compute_clues(game_state *state); static int newdesc_strip_clues(game_state *state, int *shuffle_1toN); static char *newdesc_encode_game_description(int n, puzzle_size *grid); -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int const w = params->w, h = params->h, n = w * h; @@ -1060,7 +1060,7 @@ static char *newdesc_encode_game_description(int area, puzzle_size *grid) return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int const n = params->w * params->h; int squares = 0; diff --git a/rect.c b/rect.c index 25b2132..53d389a 100644 --- a/rect.c +++ b/rect.c @@ -1146,9 +1146,11 @@ static void display_grid(game_params *params, int *grid, int *numbers, int all) } #endif -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params_in, random_state *rs, char **aux, int interactive) { + game_params params_copy = *params_in; /* structure copy */ + game_params *params = ¶ms_copy; int *grid, *numbers = NULL; int x, y, y2, y2last, yx, run, i, nsquares; char *desc, *p; @@ -1776,7 +1778,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int area = params->w * params->h; int squares = 0; diff --git a/samegame.c b/samegame.c index 65ebef7..a271dee 100644 --- a/samegame.c +++ b/samegame.c @@ -917,7 +917,7 @@ static void gen_grid_random(int w, int h, int nc, int *grid, random_state *rs) } } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { char *ret; @@ -948,7 +948,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int area = params->w * params->h, i; char *p = desc; diff --git a/signpost.c b/signpost.c index b5e22ed..972bf82 100644 --- a/signpost.c +++ b/signpost.c @@ -499,7 +499,7 @@ static void free_game(game_state *state) sfree(state); } -static void unpick_desc(game_params *params, char *desc, +static void unpick_desc(const game_params *params, char *desc, game_state **sout, char **mout) { game_state *state = blank_game(params->w, params->h); @@ -793,7 +793,7 @@ done: return ret; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { game_state *state = blank_game(params->w, params->h); @@ -840,7 +840,7 @@ generate: return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *ret = NULL; diff --git a/singles.c b/singles.c index 32449b6..319ab11 100644 --- a/singles.c +++ b/singles.c @@ -333,7 +333,7 @@ static int c2n(char c) { return -1; } -static void unpick_desc(game_params *params, char *desc, +static void unpick_desc(const game_params *params, char *desc, game_state **sout, char **mout) { game_state *state = blank_game(params->w, params->h); @@ -1207,7 +1207,7 @@ solved: the solver gets a headstart working out where they are. */ -static int new_game_is_good(game_params *params, +static int new_game_is_good(const game_params *params, game_state *state, game_state *tosolve) { int sret, sret_easy = 0; @@ -1289,7 +1289,7 @@ found: return j; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { game_state *state = blank_game(params->w, params->h); @@ -1401,7 +1401,7 @@ randomise: return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *ret = NULL; diff --git a/sixteen.c b/sixteen.c index 88c7ef4..d5a2789 100644 --- a/sixteen.c +++ b/sixteen.c @@ -193,7 +193,7 @@ static int perm_parity(int *perm, int n) return ret; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int stop, n, i, x; @@ -398,7 +398,7 @@ static char *new_game_desc(game_params *params, random_state *rs, } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *p, *err; int i, area; diff --git a/slant.c b/slant.c index 2f9de52..251cc4a 100644 --- a/slant.c +++ b/slant.c @@ -1063,7 +1063,7 @@ static void slant_generate(int w, int h, signed char *soln, random_state *rs) sfree(connected); } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h, W = w+1, H = h+1; @@ -1216,7 +1216,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h, W = w+1, H = h+1; int area = W*H; diff --git a/solo.c b/solo.c index d9bf18d..50acfc1 100644 --- a/solo.c +++ b/solo.c @@ -3063,7 +3063,8 @@ static int check_valid(int cr, struct block_structure *blocks, return TRUE; } -static int symmetries(game_params *params, int x, int y, int *output, int s) +static int symmetries(const game_params *params, int x, int y, + int *output, int s) { int c = params->c, r = params->r, cr = c*r; int i = 0; @@ -3305,7 +3306,7 @@ static int blocks_encode_space(struct block_structure *blocks) return grid_encode_space(area); } -static char *encode_puzzle_desc(game_params *params, digit *grid, +static char *encode_puzzle_desc(const game_params *params, digit *grid, struct block_structure *blocks, digit *kgrid, struct block_structure *kblocks) @@ -3548,7 +3549,7 @@ static struct block_structure *gen_killer_cages(int cr, random_state *rs, return b; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int c = params->c, r = params->r, cr = c*r; @@ -3989,7 +3990,7 @@ static char *validate_block_desc(char **pdesc, int cr, int area, return NULL; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int cr = params->c * params->r, area = cr*cr; char *err; diff --git a/tents.c b/tents.c index ef5debc..a4b1b6e 100644 --- a/tents.c +++ b/tents.c @@ -900,9 +900,11 @@ static int tents_solve(int w, int h, const char *grid, int *numbers, return 1; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params_in, random_state *rs, char **aux, int interactive) { + game_params params_copy = *params_in; /* structure copy */ + game_params *params = ¶ms_copy; int w = params->w, h = params->h; int ntrees = w * h / 5; char *grid = snewn(w*h, char); @@ -1188,7 +1190,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h; int area, i; diff --git a/towers.c b/towers.c index bd39554..39ab651 100644 --- a/towers.c +++ b/towers.c @@ -608,7 +608,7 @@ static int solver(int w, int *clues, digit *soln, int maxdiff) * Grid generation. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, a = w*w; @@ -803,7 +803,7 @@ done * Gameplay. */ -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, a = w*w; const char *p = desc; diff --git a/twiddle.c b/twiddle.c index b5b276f..08ef792 100644 --- a/twiddle.c +++ b/twiddle.c @@ -306,7 +306,7 @@ static int grid_complete(int *grid, int wh, int orientable) return ok; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int *grid; @@ -430,7 +430,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *p; int w = params->w, h = params->h, wh = w*h; diff --git a/undead.c b/undead.c index e38c968..fe2cd83 100644 --- a/undead.c +++ b/undead.c @@ -237,7 +237,7 @@ struct game_state { int cheated; }; -static game_state *new_state(game_params *params) { +static game_state *new_state(const game_params *params) { int i; game_state *state = snew(game_state); state->common = snew(struct game_common); @@ -956,7 +956,7 @@ int path_cmp(const void *a, const void *b) { return pa->num_monsters - pb->num_monsters; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int i,count,c,w,h,r,p,g; game_state *new; @@ -1419,7 +1419,7 @@ static game_state *new_game(midend *me, game_params *params, char *desc) { return state; } -static char *validate_desc(game_params *params, char *desc) { +static char *validate_desc(const game_params *params, char *desc) { int i; int w = params->w, h = params->h; int wh = w*h; diff --git a/unequal.c b/unequal.c index d16a572..a35d7a8 100644 --- a/unequal.c +++ b/unequal.c @@ -1094,9 +1094,11 @@ static void add_adjacent_flags(game_state *state, digit *latin) } } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params_in, random_state *rs, char **aux, int interactive) { + game_params params_copy = *params_in; /* structure copy */ + game_params *params = ¶ms_copy; digit *sq = NULL; int i, x, y, retlen, k, nsol; int o2 = params->order * params->order, ntries = 1; @@ -1188,7 +1190,7 @@ generate: return ret; } -static game_state *load_game(game_params *params, char *desc, +static game_state *load_game(const game_params *params, char *desc, char **why_r) { game_state *state = blank_game(params->order, params->adjacent); @@ -1284,7 +1286,7 @@ static game_state *new_game(midend *me, game_params *params, char *desc) return state; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { char *why = NULL; game_state *dummy = load_game(params, desc, &why); diff --git a/unfinished/group.c b/unfinished/group.c index 1c2c02e..28066e6 100644 --- a/unfinished/group.c +++ b/unfinished/group.c @@ -361,7 +361,7 @@ static int solver_normal(struct latin_solver *solver, void *vctx) #define SOLVER(upper,title,func,lower) func, static usersolver_t const group_solvers[] = { DIFFLIST(SOLVER) }; -static int solver(game_params *params, digit *grid, int maxdiff) +static int solver(const game_params *params, digit *grid, int maxdiff) { int w = params->w; int ret; @@ -595,7 +595,7 @@ static const struct groups groups[] = { /* ----- data generated by group.gap ends ----- */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, a = w*w; @@ -810,7 +810,7 @@ static char *validate_grid_desc(const char **pdesc, int range, int area) return NULL; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, a = w*w; const char *p = desc; diff --git a/unfinished/separate.c b/unfinished/separate.c index ee9c830..c5f25a5 100644 --- a/unfinished/separate.c +++ b/unfinished/separate.c @@ -626,7 +626,7 @@ unsigned char *generate(int w, int h, int k, random_state *rs) * End of solver/generator code. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h, wh = w*h, k = params->k; @@ -646,7 +646,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { return NULL; } diff --git a/unfinished/slide.c b/unfinished/slide.c index 38ef4d0..f87699d 100644 --- a/unfinished/slide.c +++ b/unfinished/slide.c @@ -837,7 +837,7 @@ static void generate_board(int w, int h, int *rtx, int *rty, int *minmoves, * End of solver/generator code. */ -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h, wh = w*h; @@ -891,7 +891,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h, wh = w*h; int *active, *link; diff --git a/unfinished/sokoban.c b/unfinished/sokoban.c index 4b0780c..09f4ee8 100644 --- a/unfinished/sokoban.c +++ b/unfinished/sokoban.c @@ -731,7 +731,7 @@ static void sokoban_generate(int w, int h, unsigned char *grid, int moves, grid[py*w+px] = PLAYER; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int w = params->w, h = params->h; @@ -806,7 +806,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return desc; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w = params->w, h = params->h; int area = 0; diff --git a/unruly.c b/unruly.c index d2ea9aa..28477f0 100644 --- a/unruly.c +++ b/unruly.c @@ -269,7 +269,7 @@ static char *validate_params(game_params *params, int full) return NULL; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int w2 = params->w2, h2 = params->h2; int s = w2 * h2; @@ -1077,7 +1077,7 @@ static int unruly_fill_game(game_state *state, struct unruly_scratch *scratch, return TRUE; } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { #ifdef STANDALONE_SOLVER diff --git a/untangle.c b/untangle.c index 59d48c4..3180f95 100644 --- a/untangle.c +++ b/untangle.c @@ -491,7 +491,7 @@ static void make_circle(point *pts, int n, int w) } } -static char *new_game_desc(game_params *params, random_state *rs, +static char *new_game_desc(const game_params *params, random_state *rs, char **aux, int interactive) { int n = params->n, i; @@ -734,7 +734,7 @@ static char *new_game_desc(game_params *params, random_state *rs, return ret; } -static char *validate_desc(game_params *params, char *desc) +static char *validate_desc(const game_params *params, char *desc) { int a, b; -- 2.30.2