#include "evaluate.h"
#include "history.h"
#include "misc.h"
+#include "move.h"
#include "movegen.h"
#include "movepick.h"
#include "lock.h"
-#include "san.h"
#include "search.h"
#include "timeman.h"
#include "thread.h"
void extract_pv_from_tt(Position& pos);
void insert_pv_in_tt(Position& pos);
- std::string pv_info_to_uci(const Position& pos, Value alpha, Value beta, int pvLine = 0);
+ std::string pv_info_to_uci(Position& pos, Value alpha, Value beta, int pvLine = 0);
int64_t nodes;
Value pv_score;
// 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
int t = current_search_time();
// Poll for input
- if (data_available())
+ if (input_available())
{
// We are line oriented, don't read single chars
std::string command;
// formatted according to UCI specification and eventually writes the info
// to a log file. It is called at each iteration or after a new pv is found.
- std::string RootMove::pv_info_to_uci(const Position& pos, Value alpha, Value beta, int pvLine) {
+ std::string RootMove::pv_info_to_uci(Position& pos, Value alpha, Value beta, int pvLine) {
std::stringstream s, l;
Move* m = pv;
}
}
- // 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