template<PieceType Pt> Square square(Color c) const;
// Castling
- int can_castle(Color c) const;
- int can_castle(CastlingRight cr) const;
+ int castling_rights(Color c) const;
+ bool can_castle(CastlingRight cr) const;
bool castling_impeded(CastlingRight cr) const;
Square castling_rook_square(CastlingRight cr) const;
return st->epSquare;
}
-inline int Position::can_castle(CastlingRight cr) const {
+inline bool Position::can_castle(CastlingRight cr) const {
return st->castlingRights & cr;
}
-inline int Position::can_castle(Color c) const {
- return st->castlingRights & ((WHITE_OO | WHITE_OOO) << (2 * c));
+inline int Position::castling_rights(Color c) const {
+ return st->castlingRights & (c == WHITE ? WHITE_CASTLING : BLACK_CASTLING);
}
inline bool Position::castling_impeded(CastlingRight cr) const {
}
inline bool Position::pawn_passed(Color c, Square s) const {
- return !(pieces(~c, PAWN) & passed_pawn_mask(c, s));
+ return !(pieces(~c, PAWN) & passed_pawn_span(c, s));
}
inline bool Position::advanced_pawn_push(Move m) const {