When in check, complain with the requested move.
[gnushogi.git] / gnushogi / gnushogi.h
index 37972f4..39c0715 100644 (file)
@@ -16,8 +16,8 @@
  *
  * GNU Shogi is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 1, or (at your option) any
- * later version.
+ * Free Software Foundation; either version 3 of the License,
+ * or (at your option) any later version.
  *
  * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with GNU Shogi; see the file COPYING.  If not, write to the Free
- * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * with GNU Shogi; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
  * ----------------------------------------------------------------------
  *
  */
 
+/* Hack for anal-retentive ANSI-compliance if desired: */
+#define inline
+
 /* FIXME: this file needs to be reorganized in some rational manner. */
 
 #ifndef _GNUSHOGI_H_
 #define _GNUSHOGI_H_
 
-#include "../config.h"        /* Portability #defines. */
+#include "config.h"        /* Portability #defines. */
 #include "debug.h"
 #include "opts.h"          /* Various option-setting #defines.  */
 
  * Display options.
  */
 
-typedef enum { DISPLAY_RAW, DISPLAY_CURSES, DISPLAY_X } display_t;
+typedef enum {
+  DISPLAY_RAW,
+#ifdef HAVE_LIBCURSES
+  DISPLAY_CURSES,
+#endif
+  DISPLAY_X
+} display_t;
 extern display_t display_type;
 
 #define XSHOGI     (display_type == DISPLAY_X)
@@ -136,7 +145,6 @@ typedef unsigned long  ULONG;
 #  endif
 #endif
 
-
 #define RWA_ACC "r+"
 #define WA_ACC "w+"
 #ifdef BINBOOK
@@ -156,10 +164,12 @@ extern void movealgbr(short m, char *s);
 #define NO_PIECES       15
 #define MAX_CAPTURED    19
 #define NO_PTYPE_PIECES 15
-#define NO_SQUARES      81
-#define NO_SQUARES_1    80
 #define NO_COLS          9
 #define NO_ROWS          9
+#define NO_SQUARES      (NO_COLS*NO_ROWS)
+
+#define ROW_NAME(n) ('a' + NO_ROWS - 1 - n)
+#define COL_NAME(n) ('1' + NO_COLS - 1 - n)
 
 #if defined HASHFILE || defined CACHE
 #  define PTBLBDSIZE (NO_SQUARES + NO_PIECES)
@@ -217,8 +227,13 @@ extern void movealgbr(short m, char *s);
 #define OPENING_HINT 0x141d /* P7g-7f (20->29) */
 
 /* truth values */
+#ifndef false
 #define false 0
+#endif
+
+#ifndef true
 #define true  1
+#endif
 
 /* colors */
 #define black   0
@@ -226,39 +241,43 @@ extern void movealgbr(short m, char *s);
 #define neutral 2
 
 /* piece code defines */
-/* CHECKME: Replace with an enum? */
-#define no_piece 0
-#define pawn     1
-#define lance    2
-#define knight   3
-#define silver   4
-#define gold     5
-#define bishop   6
-#define rook     7
-#define ppawn    8
-#define plance   9
-#define pknight 10
-#define psilver 11
-#define pbishop 12
-#define prook   13
-#define king    14
-
-#define ptype_no_piece  0
-#define ptype_pawn      0
-#define ptype_lance     1
-#define ptype_knight    2
-#define ptype_silver    3
-#define ptype_gold      4
-#define ptype_bishop    5
-#define ptype_rook      6
-#define ptype_pbishop   7
-#define ptype_prook     8
-#define ptype_king      9
-#define ptype_wpawn    10
-#define ptype_wlance   11
-#define ptype_wknight  12
-#define ptype_wsilver  13
-#define ptype_wgold    14
+enum {
+    no_piece = 0,
+    pawn,
+    lance,
+    knight,
+    silver,
+    gold,
+    bishop,
+    rook,
+    ppawn,
+    plance,
+    pknight,
+    psilver,
+    pbishop,
+    prook,
+    king
+};
+
+/* move types */
+enum {
+    ptype_no_piece = 0,
+    ptype_pawn = 0,
+    ptype_lance,
+    ptype_knight,
+    ptype_silver,
+    ptype_gold,
+    ptype_bishop,
+    ptype_rook,
+    ptype_pbishop,
+    ptype_prook,
+    ptype_king,
+    ptype_wpawn,
+    ptype_wlance,
+    ptype_wknight,
+    ptype_wsilver,
+    ptype_wgold
+};
 
 /* node flags */
 #define pmask        0x000f /*    15 */
@@ -844,14 +863,9 @@ extern struct hashentry  *ttable[2];
 extern short rpthash[2][256];
 extern char *DRAW;
 
-/*
- * FIXME: these should be more generic instead of using the
- * magic number 9.
- */
-
-#define row(a)     ((a) / 9)
-#define column(a)  ((a) % 9)
-#define locn(a, b) (((a) * 9) + b)
+#define row(a)     ((a) / NO_COLS)
+#define column(a)  ((a) % NO_COLS)
+#define locn(a, b) (((a) * NO_COLS) + b)
 
 /* init external functions */
 extern void InitConst(char *lang); /* init.c */
@@ -1075,7 +1089,6 @@ typedef enum
 } VerifyMove_mode;
 
 extern int VerifyMove(char *s, VerifyMove_mode iop, unsigned short *mv);
-extern void AgeTT();
 extern unsigned short TTage;
 
 #endif /* _GNUSHOGI_H_ */