Move uci move parsing under san.cpp

This partially reverts 1e7aaed8bc keeping the conversion
functions from/to move to uci string in the same file.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2011-01-08 15:53:08 +01:00
parent f4b4d4901c
commit 82d5386435
4 changed files with 108 additions and 104 deletions

View File

@@ -170,8 +170,11 @@ namespace {
// Overload operator << for moves to make it easier to print moves in
// coordinate notation compatible with UCI protocol.
std::ostream& operator<<(std::ostream& os, Move m) {
std::ostream& operator<<(std::ostream& os, Move m);
bool chess960 = (os.iword(0) != 0); // See set960()
return os << move_to_uci(m, chess960);
}
/// Adjustments
@@ -2717,35 +2720,4 @@ split_point_start: // At split points actual search starts from here
}
}
// Overload operator << to make it easier to print moves in coordinate notation
// (g1f3, a7a8q, etc.). The only special case is castling moves, where we
// print in the e1g1 notation in normal chess mode, and in e1h1 notation in
// Chess960 mode.
std::ostream& operator<<(std::ostream& os, Move m) {
Square from = move_from(m);
Square to = move_to(m);
bool chess960 = (os.iword(0) != 0); // See set960()
if (m == MOVE_NONE)
return os << "(none)";
if (m == MOVE_NULL)
return os << "0000";
if (move_is_short_castle(m) && !chess960)
return os << (from == SQ_E1 ? "e1g1" : "e8g8");
if (move_is_long_castle(m) && !chess960)
return os << (from == SQ_E1 ? "e1c1" : "e8c8");
os << square_to_string(from) << square_to_string(to);
if (move_is_promotion(m))
os << char(tolower(piece_type_to_char(move_promotion_piece(m))));
return os;
}
} // namespace