X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=135633a3ab9f74d8f1e6654983df16d781a92365;hp=d05e8af0cd3cf6783410339c3bfff14ca5bf059a;hb=cbb1a8ed31679fe32d2694448a10b031390a32b3;hpb=5ea984ac3515946d952bd3c9cfe8e8baef7cc85d diff --git a/src/pawns.cpp b/src/pawns.cpp index d05e8af0..135633a3 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -17,6 +17,7 @@ along with this program. If not, see . */ +#include #include #include "bitboard.h" @@ -93,7 +94,7 @@ namespace { Rank r; bool passed, isolated, doubled, opposed, chain, backward, candidate; Score value = SCORE_ZERO; - const Square* pl = pos.piece_list(Us, PAWN); + const Square* pl = pos.list(Us); Bitboard ourPawns = pos.pieces(Us, PAWN); Bitboard theirPawns = pos.pieces(Them, PAWN); @@ -103,7 +104,7 @@ namespace { e->semiopenFiles[Us] = 0xFF; e->pawnAttacks[Us] = shift_bb(ourPawns) | shift_bb(ourPawns); e->pawnsOnSquares[Us][BLACK] = popcount(ourPawns & BlackSquares); - e->pawnsOnSquares[Us][WHITE] = pos.piece_count(Us, PAWN) - e->pawnsOnSquares[Us][BLACK]; + e->pawnsOnSquares[Us][WHITE] = pos.count(Us) - e->pawnsOnSquares[Us][BLACK]; // Loop through all pawns of the current color and score each pawn while ((s = *pl++) != SQ_NONE) @@ -134,7 +135,7 @@ namespace { // be backward. If there are friendly pawns behind on adjacent files // or if can capture an enemy pawn it cannot be backward either. if ( !(passed | isolated | chain) - && !(ourPawns & attack_span_mask(Them, s)) + && !(ourPawns & pawn_attack_span(Them, s)) && !(pos.attacks_from(s, Us) & theirPawns)) { // We now know that there are no friendly pawns beside or behind this @@ -153,15 +154,15 @@ namespace { backward = (b | shift_bb(b)) & theirPawns; } - assert(opposed | passed | (attack_span_mask(Us, s) & theirPawns)); + assert(opposed | passed | (pawn_attack_span(Us, s) & theirPawns)); // A not passed pawn is a candidate to become passed if it is free to // advance and if the number of friendly pawns beside or behind this // pawn on adjacent files is higher or equal than the number of // enemy pawns in the forward direction on the adjacent files. candidate = !(opposed | passed | backward | isolated) - && (b = attack_span_mask(Them, s + pawn_push(Us)) & ourPawns) != 0 - && popcount(b) >= popcount(attack_span_mask(Us, s) & theirPawns); + && (b = pawn_attack_span(Them, s + pawn_push(Us)) & ourPawns) != 0 + && popcount(b) >= popcount(pawn_attack_span(Us, s) & theirPawns); // Passed pawns will be properly scored in evaluation because we need // full attack info to evaluate passed pawns. Only the frontmost passed @@ -220,7 +221,7 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { const Color Them = (Us == WHITE ? BLACK : WHITE); Value safety = MaxSafetyBonus; - Bitboard b = pos.pieces(PAWN) & (in_front_bb(Us, ksq) | rank_bb(ksq)); + Bitboard b = pos.pieces(PAWN) & (in_front_bb(Us, rank_of(ksq)) | rank_bb(ksq)); Bitboard ourPawns = b & pos.pieces(Us) & ~rank_bb(ksq); Bitboard theirPawns = b & pos.pieces(Them); Rank rkUs, rkThem;