Templetize make_move() helpers
authorMarco Costalba <mcostalba@gmail.com>
Mon, 25 Jun 2012 06:57:28 +0000 (07:57 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 25 Jun 2012 07:09:55 +0000 (08:09 +0100)
No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/book.cpp
src/movegen.cpp
src/types.h

index cd3b432b0d24c80fcbf89e7569af78d37fee58e6..8624dfbf8e88d9c386e970b2096ae13045df821d 100644 (file)
@@ -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)
   // 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)
index 2c71c680e9f857485a931a350e3bf69ed9afd9c2..4ae16b4b37eb71ede0d8abf96fee0695f153e3ec 100644 (file)
@@ -59,7 +59,7 @@ namespace {
         && (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--;
@@ -90,19 +90,19 @@ namespace {
         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
     }
@@ -207,7 +207,7 @@ namespace {
             assert(b1);
 
             while (b1)
             assert(b1);
 
             while (b1)
-                (*mlist++).move = make_enpassant(pop_1st_bit(&b1), pos.ep_square());
+                (*mlist++).move = make<ENPASSANT>(pop_1st_bit(&b1), pos.ep_square());
         }
     }
 
         }
     }
 
index 8934cc4833bcd5755e9f72746cd785af9c4c23c2..33f84f0cd56d14607d1adf27f5b46ed46f4172cd 100644 (file)
@@ -447,16 +447,9 @@ inline Move make_move(Square from, Square to) {
   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) {