the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
+
Stockfish is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
extern const Bitboard RelativeRankBB[2][8];
extern const Bitboard InFrontBB[2][8];
-extern Bitboard SetMaskBB[64];
-extern Bitboard ClearMaskBB[64];
+extern Bitboard SetMaskBB[65];
+extern Bitboard ClearMaskBB[65];
extern Bitboard StepAttackBB[16][64];
extern Bitboard RayBB[64][8];
/// Functions for testing whether a given bit is set in a bitboard, and for
/// setting and clearing bits.
-inline Bitboard set_mask_bb(Square s) {
- // return 1ULL << s;
- return SetMaskBB[s];
-}
-
-inline Bitboard clear_mask_bb(Square s) {
- // return ~set_mask_bb(s);
- return ClearMaskBB[s];
-}
-
inline Bitboard bit_is_set(Bitboard b, Square s) {
- return b & set_mask_bb(s);
+ return b & SetMaskBB[s];
}
inline void set_bit(Bitboard *b, Square s) {
- *b |= set_mask_bb(s);
+ *b |= SetMaskBB[s];
}
inline void clear_bit(Bitboard *b, Square s) {
- *b &= clear_mask_bb(s);
+ *b &= ClearMaskBB[s];
}
}
+/// behind_bb() takes a color and a rank or square as input, and returns a
+/// bitboard representing all the squares on all ranks behind of the rank
+/// (or square), from the given color's point of view.
+
+inline Bitboard behind_bb(Color c, Rank r) {
+ return InFrontBB[opposite_color(c)][r];
+}
+
+inline Bitboard behind_bb(Color c, Square s) {
+ return in_front_bb(opposite_color(c), square_rank(s));
+}
+
+
/// ray_bb() gives a bitboard representing all squares along the ray in a
/// given direction from a given square.