-inline void Position::move_piece(Square from, Square to, Color c, PieceType pt) {
-
- // index[from] is not updated and becomes stale. This works as long as index[]
- // is accessed just by known occupied squares.
- Bitboard from_to_bb = SquareBB[from] ^ SquareBB[to];
- byTypeBB[ALL_PIECES] ^= from_to_bb;
- byTypeBB[pt] ^= from_to_bb;
- byColorBB[c] ^= from_to_bb;
- board[from] = NO_PIECE;
- board[to] = make_piece(c, pt);
- index[to] = index[from];
- pieceList[c][pt][index[to]] = to;
-}
-
-inline void Position::remove_piece(Square s, Color c, PieceType pt) {