static bool pawn_is_isolated(Bitboard ourPawns, Square s);
static bool pawn_is_doubled(Bitboard ourPawns, Color c, Square s);
- // Open and half-open files
- static bool file_is_open(Bitboard pawns, File f);
- static bool file_is_half_open(Bitboard pawns, File f);
-
// Weak squares
bool square_is_weak(Square s, Color c) const;
void allow_ooo(Color c);
// Helper functions for doing and undoing moves
- void do_capture_move(PieceType capture, Color them, Square to);
+ void do_capture_move(Bitboard& key, PieceType capture, Color them, Square to, bool ep);
void do_castle_move(Move m);
- void do_promotion_move(Move m);
- void do_ep_move(Move m);
void undo_castle_move(Move m);
- void undo_promotion_move(Move m);
- void undo_ep_move(Move m);
void find_checkers();
template<PieceType Piece>
// Piece lists
Square pieceList[2][8][16]; // [color][pieceType][index]
- int index[64];
+ int index[64]; // [square]
// Other info
Square kingSquare[2];
return ourPawns & squares_behind(c, s);
}
-inline bool Position::file_is_open(Bitboard pawns, File f) {
- return !(pawns & file_bb(f));
-}
-
-inline bool Position::file_is_half_open(Bitboard pawns, File f) {
- return !(pawns & file_bb(f));
-}
-
inline bool Position::square_is_weak(Square s, Color c) const {
return !(pawns(c) & outpost_mask(opposite_color(c), s));
}