int file_is_half_open(Color c, File f) const { return halfOpenFiles[c] & (1 << int(f)); }
int has_open_file_to_left(Color c, File f) const { return halfOpenFiles[c] & ((1 << int(f)) - 1); }
int has_open_file_to_right(Color c, File f) const { return halfOpenFiles[c] & ~((1 << int(f+1)) - 1); }
- int same_colored_pawn_count(Square s, Color c) const { return (BlackSquares & s) ? pawnsOnBlackSquaresCount[c] : pawnsOnWhiteSquaresCount[c]; }
+ int pawns_on_same_color_squares(Color c, Square s) const { return pawnsOnSquares[c][!!(BlackSquares & s)]; }
template<Color Us>
Score king_safety(const Position& pos, Square ksq) {
Score value;
int halfOpenFiles[COLOR_NB];
Score kingSafety[COLOR_NB];
- int pawnsOnWhiteSquaresCount[COLOR_NB];
- int pawnsOnBlackSquaresCount[COLOR_NB];
+ int pawnsOnSquares[COLOR_NB][COLOR_NB];
};
typedef HashTable<Entry, 16384> Table;