X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=8facaafa7489b0a0b4e1a0e1fe42dbab3c13b5bb;hp=873c18854c81a4db162aa7b3e35e9ca5fc6a2c19;hb=1a8e3f0b2e9e2a5b8a01b645ce1fc5b12e0aec55;hpb=ae2f5f25cd8a6bc2762eefc032436052c0db679e diff --git a/src/types.h b/src/types.h index 873c1885..8facaafa 100644 --- a/src/types.h +++ b/src/types.h @@ -252,6 +252,15 @@ enum ScaleFactor { SCALE_FACTOR_NONE = 255 }; +enum CastleRight { + CASTLES_NONE = 0, + WHITE_OO = 1, + BLACK_OO = 2, + WHITE_OOO = 4, + BLACK_OOO = 8, + ALL_CASTLES = 15 +}; + /// Score enum keeps a midgame and an endgame value in a single /// integer (enum), first LSB 16 bits are used to store endgame @@ -339,6 +348,7 @@ const Value QueenValueEndgame = Value(0x9FE); extern const Value PieceValueMidgame[17]; extern const Value PieceValueEndgame[17]; +extern int SquareDistance[64][64]; inline Value piece_value_midgame(Piece p) { return PieceValueMidgame[p]; @@ -360,23 +370,18 @@ inline Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) | pt); } -inline PieceType piece_type(Piece p) { +inline PieceType type_of(Piece p) { return PieceType(p & 7); } -inline Color piece_color(Piece p) { +inline Color color_of(Piece p) { return Color(p >> 3); } -inline Color opposite_color(Color c) { +inline Color flip(Color c) { return Color(c ^ 1); } -inline char piece_type_to_char(PieceType pt) { - static const char ch[] = " PNBRQK"; - return ch[pt]; -} - inline Square make_square(File f, Rank r) { return Square((r << 3) | f); } @@ -385,19 +390,19 @@ inline bool square_is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } -inline File square_file(Square s) { +inline File file_of(Square s) { return File(s & 7); } -inline Rank square_rank(Square s) { +inline Rank rank_of(Square s) { return Rank(s >> 3); } -inline Square flip_square(Square s) { +inline Square flip(Square s) { return Square(s ^ 56); } -inline Square flop_square(Square s) { +inline Square mirror(Square s) { return Square(s ^ 7); } @@ -410,28 +415,32 @@ inline Rank relative_rank(Color c, Rank r) { } inline Rank relative_rank(Color c, Square s) { - return relative_rank(c, square_rank(s)); + return relative_rank(c, rank_of(s)); } -inline SquareColor square_color(Square s) { - return SquareColor(int(square_rank(s) + s) & 1); +inline SquareColor color_of(Square s) { + return SquareColor(int(rank_of(s) + s) & 1); } -inline bool opposite_color_squares(Square s1, Square s2) { +inline bool opposite_colors(Square s1, Square s2) { int s = s1 ^ s2; return ((s >> 3) ^ s) & 1; } inline int file_distance(Square s1, Square s2) { - return abs(square_file(s1) - square_file(s2)); + return abs(file_of(s1) - file_of(s2)); } inline int rank_distance(Square s1, Square s2) { - return abs(square_rank(s1) - square_rank(s2)); + return abs(rank_of(s1) - rank_of(s2)); } inline int square_distance(Square s1, Square s2) { - return Max(file_distance(s1, s2), rank_distance(s1, s2)); + return SquareDistance[s1][s2]; +} + +inline char piece_type_to_char(PieceType pt) { + return " PNBRQK"[pt]; } inline char file_to_char(File f) { @@ -443,8 +452,8 @@ inline char rank_to_char(Rank r) { } inline const std::string square_to_string(Square s) { - char ch[] = { file_to_char(square_file(s)), rank_to_char(square_rank(s)), 0 }; - return std::string(ch); + char ch[] = { file_to_char(file_of(s)), rank_to_char(rank_of(s)), 0 }; + return ch; } inline Square pawn_push(Color c) {