version 1.4w10UCIb16
[polyglot.git] / board.h
1 \r
2 // board.h\r
3 \r
4 #ifndef BOARD_H\r
5 #define BOARD_H\r
6 \r
7 // includes\r
8 \r
9 #include "colour.h"\r
10 #include "square.h"\r
11 #include "util.h"\r
12 \r
13 // constants\r
14 \r
15 const int Empty = 0;\r
16 \r
17 const int SideH = 0;\r
18 const int SideA = 1;\r
19 const int SideNb = 2;\r
20 \r
21 // types\r
22 \r
23 struct board_t {\r
24 \r
25    uint8 square[SquareNb];\r
26    sint8 pos[SquareNb];\r
27 \r
28    uint8 list[ColourNb][32];\r
29    sint8 list_size[ColourNb];\r
30 \r
31    sint8 number[12];\r
32 \r
33    sint8 turn;\r
34    uint8 castle[ColourNb][SideNb];\r
35    uint8 ep_square;\r
36 \r
37    sint16 ply_nb;\r
38    sint16 move_nb;\r
39 \r
40    uint64 key;\r
41 };\r
42 \r
43 // functions\r
44 \r
45 extern bool board_is_ok        (const board_t * board);\r
46 \r
47 extern void board_clear        (board_t * board);\r
48 extern void board_start        (board_t * board);\r
49 \r
50 extern void board_copy         (board_t * dst, const board_t * src);\r
51 extern bool board_equal        (const board_t * board_1, const board_t * board_2);\r
52 \r
53 extern void board_init_list    (board_t * board);\r
54 \r
55 extern int  board_flags        (const board_t * board);\r
56 \r
57 extern bool board_can_play     (const board_t * board);\r
58 extern int  board_mobility     (const board_t * board);\r
59 \r
60 extern bool board_is_check     (const board_t * board);\r
61 extern bool board_is_mate      (const board_t * board);\r
62 extern bool board_is_stalemate (const board_t * board);\r
63 \r
64 extern int  king_pos           (const board_t * board, int colour);\r
65 \r
66 extern void board_disp         (const board_t * board);\r
67 \r
68 #endif // !defined BOARD_H\r
69 \r
70 // end of board.h\r
71 \r