struct Entry {
- Score pawns_score() const { return score; }
+ Score pawn_score(Color c) const { return scores[c]; }
Bitboard pawn_attacks(Color c) const { return pawnAttacks[c]; }
Bitboard passed_pawns(Color c) const { return passedPawns[c]; }
Bitboard pawn_attacks_span(Color c) const { return pawnAttacksSpan[c]; }
}
template<Color Us>
- Score king_safety(const Position& pos, Square ksq) {
- return kingSquares[Us] == ksq && castlingRights[Us] == pos.can_castle(Us)
- ? kingSafety[Us] : (kingSafety[Us] = do_king_safety<Us>(pos, ksq));
+ Score king_safety(const Position& pos) {
+ return kingSquares[Us] == pos.square<KING>(Us) && castlingRights[Us] == pos.can_castle(Us)
+ ? kingSafety[Us] : (kingSafety[Us] = do_king_safety<Us>(pos));
}
template<Color Us>
- Score do_king_safety(const Position& pos, Square ksq);
+ Score do_king_safety(const Position& pos);
template<Color Us>
- Value shelter_storm(const Position& pos, Square ksq);
+ Value evaluate_shelter(const Position& pos, Square ksq);
Key key;
- Score score;
+ Score scores[COLOR_NB];
Bitboard passedPawns[COLOR_NB];
Bitboard pawnAttacks[COLOR_NB];
Bitboard pawnAttacksSpan[COLOR_NB];