From 33ddeec5e043d4731866a18cbda51a337d417958 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 10 Feb 2009 11:03:45 +0100 Subject: [PATCH] Templetize generate_piece_checks_king() No functional change. Signed-off-by: Marco Costalba --- src/movegen.cpp | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index 198a36c5..75997845 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -107,7 +107,6 @@ namespace { template MoveStack* generate_piece_checks(const Position&, Bitboard, Bitboard, Square, MoveStack*); - MoveStack* generate_piece_checks_king(const Position&, Square, Bitboard, Square, MoveStack*); template MoveStack* generate_piece_blocking_evasions(const Position&, Bitboard, Bitboard, MoveStack*); @@ -214,7 +213,7 @@ int generate_checks(const Position& pos, MoveStack* mlist, Bitboard dc) { mlist = generate_piece_checks(pos, b, dc, ksq, mlist); // Hopefully we always have a king ;-) - mlist = generate_piece_checks_king(pos, pos.king_square(us), dc, ksq, mlist); + mlist = generate_piece_checks(pos, pos.kings(us), dc, ksq, mlist); // Castling moves that give check. Very rare but nice to have! if ( pos.can_castle_queenside(us) @@ -784,7 +783,7 @@ namespace { template MoveStack* do_generate_pawn_checks(const Position& pos, Bitboard dc, Square ksq, MoveStack* mlist) { - // Pawn moves which give discovered check. This is possible only if the + // Pawn moves which gives discovered check. This is possible only if the // pawn is not on the same file as the enemy king, because we don't // generate captures. Bitboard empty = pos.empty_squares(); @@ -843,8 +842,15 @@ namespace { { Square from = pop_1st_bit(&b); Bitboard bb = pos.piece_attacks(from) & pos.empty_squares(); + if (Piece == KING) + bb &= ~QueenPseudoAttacks[ksq]; + SERIALIZE_MOVES(bb); } + + if (Piece == KING) + return mlist; + // Direct checks b = target & ~dc; Bitboard checkSqs = pos.piece_attacks(ksq) & pos.empty_squares(); @@ -857,19 +863,6 @@ namespace { return mlist; } - MoveStack* generate_piece_checks_king(const Position& pos, Square from, Bitboard dc, - Square ksq, MoveStack* mlist) { - if (bit_is_set(dc, from)) - { - Bitboard b = pos.piece_attacks(from) - & pos.empty_squares() - & ~QueenPseudoAttacks[ksq]; - SERIALIZE_MOVES(b); - } - return mlist; - } - - template MoveStack* do_generate_pawn_blocking_evasions(const Position& pos, Bitboard not_pinned, Bitboard blockSquares, MoveStack* mlist) { -- 2.39.2