Retire move.cpp

Move its functions where they belong.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2011-01-07 13:00:25 +01:00
parent a46b53e1c2
commit 1e7aaed8bc
11 changed files with 123 additions and 184 deletions
+39 -2
View File
@@ -161,13 +161,19 @@ namespace {
// operator<<() that will use it to properly format castling moves.
enum set960 {};
std::ostream& operator<< (std::ostream& os, const set960& m) {
std::ostream& operator<< (std::ostream& os, const set960& f) {
os.iword(0) = int(m);
os.iword(0) = int(f);
return os;
}
// 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);
/// Adjustments
// Step 6. Razoring
@@ -2711,4 +2717,35 @@ 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