No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
// the special Move's flags (bit 14-15) that are not supported by PolyGlot.
int pt = (move >> 12) & 7;
if (pt)
// the special Move's flags (bit 14-15) that are not supported by PolyGlot.
int pt = (move >> 12) & 7;
if (pt)
- move = make_promotion(from_sq(move), to_sq(move), PieceType(pt + 1));
+ move = make<PROMOTION>(from_sq(move), to_sq(move), PieceType(pt + 1));
// Add 'special move' flags and verify it is legal
for (MoveList<LEGAL> ml(pos); !ml.end(); ++ml)
// Add 'special move' flags and verify it is legal
for (MoveList<LEGAL> ml(pos); !ml.end(); ++ml)
&& (pos.attackers_to(kto, pos.pieces() ^ rfrom) & enemies))
return mlist;
&& (pos.attackers_to(kto, pos.pieces() ^ rfrom) & enemies))
return mlist;
- (*mlist++).move = make_castle(kfrom, rfrom);
+ (*mlist++).move = make<CASTLE>(kfrom, rfrom);
if (OnlyChecks && !pos.move_gives_check((mlist - 1)->move, CheckInfo(pos)))
mlist--;
if (OnlyChecks && !pos.move_gives_check((mlist - 1)->move, CheckInfo(pos)))
mlist--;
Square to = pop_1st_bit(&b);
if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS)
Square to = pop_1st_bit(&b);
if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS)
- (*mlist++).move = make_promotion(to - Delta, to, QUEEN);
+ (*mlist++).move = make<PROMOTION>(to - Delta, to, QUEEN);
if (Type == QUIETS || Type == EVASIONS || Type == NON_EVASIONS)
{
if (Type == QUIETS || Type == EVASIONS || Type == NON_EVASIONS)
{
- (*mlist++).move = make_promotion(to - Delta, to, ROOK);
- (*mlist++).move = make_promotion(to - Delta, to, BISHOP);
- (*mlist++).move = make_promotion(to - Delta, to, KNIGHT);
+ (*mlist++).move = make<PROMOTION>(to - Delta, to, ROOK);
+ (*mlist++).move = make<PROMOTION>(to - Delta, to, BISHOP);
+ (*mlist++).move = make<PROMOTION>(to - Delta, to, KNIGHT);
}
// Knight-promotion is the only one that can give a direct check not
// already included in the queen-promotion.
if (Type == QUIET_CHECKS && (StepAttacksBB[W_KNIGHT][to] & ksq))
}
// Knight-promotion is the only one that can give a direct check not
// already included in the queen-promotion.
if (Type == QUIET_CHECKS && (StepAttacksBB[W_KNIGHT][to] & ksq))
- (*mlist++).move = make_promotion(to - Delta, to, KNIGHT);
+ (*mlist++).move = make<PROMOTION>(to - Delta, to, KNIGHT);
else
(void)ksq; // Silence a warning under MSVC
}
else
(void)ksq; // Silence a warning under MSVC
}
- (*mlist++).move = make_enpassant(pop_1st_bit(&b1), pos.ep_square());
+ (*mlist++).move = make<ENPASSANT>(pop_1st_bit(&b1), pos.ep_square());
return Move(to | (from << 6));
}
return Move(to | (from << 6));
}
-inline Move make_promotion(Square from, Square to, PieceType pt) {
- return Move(to | (from << 6) | (1 << 14) | ((pt - 2) << 12)) ;
-}
-
-inline Move make_enpassant(Square from, Square to) {
- return Move(to | (from << 6) | (2 << 14));
-}
-
-inline Move make_castle(Square from, Square to) {
- return Move(to | (from << 6) | (3 << 14));
+template<MoveType T>
+inline Move make(Square from, Square to, PieceType pt = KNIGHT) {
+ return Move(to | (from << 6) | T | ((pt - KNIGHT) << 12)) ;
}
inline bool is_ok(Move m) {
}
inline bool is_ok(Move m) {