From dc88cd691f5b393fe52c1b2be93d467def7391ea Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Mon, 25 Jun 2012 07:57:28 +0100 Subject: [PATCH] Templetize make_move() helpers No functional change. Signed-off-by: Marco Costalba --- src/book.cpp | 2 +- src/movegen.cpp | 14 +++++++------- src/types.h | 13 +++---------- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/book.cpp b/src/book.cpp index cd3b432b..8624dfbf 100644 --- a/src/book.cpp +++ b/src/book.cpp @@ -442,7 +442,7 @@ Move Book::probe(const Position& pos, const string& fName, bool pickBest) { // 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(from_sq(move), to_sq(move), PieceType(pt + 1)); // Add 'special move' flags and verify it is legal for (MoveList ml(pos); !ml.end(); ++ml) diff --git a/src/movegen.cpp b/src/movegen.cpp index 2c71c680..4ae16b4b 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -59,7 +59,7 @@ namespace { && (pos.attackers_to(kto, pos.pieces() ^ rfrom) & enemies)) return mlist; - (*mlist++).move = make_castle(kfrom, rfrom); + (*mlist++).move = make(kfrom, rfrom); if (OnlyChecks && !pos.move_gives_check((mlist - 1)->move, CheckInfo(pos))) mlist--; @@ -90,19 +90,19 @@ namespace { 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(to - Delta, to, QUEEN); 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(to - Delta, to, ROOK); + (*mlist++).move = make(to - Delta, to, BISHOP); + (*mlist++).move = make(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)) - (*mlist++).move = make_promotion(to - Delta, to, KNIGHT); + (*mlist++).move = make(to - Delta, to, KNIGHT); else (void)ksq; // Silence a warning under MSVC } @@ -207,7 +207,7 @@ namespace { assert(b1); while (b1) - (*mlist++).move = make_enpassant(pop_1st_bit(&b1), pos.ep_square()); + (*mlist++).move = make(pop_1st_bit(&b1), pos.ep_square()); } } diff --git a/src/types.h b/src/types.h index 8934cc48..33f84f0c 100644 --- a/src/types.h +++ b/src/types.h @@ -447,16 +447,9 @@ inline Move make_move(Square from, Square to) { 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 +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) { -- 2.39.2