]> git.sesse.net Git - stockfish/blob - src/syzygy/tbprobe.h
Cleanup includes
[stockfish] / src / syzygy / tbprobe.h
1 /*
2   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
3   Copyright (C) 2004-2023 The Stockfish developers (see AUTHORS file)
4
5   Stockfish is free software: you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation, either version 3 of the License, or
8   (at your option) any later version.
9
10   Stockfish is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #ifndef TBPROBE_H
20 #define TBPROBE_H
21
22 #include <string>
23
24 #include "../search.h"
25
26 namespace Stockfish {
27 class Position;
28 }
29
30 namespace Stockfish::Tablebases {
31
32 enum WDLScore {
33     WDLLoss        = -2, // Loss
34     WDLBlessedLoss = -1, // Loss, but draw under 50-move rule
35     WDLDraw        =  0, // Draw
36     WDLCursedWin   =  1, // Win, but draw under 50-move rule
37     WDLWin         =  2, // Win
38 };
39
40 // Possible states after a probing operation
41 enum ProbeState {
42     FAIL              =  0, // Probe failed (missing file table)
43     OK                =  1, // Probe successful
44     CHANGE_STM        = -1, // DTZ should check the other side
45     ZEROING_BEST_MOVE =  2  // Best move zeroes DTZ (capture or pawn move)
46 };
47
48 extern int MaxCardinality;
49
50 void init(const std::string& paths);
51 WDLScore probe_wdl(Position& pos, ProbeState* result);
52 int probe_dtz(Position& pos, ProbeState* result);
53 bool root_probe(Position& pos, Search::RootMoves& rootMoves);
54 bool root_probe_wdl(Position& pos, Search::RootMoves& rootMoves);
55 void rank_root_moves(Position& pos, Search::RootMoves& rootMoves);
56
57 } // namespace Stockfish::Tablebases
58
59 #endif