ref: 08915945e64d2d3dfea7ec426228f814a6e65adf
parent: 33b55db48e9573c6c825e3a222ff968f6a0bd4f4
author: Simon Tatham <anakin@pobox.com>
date: Tue Nov 13 16:42:28 EST 2018
Adopt C99 bool in the shared Latin-square API. latin_check now returns bool, and latin_solver_diff_set takes a bool 'extreme' flag. Should be non-disruptive.
--- a/latin.c
+++ b/latin.c
@@ -650,7 +650,7 @@
int latin_solver_diff_set(struct latin_solver *solver,
struct latin_solver_scratch *scratch,
- int extreme)
+ bool extreme)
{
int x, y, n, ret, o = solver->o;
#ifdef STANDALONE_SOLVER
@@ -1244,12 +1244,12 @@
#define ELT(sq,x,y) (sq[((y)*order)+(x)])
-/* returns non-zero if sq is not a latin square. */
-int latin_check(digit *sq, int order)
+/* returns true if sq is not a latin square. */
+bool latin_check(digit *sq, int order)
{
tree234 *dict = newtree234(latin_check_cmp);
int c, r;
- int ret = 0;
+ bool ret = false;
lcparams *lcp, lc, *aret;
/* Use a tree234 as a simple hash table, go through the square
@@ -1272,10 +1272,10 @@
/* There should be precisely 'order' letters in the alphabet,
* each occurring 'order' times (making the OxO tree) */
- if (count234(dict) != order) ret = 1;
+ if (count234(dict) != order) ret = true;
else {
for (c = 0; (lcp = index234(dict, c)) != NULL; c++) {
- if (lcp->count != order) ret = 1;
+ if (lcp->count != order) ret = true;
}
}
for (c = 0; (lcp = index234(dict, c)) != NULL; c++)
--- a/latin.h
+++ b/latin.h
@@ -82,7 +82,7 @@
* single-number elimination. */
int latin_solver_diff_set(struct latin_solver *solver,
struct latin_solver_scratch *scratch,
- int extreme);
+ bool extreme);
typedef int (*usersolver_t)(struct latin_solver *solver, void *ctx);
typedef void *(*ctxnew_t)(void *ctx);
@@ -115,7 +115,7 @@
/* The order of the latin rectangle is max(w,h). */
digit *latin_generate_rect(int w, int h, random_state *rs);
-int latin_check(digit *sq, int order); /* !0 => not a latin square */
+bool latin_check(digit *sq, int order); /* true => not a latin square */
void latin_debug(digit *sq, int order);