Skip to content

Commit

Permalink
Final UCI helpers renaming
Browse files Browse the repository at this point in the history
To reflect new changes, specifically that
now are all under UCI namespace.

No functional change.
  • Loading branch information
mcostalba authored and zamar committed Oct 26, 2014
1 parent aa60c80 commit 2469dae
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 27 deletions.
24 changes: 16 additions & 8 deletions src/notation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ using namespace std;
static const char* PieceToChar[COLOR_NB] = { " PNBRQK", " pnbrqk" };


/// score_to_uci() converts a value to a string suitable for use with the UCI
/// score_to_uci() converts a Value to a string suitable for use with the UCI
/// protocol specifications:
///
/// cp <x> The score from the engine's point of view in centipawns.
/// mate <y> Mate in y moves, not plies. If the engine is getting mated
/// use negative values for y.

string UCI::score_to_uci(Value v, Value alpha, Value beta) {
string UCI::format_value(Value v, Value alpha, Value beta) {

stringstream ss;

Expand All @@ -51,12 +51,20 @@ string UCI::score_to_uci(Value v, Value alpha, Value beta) {
}


/// move_to_uci() converts a move to a string in coordinate notation
/// format_square() converts a Square to a string (g1, a7, etc.)

std::string UCI::format_square(Square s) {
char ch[] = { 'a' + file_of(s), '1' + rank_of(s), 0 };
return ch;
}


/// format_move() converts a Move to a string 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. Internally castling moves are always encoded as "king captures rook".

const string UCI::move_to_uci(Move m, bool chess960) {
string UCI::format_move(Move m, bool chess960) {

Square from = from_sq(m);
Square to = to_sq(m);
Expand All @@ -70,7 +78,7 @@ const string UCI::move_to_uci(Move m, bool chess960) {
if (type_of(m) == CASTLING && !chess960)
to = make_square(to > from ? FILE_G : FILE_C, rank_of(from));

string move = to_string(from) + to_string(to);
string move = format_square(from) + format_square(to);

if (type_of(m) == PROMOTION)
move += PieceToChar[BLACK][promotion_type(m)]; // Lower case
Expand All @@ -79,16 +87,16 @@ const string UCI::move_to_uci(Move m, bool chess960) {
}


/// move_from_uci() takes a position and a string representing a move in
/// to_move() takes a position and a string representing a move in
/// simple coordinate notation and returns an equivalent legal Move if any.

Move UCI::move_from_uci(const Position& pos, string& str) {
Move UCI::to_move(const Position& pos, string& str) {

if (str.length() == 5) // Junior could send promotion piece in uppercase
str[4] = char(tolower(str[4]));

for (MoveList<LEGAL> it(pos); *it; ++it)
if (str == move_to_uci(*it, pos.is_chess960()))
if (str == format_move(*it, pos.is_chess960()))
return *it;

return MOVE_NONE;
Expand Down
4 changes: 2 additions & 2 deletions src/position.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ const string Position::fen() const {
if (!can_castle(WHITE) && !can_castle(BLACK))
ss << '-';

ss << (ep_square() == SQ_NONE ? " - " : " " + UCI::to_string(ep_square()) + " ")
ss << (ep_square() == SQ_NONE ? " - " : " " + UCI::format_square(ep_square()) + " ")
<< st->rule50 << " " << 1 + (gamePly - (sideToMove == BLACK)) / 2;

return ss.str();
Expand All @@ -450,7 +450,7 @@ const string Position::pretty() const {
<< std::setfill('0') << std::setw(16) << st->key << "\nCheckers: ";

for (Bitboard b = checkers(); b; )
ss << UCI::to_string(pop_lsb(&b)) << " ";
ss << UCI::format_square(pop_lsb(&b)) << " ";

return ss.str();
}
Expand Down
14 changes: 7 additions & 7 deletions src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ uint64_t Search::perft(Position& pos, Depth depth) {
pos.undo_move(*it);
}
if (Root)
sync_cout << UCI::move_to_uci(*it, pos.is_chess960()) << ": " << cnt << sync_endl;
sync_cout << UCI::format_move(*it, pos.is_chess960()) << ": " << cnt << sync_endl;
}
return nodes;
}
Expand All @@ -191,7 +191,7 @@ void Search::think() {
{
RootMoves.push_back(MOVE_NONE);
sync_cout << "info depth 0 score "
<< UCI::score_to_uci(RootPos.checkers() ? -VALUE_MATE : VALUE_DRAW)
<< UCI::format_value(RootPos.checkers() ? -VALUE_MATE : VALUE_DRAW)
<< sync_endl;

goto finalize;
Expand Down Expand Up @@ -226,8 +226,8 @@ void Search::think() {
}

// Best move could be MOVE_NONE when searching on a stalemate position
sync_cout << "bestmove " << UCI::move_to_uci(RootMoves[0].pv[0], RootPos.is_chess960())
<< " ponder " << UCI::move_to_uci(RootMoves[0].pv[1], RootPos.is_chess960())
sync_cout << "bestmove " << UCI::format_move(RootMoves[0].pv[0], RootPos.is_chess960())
<< " ponder " << UCI::format_move(RootMoves[0].pv[1], RootPos.is_chess960())
<< sync_endl;
}

Expand Down Expand Up @@ -694,7 +694,7 @@ namespace {

if (thisThread == Threads.main() && Time::now() - SearchTime > 3000)
sync_cout << "info depth " << depth
<< " currmove " << UCI::move_to_uci(move, pos.is_chess960())
<< " currmove " << UCI::format_move(move, pos.is_chess960())
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
}

Expand Down Expand Up @@ -1326,15 +1326,15 @@ namespace {

ss << "info depth " << d
<< " seldepth " << selDepth
<< " score " << (i == PVIdx ? UCI::score_to_uci(v, alpha, beta) : UCI::score_to_uci(v))
<< " score " << (i == PVIdx ? UCI::format_value(v, alpha, beta) : UCI::format_value(v))
<< " nodes " << pos.nodes_searched()
<< " nps " << pos.nodes_searched() * 1000 / elapsed
<< " time " << elapsed
<< " multipv " << i + 1
<< " pv";

for (size_t j = 0; RootMoves[i].pv[j] != MOVE_NONE; ++j)
ss << " " << UCI::move_to_uci(RootMoves[i].pv[j], pos.is_chess960());
ss << " " << UCI::format_move(RootMoves[i].pv[j], pos.is_chess960());
}

return ss.str();
Expand Down
4 changes: 2 additions & 2 deletions src/uci.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ namespace {
SetupStates = Search::StateStackPtr(new std::stack<StateInfo>());

// Parse move list (if any)
while (is >> token && (m = UCI::move_from_uci(pos, token)) != MOVE_NONE)
while (is >> token && (m = UCI::to_move(pos, token)) != MOVE_NONE)
{
SetupStates->push(StateInfo());
pos.do_move(m, SetupStates->top());
Expand Down Expand Up @@ -116,7 +116,7 @@ namespace {
{
if (token == "searchmoves")
while (is >> token)
limits.searchmoves.push_back(UCI::move_from_uci(pos, token));
limits.searchmoves.push_back(UCI::to_move(pos, token));

else if (token == "wtime") is >> limits.time[WHITE];
else if (token == "btime") is >> limits.time[BLACK];
Expand Down
12 changes: 4 additions & 8 deletions src/uci.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,10 @@ class Option {
void init(OptionsMap&);
void loop(int argc, char* argv[]);

std::string score_to_uci(Value v, Value alpha = -VALUE_INFINITE, Value beta = VALUE_INFINITE);
Move move_from_uci(const Position& pos, std::string& str);
const std::string move_to_uci(Move m, bool chess960);

inline const std::string to_string(Square s) {
char ch[] = { 'a' + file_of(s), '1' + rank_of(s), 0 };
return ch;
}
Move to_move(const Position& pos, std::string& str);
std::string format_move(Move m, bool chess960);
std::string format_value(Value v, Value alpha = -VALUE_INFINITE, Value beta = VALUE_INFINITE);
std::string format_square(Square s);

} // namespace UCI

Expand Down

0 comments on commit 2469dae

Please sign in to comment.