]> git.sesse.net Git - stockfish/blob - src/syzygy/tbprobe.h
Improve testing coverage, remove unused code
[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 "../search.h"
23
24 namespace Stockfish::Tablebases {
25
26 enum WDLScore {
27     WDLLoss        = -2, // Loss
28     WDLBlessedLoss = -1, // Loss, but draw under 50-move rule
29     WDLDraw        =  0, // Draw
30     WDLCursedWin   =  1, // Win, but draw under 50-move rule
31     WDLWin         =  2, // Win
32 };
33
34 // Possible states after a probing operation
35 enum ProbeState {
36     FAIL              =  0, // Probe failed (missing file table)
37     OK                =  1, // Probe successful
38     CHANGE_STM        = -1, // DTZ should check the other side
39     ZEROING_BEST_MOVE =  2  // Best move zeroes DTZ (capture or pawn move)
40 };
41
42 extern int MaxCardinality;
43
44 void init(const std::string& paths);
45 WDLScore probe_wdl(Position& pos, ProbeState* result);
46 int probe_dtz(Position& pos, ProbeState* result);
47 bool root_probe(Position& pos, Search::RootMoves& rootMoves);
48 bool root_probe_wdl(Position& pos, Search::RootMoves& rootMoves);
49 void rank_root_moves(Position& pos, Search::RootMoves& rootMoves);
50
51 } // namespace Stockfish::Tablebases
52
53 #endif