X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=8154f574c6d7baedde7ccea8d50e94005db7fdfb;hp=1dc6f26d0ef8517040f6b61317e23ce9854c42e1;hb=a8af78c833458adaea64b8fc1035fafbdf4ba083;hpb=a518d5d3adf0709471be906fd03ee4744477a214 diff --git a/src/bitboard.h b/src/bitboard.h index 1dc6f26d..8154f574 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -26,7 +26,7 @@ namespace Bitboards { void init(); -void print(Bitboard b); +const std::string pretty(Bitboard b); } @@ -223,10 +223,10 @@ inline Bitboard squares_of_color(Square s) { } -/// squares_aligned() returns true if the squares s1, s2 and s3 are aligned +/// aligned() returns true if the squares s1, s2 and s3 are aligned /// either on a straight or on a diagonal line. -inline bool squares_aligned(Square s1, Square s2, Square s3) { +inline bool aligned(Square s1, Square s2, Square s3) { return LineBB[s1][s2] & s3; } @@ -254,9 +254,19 @@ inline Bitboard attacks_bb(Square s, Bitboard occ) { return (Pt == ROOK ? RAttacks : BAttacks)[s][magic_index(s, occ)]; } +inline Bitboard attacks_bb(Piece p, Square s, Bitboard occ) { -/// lsb()/msb() finds the least/most significant bit in a nonzero bitboard. -/// pop_lsb() finds and clears the least significant bit in a nonzero bitboard. + switch (type_of(p)) + { + case BISHOP: return attacks_bb(s, occ); + case ROOK : return attacks_bb(s, occ); + case QUEEN : return attacks_bb(s, occ) | attacks_bb(s, occ); + default : return StepAttacksBB[p][s]; + } +} + +/// lsb()/msb() finds the least/most significant bit in a non-zero bitboard. +/// pop_lsb() finds and clears the least significant bit in a non-zero bitboard. #ifdef USE_BSFQ