X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=4a78cc81d03040080923e4b6c4ea1f1fe44b2e30;hp=cf0b3f953dedcad5826f47c21a2deb2fd6000699;hb=960a689769cb143afa364d3669940c18d0c3a503;hpb=5e905800887da94d481978d3bddd9539b2111458 diff --git a/src/types.h b/src/types.h index cf0b3f95..4a78cc81 100644 --- a/src/types.h +++ b/src/types.h @@ -35,6 +35,7 @@ /// | only in 64-bit mode. For compiling requires hardware with /// | popcnt support. +#include #include #include @@ -127,11 +128,11 @@ inline bool operator<(const MoveStack& f, const MoveStack& s) { return f.score < s.score; } -enum CastleRight { +enum CastleRight { // Defined as in PolyGlot book hash key CASTLES_NONE = 0, WHITE_OO = 1, - BLACK_OO = 2, - WHITE_OOO = 4, + WHITE_OOO = 2, + BLACK_OO = 4, BLACK_OOO = 8, ALL_CASTLES = 15 }; @@ -334,6 +335,10 @@ inline Square operator~(Square s) { return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8 } +inline Square operator|(File f, Rank r) { + return Square((r << 3) | f); +} + inline Value mate_in(int ply) { return VALUE_MATE - ply; } @@ -347,7 +352,7 @@ inline Piece make_piece(Color c, PieceType pt) { } inline CastleRight make_castle_right(Color c, CastlingSide s) { - return CastleRight((s == KING_SIDE ? WHITE_OO : WHITE_OOO) << c); + return CastleRight(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); } inline PieceType type_of(Piece p) { @@ -358,10 +363,6 @@ inline Color color_of(Piece p) { return Color(p >> 3); } -inline Square make_square(File f, Rank r) { - return Square((r << 3) | f); -} - inline bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } @@ -391,7 +392,7 @@ inline Rank relative_rank(Color c, Square s) { } inline bool opposite_colors(Square s1, Square s2) { - int s = s1 ^ s2; + int s = int(s1) ^ int(s2); return ((s >> 3) ^ s) & 1; }