]> git.sesse.net Git - stockfish/blobdiff - src/move.cpp
Big renaming of move's helpers
[stockfish] / src / move.cpp
index b019110b974f044db3f08bb262e6ead65c711d99..7b8c4fcc62634e8eb086f867c3c6d0ee4d2a9fbf 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
+  Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -21,7 +21,6 @@
 #include <cstring>
 #include <string>
 
-#include "move.h"
 #include "movegen.h"
 #include "position.h"
 
@@ -34,8 +33,8 @@ using std::string;
 
 const string move_to_uci(Move m, bool chess960) {
 
-  Square from = move_from(m);
-  Square to = move_to(m);
+  Square from = from_sq(m);
+  Square to = to_sq(m);
   string promotion;
 
   if (m == MOVE_NONE)
@@ -84,13 +83,13 @@ const string move_to_san(Position& pos, Move m) {
 
   Bitboard attackers;
   bool ambiguousMove, ambiguousFile, ambiguousRank;
-  Square sq, from = move_from(m);
-  Square to = move_to(m);
+  Square sq, from = from_sq(m);
+  Square to = to_sq(m);
   PieceType pt = type_of(pos.piece_on(from));
   string san;
 
   if (is_castle(m))
-      san = (move_to(m) < move_from(m) ? "O-O-O" : "O-O");
+      san = (to_sq(m) < from_sq(m) ? "O-O-O" : "O-O");
   else
   {
       if (pt != PAWN)
@@ -107,6 +106,10 @@ const string move_to_san(Position& pos, Move m) {
           {
               sq = pop_1st_bit(&attackers);
 
+              // Pinned pieces are not included in the possible sub-set
+              if (!pos.pl_move_is_legal(make_move(sq, to), pos.pinned_pieces()))
+                  continue;
+
               if (file_of(sq) == file_of(from))
                   ambiguousFile = true;