X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=4532fba582c74d83f67b7c5d6f4e5408ab43943a;hp=35ca6e770293459e36b1bb2bd0c7924f79922a7b;hb=542a2b39ed811a3795cdce2416896ffaf2a485cf;hpb=ed26d71354c3ab1a1419975430258b6e961787a7 diff --git a/src/movegen.cpp b/src/movegen.cpp index 35ca6e77..4532fba5 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -25,9 +25,10 @@ namespace { - template - ExtMove* generate_castling(const Position& pos, ExtMove* moveList, Color us) { + template + ExtMove* generate_castling(const Position& pos, ExtMove* moveList) { + constexpr CastlingRight Cr = Us | Cs; constexpr bool KingSide = (Cr == WHITE_OO || Cr == BLACK_OO); if (pos.castling_impeded(Cr) || !pos.can_castle(Cr)) @@ -35,10 +36,10 @@ namespace { // After castling, the rook and king final positions are the same in Chess960 // as they would be in standard chess. - Square kfrom = pos.square(us); + Square kfrom = pos.square(Us); Square rfrom = pos.castling_rook_square(Cr); - Square kto = relative_square(us, KingSide ? SQ_G1 : SQ_C1); - Bitboard enemies = pos.pieces(~us); + Square kto = relative_square(Us, KingSide ? SQ_G1 : SQ_C1); + Bitboard enemies = pos.pieces(~Us); assert(!pos.checkers()); @@ -52,7 +53,7 @@ namespace { // Because we generate only legal castling moves we need to verify that // when moving the castling rook we do not discover some hidden checker. // For instance an enemy queen in SQ_A1 when castling rook is in SQ_B1. - if (Chess960 && (attacks_bb(kto, pos.pieces() ^ rfrom) & pos.pieces(~us, ROOK, QUEEN))) + if (Chess960 && (attacks_bb(kto, pos.pieces() ^ rfrom) & pos.pieces(~Us, ROOK, QUEEN))) return moveList; Move m = make(kfrom, rfrom); @@ -281,13 +282,13 @@ namespace { { if (pos.is_chess960()) { - moveList = generate_castling::right, Checks, true>(pos, moveList, Us); - moveList = generate_castling::right, Checks, true>(pos, moveList, Us); + moveList = generate_castling(pos, moveList); + moveList = generate_castling(pos, moveList); } else { - moveList = generate_castling::right, Checks, false>(pos, moveList, Us); - moveList = generate_castling::right, Checks, false>(pos, moveList, Us); + moveList = generate_castling(pos, moveList); + moveList = generate_castling(pos, moveList); } }