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