constexpr U64 Board::get_bitboard_color(Color side) const { return colors[side]; }
constexpr U64 Board::get_bitboard_occupancy() const { return colors[WHITE] | colors[BLACK]; }
constexpr U64 Board::get_bitboard_piece(piece::Type piece) const { return pieces[piece]; }
constexpr U64 Board::get_bitboard_piece(Type piece) const { return pieces[piece]; }
constexpr U64 Board::get_bitboard_piece(piece::Type piece, Color color) const {
constexpr U64 Board::get_bitboard_piece(Type piece, Color color) const {
return pieces[piece] & colors[color];
}
constexpr U64 Board::get_bitboard_piece_attacks(piece::Type type, Color color, Square from) const {
if (type == piece::PAWN) return attack::attack_pawn(color, from);
constexpr U64 Board::get_bitboard_piece_attacks(Type type, Color color, Square from) const {
if (type == PAWN) return attack::attack_pawn(color, from);
return attack::attack(type, from, get_bitboard_occupancy());
}
constexpr U64 Board::get_bitboard_piece_moves(piece::Type type, Color color, Square square) const {
constexpr U64 Board::get_bitboard_piece_moves(Type type, Color color, Square square) const {
return get_bitboard_piece_attacks(type, color, square) & ~get_bitboard_color(color);
}
constexpr U64 Board::get_bitboard_square_land(Square land, piece::Type piece, Color side) const {
constexpr U64 Board::get_bitboard_square_land(Square land, Type piece, Color side) const {
return get_bitboard_piece_attacks(piece, other(side), land) & get_bitboard_piece(piece, side);
}