X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=e95bf0d275996f0965efb36617c840408821d6f3;hp=e0e2fe64545ececedd4acf53852b9fd7e3b7dbf0;hb=1d18647e738951a7e94530fef231f4b4e13b1786;hpb=aecdbfc4a000c72fcc2642f54ce83967913a16ba diff --git a/src/bitboard.h b/src/bitboard.h index e0e2fe64..e95bf0d2 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -74,6 +74,7 @@ extern Bitboard AdjacentFilesBB[FILE_NB]; extern Bitboard InFrontBB[COLOR_NB][RANK_NB]; extern Bitboard StepAttacksBB[PIECE_NB][SQUARE_NB]; extern Bitboard BetweenBB[SQUARE_NB][SQUARE_NB]; +extern Bitboard LineBB[SQUARE_NB][SQUARE_NB]; extern Bitboard DistanceRingsBB[SQUARE_NB][8]; extern Bitboard ForwardBB[COLOR_NB][SQUARE_NB]; extern Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB]; @@ -222,12 +223,11 @@ 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) { - return (BetweenBB[s1][s2] | BetweenBB[s1][s3] | BetweenBB[s2][s3]) - & ( SquareBB[s1] | SquareBB[s2] | SquareBB[s3]); +inline bool aligned(Square s1, Square s2, Square s3) { + return LineBB[s1][s2] & s3; } @@ -319,9 +319,10 @@ extern Square pop_lsb(Bitboard* b); #endif -/// lsb() overload finds least significant bit relative to the given color -inline Square lsb(Color c, Bitboard b) { - return c == WHITE ? lsb(b) : msb(b); -} +/// frontmost_sq() and backmost_sq() find the square corresponding to the +/// most/least advanced bit relative to the given color. + +inline Square frontmost_sq(Color c, Bitboard b) { return c == WHITE ? msb(b) : lsb(b); } +inline Square backmost_sq(Color c, Bitboard b) { return c == WHITE ? lsb(b) : msb(b); } #endif // #ifndef BITBOARD_H_INCLUDED