File: move.h

package info (click to toggle)
polyglot 2.0.1%2Bgit20140926-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,228 kB
  • ctags: 1,163
  • sloc: ansic: 10,416; sh: 994; makefile: 18
file content (60 lines) | stat: -rw-r--r-- 1,606 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

// move.h

#ifndef MOVE_H
#define MOVE_H

// includes

#include "board.h"
#include "util.h"

// defined

// HACK: a1a1 cannot be a legal move
#define MoveNone (0) 

#define MovePromoteKnight  (1 << 12)
#define MovePromoteBishop  (2 << 12)
#define MovePromoteRook    (3 << 12)
#define MovePromoteQueen   (4 << 12)
#define MoveFlags          (7 << 12)

// types

typedef uint16 move_t;

// functions

extern bool move_is_ok          (int move);

extern int  move_make           (int from, int to);
extern int  move_make_flags     (int from, int to, int flags);

extern int  move_from           (int move);
extern int  move_to             (int move);
extern int  move_promote_hack   (int move);

extern bool move_is_capture     (int move, const board_t * board);
extern bool move_is_promote     (int move);
extern bool move_is_en_passant  (int move, const board_t * board);
extern bool move_is_castle      (int move, const board_t * board);

extern int  move_piece          (int move, const board_t * board);
extern int  move_capture        (int move, const board_t * board);
extern int  move_promote        (int move, const board_t * board);

extern bool move_is_check       (int move, const board_t * board);
extern bool move_is_mate        (int move, const board_t * board);

extern int  move_order          (int move);

extern bool move_to_can         (int move, const board_t * board, char string[], int size);
extern int  move_from_can       (const char string[], const board_t * board);

extern void move_disp           (int move, const board_t * board);

#endif // !defined MOVE_H

// end of move.h