Get rid of some locals in do_castle_move()
authorMarco Costalba <mcostalba@gmail.com>
Sun, 27 Jan 2013 09:56:03 +0000 (10:56 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 27 Jan 2013 10:03:55 +0000 (11:03 +0100)
Rewrite the logic to get rid of kBefore and rBefore.

No functional change.

src/position.cpp

index 599350888d86cca9243a081334b5fd48b3911d1b..f3eb76f82c9932dbc637eb6c673f23b055682d93 100644 (file)
@@ -1052,30 +1052,24 @@ void Position::do_castle_move(Move m) {
   assert(is_ok(m));
   assert(type_of(m) == CASTLE);
 
   assert(is_ok(m));
   assert(type_of(m) == CASTLE);
 
-  Square kto, kfrom, rfrom, rto, kAfter, rAfter;
-
   Color us = sideToMove;
   Color us = sideToMove;
-  Square kBefore = from_sq(m);
-  Square rBefore = to_sq(m);
+  Square kfrom, kto, rfrom, rto;
+
+  bool kingSide = to_sq(m) > from_sq(m);
+  kfrom = kto = from_sq(m);
+  rfrom = rto = to_sq(m);
 
 
-  // Find after-castle squares for king and rook
-  if (rBefore > kBefore) // O-O
+  if (Do)
   {
   {
-      kAfter = relative_square(us, SQ_G1);
-      rAfter = relative_square(us, SQ_F1);
+      kto = relative_square(us, kingSide ? SQ_G1 : SQ_C1);
+      rto = relative_square(us, kingSide ? SQ_F1 : SQ_D1);
   }
   }
-  else // O-O-O
+  else
   {
   {
-      kAfter = relative_square(us, SQ_C1);
-      rAfter = relative_square(us, SQ_D1);
+      kfrom = relative_square(us, kingSide ? SQ_G1 : SQ_C1);
+      rfrom = relative_square(us, kingSide ? SQ_F1 : SQ_D1);
   }
 
   }
 
-  kfrom = Do ? kBefore : kAfter;
-  rfrom = Do ? rBefore : rAfter;
-
-  kto = Do ? kAfter : kBefore;
-  rto = Do ? rAfter : rBefore;
-
   assert(piece_on(kfrom) == make_piece(us, KING));
   assert(piece_on(rfrom) == make_piece(us, ROOK));
 
   assert(piece_on(kfrom) == make_piece(us, KING));
   assert(piece_on(rfrom) == make_piece(us, ROOK));