X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=inline;f=src%2Fposition.cpp;h=ff0c4162a8f4e77303be946d4b68e171b304f6dc;hb=4ead60e2a77892dbeedb36f4557da5eba2f0558b;hp=fc9ac124da2cd9a0109b68337f490b49b7dd9654;hpb=b85bcc039cddd1c03967096bdd4dbfff709f2935;p=stockfish
diff --git a/src/position.cpp b/src/position.cpp
index fc9ac124..ff0c4162 100644
--- a/src/position.cpp
+++ b/src/position.cpp
@@ -17,12 +17,6 @@
along with this program. If not, see .
*/
-
-////
-//// Includes
-////
-
-#include
#include
#include
#include
@@ -32,7 +26,6 @@
#include "bitcount.h"
#include "movegen.h"
-#include "movepick.h"
#include "position.h"
#include "psqtab.h"
#include "rkiss.h"
@@ -43,11 +36,6 @@ using std::string;
using std::cout;
using std::endl;
-
-////
-//// Position's static data definitions
-////
-
Key Position::zobrist[2][8][64];
Key Position::zobEp[64];
Key Position::zobCastle[16];
@@ -88,8 +76,6 @@ namespace {
// Bonus for having the side to move (modified by Joona Kiiski)
const Score TempoValue = make_score(48, 22);
- bool isZero(char c) { return c == '0'; }
-
struct PieceLetters : public std::map {
PieceLetters() {
@@ -352,7 +338,7 @@ const string Position::to_fen() const {
Square sq;
char emptyCnt = '0';
- for (Rank rank = RANK_8; rank >= RANK_1; rank--)
+ for (Rank rank = RANK_8; rank >= RANK_1; rank--, fen += '/')
{
for (File file = FILE_A; file <= FILE_H; file++)
{
@@ -360,19 +346,23 @@ const string Position::to_fen() const {
if (square_is_occupied(sq))
{
- fen += emptyCnt;
+ if (emptyCnt != '0')
+ {
+ fen += emptyCnt;
+ emptyCnt = '0';
+ }
fen += pieceLetters.from_piece(piece_on(sq));
- emptyCnt = '0';
} else
emptyCnt++;
}
- fen += emptyCnt;
- fen += '/';
- emptyCnt = '0';
+
+ if (emptyCnt != '0')
+ {
+ fen += emptyCnt;
+ emptyCnt = '0';
+ }
}
- fen.erase(std::remove_if(fen.begin(), fen.end(), isZero), fen.end());
- fen.erase(--fen.end());
fen += (sideToMove == WHITE ? " w " : " b ");
if (st->castleRights != CASTLES_NONE)
@@ -402,14 +392,6 @@ const string Position::to_fen() const {
void Position::print(Move move) const {
const char* dottedLine = "\n+---+---+---+---+---+---+---+---+\n";
- static bool requestPending = false;
-
- // Check for reentrancy, as example when called from inside
- // MovePicker that is used also here in move_to_san()
- if (requestPending)
- return;
-
- requestPending = true;
if (move)
{
@@ -424,17 +406,16 @@ void Position::print(Move move) const {
for (File file = FILE_A; file <= FILE_H; file++)
{
Square sq = make_square(file, rank);
- char c = (color_of_piece_on(sq) == BLACK ? '=' : ' ');
Piece piece = piece_on(sq);
if (piece == PIECE_NONE && square_color(sq) == DARK)
piece = PIECE_NONE_DARK_SQ;
+ char c = (color_of_piece_on(sq) == BLACK ? '=' : ' ');
cout << c << pieceLetters.from_piece(piece) << c << '|';
}
}
cout << dottedLine << "Fen is: " << to_fen() << "\nKey is: " << st->key << endl;
- requestPending = false;
}