14
const int MoveNone = 0; // HACK: a1a1 cannot be a legal move
16
const int MovePromoteKnight = 1 << 12;
17
const int MovePromoteBishop = 2 << 12;
18
const int MovePromoteRook = 3 << 12;
19
const int MovePromoteQueen = 4 << 12;
20
const int MoveFlags = 7 << 12;
24
typedef uint16 move_t;
28
extern bool move_is_ok (int move);
30
extern int move_make (int from, int to);
31
extern int move_make_flags (int from, int to, int flags);
33
extern int move_from (int move);
34
extern int move_to (int move);
35
extern int move_promote_hack (int move);
37
extern bool move_is_capture (int move, const board_t *board);
38
extern bool move_is_promote (int move);
39
extern bool move_is_en_passant (int move, const board_t *board);
40
extern bool move_is_castle (int move, const board_t *board);
42
extern int move_piece (int move, const board_t *board);
43
extern int move_capture (int move, const board_t *board);
44
extern int move_promote (int move, const board_t *board);
46
extern bool move_is_check (int move, const board_t *board);
47
extern bool move_is_mate (int move, const board_t *board);
49
extern int move_order (int move);
51
extern bool move_to_can (int move, char string[], int size);
52
extern int move_from_can (const char string[]);
54
extern void move_disp (int move);
56
#endif // !defined MOVE_H