251a0caf8ac109df5ff03c1349443e38cfae7d9e
[stockfish] / src / notation.h
1 /*
2   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
3   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
4   Copyright (C) 2008-2014 Marco Costalba, Joona Kiiski, Tord Romstad
5
6   Stockfish is free software: you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation, either version 3 of the License, or
9   (at your option) any later version.
10
11   Stockfish is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef NOTATION_H_INCLUDED
21 #define NOTATION_H_INCLUDED
22
23 #include <string>
24
25 #include "types.h"
26
27 class Position;
28
29 std::string score_to_uci(Value v, Value alpha = -VALUE_INFINITE, Value beta = VALUE_INFINITE);
30 Move move_from_uci(const Position& pos, std::string& str);
31 const std::string move_to_uci(Move m, bool chess960);
32
33 inline char to_char(File f, bool tolower = true) {
34   return char(f - FILE_A + (tolower ? 'a' : 'A'));
35 }
36
37 inline char to_char(Rank r) {
38   return char(r - RANK_1 + '1');
39 }
40
41 inline const std::string to_string(Square s) {
42   char ch[] = { to_char(file_of(s)), to_char(rank_of(s)), 0 };
43   return ch;
44 }
45
46 #endif // #ifndef NOTATION_H_INCLUDED