mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Use C99 bool within source modules.
This is the main bulk of this boolification work, but although it's making the largest actual change, it should also be the least disruptive to anyone interacting with this code base downstream of me, because it doesn't modify any interface between modules: all the inter-module APIs were updated one by one in the previous commits. This just cleans up the code within each individual source file to use bool in place of int where I think that makes things clearer.
This commit is contained in:
100
map.c
100
map.c
@ -25,7 +25,7 @@
|
||||
*/
|
||||
#if defined STANDALONE_SOLVER
|
||||
#define SOLVER_DIAGNOSTICS
|
||||
int verbose = false;
|
||||
bool verbose = false;
|
||||
#elif defined SOLVER_DIAGNOSTICS
|
||||
#define verbose true
|
||||
#endif
|
||||
@ -84,7 +84,7 @@ struct map {
|
||||
int *graph;
|
||||
int n;
|
||||
int ngraph;
|
||||
int *immutable;
|
||||
bool *immutable;
|
||||
int *edgex, *edgey; /* position of a point on each edge */
|
||||
int *regionx, *regiony; /* position of a point in each region */
|
||||
};
|
||||
@ -93,7 +93,7 @@ struct game_state {
|
||||
game_params p;
|
||||
struct map *map;
|
||||
int *colouring, *pencil;
|
||||
int completed, cheated;
|
||||
bool completed, cheated;
|
||||
};
|
||||
|
||||
static game_params *default_params(void)
|
||||
@ -680,8 +680,8 @@ static int graph_vertex_start(int *graph, int n, int ngraph, int i)
|
||||
* the sake of the Palm port and its limited stack.
|
||||
*/
|
||||
|
||||
static int fourcolour_recurse(int *graph, int n, int ngraph,
|
||||
int *colouring, int *scratch, random_state *rs)
|
||||
static bool fourcolour_recurse(int *graph, int n, int ngraph,
|
||||
int *colouring, int *scratch, random_state *rs)
|
||||
{
|
||||
int nfree, nvert, start, i, j, k, c, ci;
|
||||
int cs[FOUR];
|
||||
@ -783,6 +783,7 @@ static void fourcolour(int *graph, int n, int ngraph, int *colouring,
|
||||
{
|
||||
int *scratch;
|
||||
int i;
|
||||
bool retd;
|
||||
|
||||
/*
|
||||
* For each vertex and each colour, we store the number of
|
||||
@ -799,8 +800,8 @@ static void fourcolour(int *graph, int n, int ngraph, int *colouring,
|
||||
for (i = 0; i < n; i++)
|
||||
colouring[i] = -1;
|
||||
|
||||
i = fourcolour_recurse(graph, n, ngraph, colouring, scratch, rs);
|
||||
assert(i); /* by the Four Colour Theorem :-) */
|
||||
retd = fourcolour_recurse(graph, n, ngraph, colouring, scratch, rs);
|
||||
assert(retd); /* by the Four Colour Theorem :-) */
|
||||
|
||||
sfree(scratch);
|
||||
}
|
||||
@ -870,12 +871,12 @@ static int bitcount(int word)
|
||||
static const char colnames[FOUR] = { 'R', 'Y', 'G', 'B' };
|
||||
#endif
|
||||
|
||||
static int place_colour(struct solver_scratch *sc,
|
||||
int *colouring, int index, int colour
|
||||
static bool place_colour(struct solver_scratch *sc,
|
||||
int *colouring, int index, int colour
|
||||
#ifdef SOLVER_DIAGNOSTICS
|
||||
, const char *verb
|
||||
, const char *verb
|
||||
#endif
|
||||
)
|
||||
)
|
||||
{
|
||||
int *graph = sc->graph, n = sc->n, ngraph = sc->ngraph;
|
||||
int j, k;
|
||||
@ -974,7 +975,7 @@ static int map_solver(struct solver_scratch *sc,
|
||||
* Now repeatedly loop until we find nothing further to do.
|
||||
*/
|
||||
while (1) {
|
||||
int done_something = false;
|
||||
bool done_something = false;
|
||||
|
||||
if (difficulty < DIFF_EASY)
|
||||
break; /* can't do anything at all! */
|
||||
@ -996,7 +997,8 @@ static int map_solver(struct solver_scratch *sc,
|
||||
}
|
||||
|
||||
if ((p & (p-1)) == 0) { /* p is a power of two */
|
||||
int c, ret;
|
||||
int c;
|
||||
bool ret;
|
||||
for (c = 0; c < FOUR; c++)
|
||||
if (p == (1 << c))
|
||||
break;
|
||||
@ -1040,7 +1042,7 @@ static int map_solver(struct solver_scratch *sc,
|
||||
int j1 = graph[i] / n, j2 = graph[i] % n;
|
||||
int j, k, v, v2;
|
||||
#ifdef SOLVER_DIAGNOSTICS
|
||||
int started = false;
|
||||
bool started = false;
|
||||
#endif
|
||||
|
||||
if (j1 > j2)
|
||||
@ -1279,7 +1281,7 @@ static int map_solver(struct solver_scratch *sc,
|
||||
struct solver_scratch *rsc;
|
||||
int *subcolouring, *origcolouring;
|
||||
int ret, subret;
|
||||
int we_already_got_one;
|
||||
bool we_already_got_one;
|
||||
|
||||
best = -1;
|
||||
bestc = FIVE;
|
||||
@ -1601,7 +1603,8 @@ static char *new_game_desc(const game_params *params, random_state *rs,
|
||||
ret = NULL;
|
||||
|
||||
{
|
||||
int run, pv;
|
||||
int run;
|
||||
bool pv;
|
||||
|
||||
/*
|
||||
* Start with a notional non-edge, so that there'll be an
|
||||
@ -1609,10 +1612,11 @@ static char *new_game_desc(const game_params *params, random_state *rs,
|
||||
* an edge.
|
||||
*/
|
||||
run = 1;
|
||||
pv = 0;
|
||||
pv = false;
|
||||
|
||||
for (i = 0; i < w*(h-1) + (w-1)*h; i++) {
|
||||
int x, y, dx, dy, v;
|
||||
int x, y, dx, dy;
|
||||
bool v;
|
||||
|
||||
if (i < w*(h-1)) {
|
||||
/* Horizontal edge. */
|
||||
@ -1704,13 +1708,14 @@ static const char *parse_edge_list(const game_params *params,
|
||||
const char **desc, int *map)
|
||||
{
|
||||
int w = params->w, h = params->h, wh = w*h, n = params->n;
|
||||
int i, k, pos, state;
|
||||
int i, k, pos;
|
||||
bool state;
|
||||
const char *p = *desc;
|
||||
|
||||
dsf_init(map+wh, wh);
|
||||
|
||||
pos = -1;
|
||||
state = 0;
|
||||
state = false;
|
||||
|
||||
/*
|
||||
* Parse the game description to get the list of edges, and
|
||||
@ -1828,14 +1833,15 @@ static game_state *new_game(midend *me, const game_params *params,
|
||||
for (i = 0; i < n; i++)
|
||||
state->pencil[i] = 0;
|
||||
|
||||
state->completed = state->cheated = false;
|
||||
state->completed = false;
|
||||
state->cheated = false;
|
||||
|
||||
state->map = snew(struct map);
|
||||
state->map->refcount = 1;
|
||||
state->map->map = snewn(wh*4, int);
|
||||
state->map->graph = snewn(n*n, int);
|
||||
state->map->n = n;
|
||||
state->map->immutable = snewn(n, int);
|
||||
state->map->immutable = snewn(n, bool);
|
||||
for (i = 0; i < n; i++)
|
||||
state->map->immutable[i] = false;
|
||||
|
||||
@ -1882,7 +1888,7 @@ static game_state *new_game(midend *me, const game_params *params,
|
||||
{
|
||||
random_state *rs = random_new(desc, strlen(desc));
|
||||
int *squares = snewn(wh, int);
|
||||
int done_something;
|
||||
bool done_something;
|
||||
|
||||
for (i = 0; i < wh; i++)
|
||||
squares[i] = i;
|
||||
@ -2268,9 +2274,10 @@ struct game_ui {
|
||||
int drag_colour;
|
||||
int drag_pencil;
|
||||
int dragx, dragy;
|
||||
int show_numbers;
|
||||
bool show_numbers;
|
||||
|
||||
int cur_x, cur_y, cur_visible, cur_moved, cur_lastmove;
|
||||
int cur_x, cur_y, cur_lastmove;
|
||||
bool cur_visible, cur_moved;
|
||||
};
|
||||
|
||||
static game_ui *new_ui(const game_state *state)
|
||||
@ -2280,7 +2287,9 @@ static game_ui *new_ui(const game_state *state)
|
||||
ui->drag_colour = -2;
|
||||
ui->drag_pencil = 0;
|
||||
ui->show_numbers = false;
|
||||
ui->cur_x = ui->cur_y = ui->cur_visible = ui->cur_moved = 0;
|
||||
ui->cur_x = ui->cur_y = 0;
|
||||
ui->cur_visible = false;
|
||||
ui->cur_moved = false;
|
||||
ui->cur_lastmove = 0;
|
||||
return ui;
|
||||
}
|
||||
@ -2307,8 +2316,9 @@ static void game_changed_state(game_ui *ui, const game_state *oldstate,
|
||||
struct game_drawstate {
|
||||
int tilesize;
|
||||
unsigned long *drawn, *todraw;
|
||||
int started;
|
||||
int dragx, dragy, drag_visible;
|
||||
bool started;
|
||||
int dragx, dragy;
|
||||
bool drag_visible;
|
||||
blitter *bl;
|
||||
};
|
||||
|
||||
@ -2383,7 +2393,8 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
||||
int x, int y, int button)
|
||||
{
|
||||
char *bufp, buf[256];
|
||||
int alt_button, drop_region;
|
||||
bool alt_button;
|
||||
int drop_region;
|
||||
|
||||
/*
|
||||
* Enable or disable numeric labels on regions.
|
||||
@ -2394,15 +2405,16 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
||||
}
|
||||
|
||||
if (IS_CURSOR_MOVE(button)) {
|
||||
move_cursor(button, &ui->cur_x, &ui->cur_y, state->p.w, state->p.h, 0);
|
||||
ui->cur_visible = 1;
|
||||
ui->cur_moved = 1;
|
||||
move_cursor(button, &ui->cur_x, &ui->cur_y, state->p.w, state->p.h,
|
||||
false);
|
||||
ui->cur_visible = true;
|
||||
ui->cur_moved = true;
|
||||
ui->cur_lastmove = button;
|
||||
return UI_UPDATE;
|
||||
}
|
||||
if (IS_CURSOR_SELECT(button)) {
|
||||
if (!ui->cur_visible) {
|
||||
ui->cur_visible = 1;
|
||||
ui->cur_visible = true;
|
||||
return UI_UPDATE;
|
||||
}
|
||||
if (ui->drag_colour == -2) { /* not currently cursor-dragging, start. */
|
||||
@ -2414,10 +2426,10 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
||||
ui->drag_colour = -1;
|
||||
ui->drag_pencil = 0;
|
||||
}
|
||||
ui->cur_moved = 0;
|
||||
ui->cur_moved = false;
|
||||
return UI_UPDATE;
|
||||
} else { /* currently cursor-dragging; drop the colour in the new region. */
|
||||
alt_button = (button == CURSOR_SELECT2) ? 1 : 0;
|
||||
alt_button = (button == CURSOR_SELECT2);
|
||||
/* Double-select removes current colour. */
|
||||
if (!ui->cur_moved) ui->drag_colour = -1;
|
||||
drop_region = region_from_ui_cursor(state, ui);
|
||||
@ -2439,7 +2451,7 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
||||
}
|
||||
ui->dragx = x;
|
||||
ui->dragy = y;
|
||||
ui->cur_visible = 0;
|
||||
ui->cur_visible = false;
|
||||
return UI_UPDATE;
|
||||
}
|
||||
|
||||
@ -2452,7 +2464,7 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
||||
|
||||
if ((button == LEFT_RELEASE || button == RIGHT_RELEASE) &&
|
||||
ui->drag_colour > -2) {
|
||||
alt_button = (button == RIGHT_RELEASE) ? 1 : 0;
|
||||
alt_button = (button == RIGHT_RELEASE);
|
||||
drop_region = region_from_coords(state, ds, x, y);
|
||||
goto drag_dropped;
|
||||
}
|
||||
@ -2518,7 +2530,7 @@ static game_state *execute_move(const game_state *state, const char *move)
|
||||
int c, k, adv, i;
|
||||
|
||||
while (*move) {
|
||||
int pencil = false;
|
||||
bool pencil = false;
|
||||
|
||||
c = *move;
|
||||
if (c == 'p') {
|
||||
@ -2562,7 +2574,7 @@ static game_state *execute_move(const game_state *state, const char *move)
|
||||
* Check for completion.
|
||||
*/
|
||||
if (!ret->completed) {
|
||||
int ok = true;
|
||||
bool ok = true;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
if (ret->colouring[i] < 0) {
|
||||
@ -2987,7 +2999,8 @@ static void game_redraw(drawing *dr, game_drawstate *ds,
|
||||
* Draw the dragged colour blob if any.
|
||||
*/
|
||||
if ((ui->drag_colour > -2) || ui->cur_visible) {
|
||||
int bg, iscur = 0, cursor_x, cursor_y;
|
||||
int bg, cursor_x, cursor_y;
|
||||
bool iscur = false;
|
||||
if (ui->drag_colour >= 0)
|
||||
bg = COL_0 + ui->drag_colour;
|
||||
else if (ui->drag_colour == -1) {
|
||||
@ -2997,7 +3010,7 @@ static void game_redraw(drawing *dr, game_drawstate *ds,
|
||||
int c = (r < 0) ? -1 : state->colouring[r];
|
||||
/*bg = COL_GRID;*/
|
||||
bg = (c < 0) ? COL_BACKGROUND : COL_0 + c;
|
||||
iscur = 1;
|
||||
iscur = true;
|
||||
}
|
||||
|
||||
if (ui->cur_visible) {
|
||||
@ -3262,8 +3275,9 @@ int main(int argc, char **argv)
|
||||
game_state *s;
|
||||
char *id = NULL, *desc;
|
||||
const char *err;
|
||||
int grade = false;
|
||||
int ret, diff, really_verbose = false;
|
||||
bool grade = false;
|
||||
int ret, diff;
|
||||
bool really_verbose = false;
|
||||
struct solver_scratch *sc;
|
||||
int i;
|
||||
|
||||
|
Reference in New Issue
Block a user