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
};
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;
}
}
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) {
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;
}
}
inline bool opposite_colors(Square s1, Square s2) {
- int s = s1 ^ s2;
+ int s = int(s1) ^ int(s2);
return ((s >> 3) ^ s) & 1;
}