X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=7ae1effd9487f036407f3429c8a5047ec6f52023;hp=6032f47f6294b385847716154fe145009dfb5604;hb=335dc2d0217fdca26886c357a7f9e3e85e7b8b50;hpb=759b3c79cf94d101163f646b1eb2a9f9c64293ab diff --git a/src/bitboard.h b/src/bitboard.h index 6032f47f..7ae1effd 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -107,22 +107,27 @@ extern Magic BishopMagics[SQUARE_NB]; /// whether a given bit is set in a bitboard, and for setting and clearing bits. inline Bitboard operator&(Bitboard b, Square s) { + assert(s >= SQ_A1 && s <= SQ_H8); return b & SquareBB[s]; } inline Bitboard operator|(Bitboard b, Square s) { + assert(s >= SQ_A1 && s <= SQ_H8); return b | SquareBB[s]; } inline Bitboard operator^(Bitboard b, Square s) { + assert(s >= SQ_A1 && s <= SQ_H8); return b ^ SquareBB[s]; } inline Bitboard& operator|=(Bitboard& b, Square s) { + assert(s >= SQ_A1 && s <= SQ_H8); return b |= SquareBB[s]; } inline Bitboard& operator^=(Bitboard& b, Square s) { + assert(s >= SQ_A1 && s <= SQ_H8); return b ^= SquareBB[s]; } @@ -165,8 +170,9 @@ constexpr Bitboard make_bitboard(Square s, Squares... squares) { template constexpr Bitboard shift(Bitboard b) { return D == NORTH ? b << 8 : D == SOUTH ? b >> 8 - : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 - : D == NORTH_WEST ? (b & ~FileABB) << 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 + : D == EAST ? (b & ~FileHBB) << 1 : D == WEST ? (b & ~FileABB) >> 1 + : D == NORTH_EAST ? (b & ~FileHBB) << 9 : D == NORTH_WEST ? (b & ~FileABB) << 7 + : D == SOUTH_EAST ? (b & ~FileHBB) >> 7 : D == SOUTH_WEST ? (b & ~FileABB) >> 9 : 0; }