/// Simple macro to wrap a very common while loop, no facny, no flexibility,
/// hardcoded names 'mlist' and 'from'.
-#define SERIALIZE(b) while (b) (*mlist++).move = make_move(from, pop_1st_bit(&b))
+#define SERIALIZE(b) while (b) (*mlist++).move = make_move(from, pop_lsb(&b))
/// Version used for pawns, where the 'from' square is given as a delta from the 'to' square
-#define SERIALIZE_PAWNS(b, d) while (b) { Square to = pop_1st_bit(&b); \
+#define SERIALIZE_PAWNS(b, d) while (b) { Square to = pop_lsb(&b); \
(*mlist++).move = make_move(to - (d), to); }
namespace {
while (b)
{
- Square to = pop_1st_bit(&b);
+ Square to = pop_lsb(&b);
if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS)
(*mlist++).move = make<PROMOTION>(to - Delta, to, QUEEN);
assert(b1);
while (b1)
- (*mlist++).move = make<ENPASSANT>(pop_1st_bit(&b1), pos.ep_square());
+ (*mlist++).move = make<ENPASSANT>(pop_lsb(&b1), pos.ep_square());
}
}
while (dc)
{
- Square from = pop_1st_bit(&dc);
+ Square from = pop_lsb(&dc);
PieceType pt = type_of(pos.piece_on(from));
if (pt == PAWN)
do
{
checkersCnt++;
- checksq = pop_1st_bit(&b);
+ checksq = pop_lsb(&b);
assert(color_of(pos.piece_on(checksq)) == ~us);