+ default: return NonSlidingAttacksBB[p][s];
+ }
+}
+
+Bitboard Position::attacks_from(Piece p, Square s, Bitboard occ) {
+
+ assert(square_is_ok(s));
+
+ switch (p)
+ {
+ case WB: case BB: return bishop_attacks_bb(s, occ);
+ case WR: case BR: return rook_attacks_bb(s, occ);
+ case WQ: case BQ: return bishop_attacks_bb(s, occ) | rook_attacks_bb(s, occ);
+ default: return NonSlidingAttacksBB[p][s];