mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Tidy up comments in uci.cpp
No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
0f7cbaca75
commit
348f824104
3 changed files with 28 additions and 42 deletions
16
src/main.cpp
16
src/main.cpp
|
@ -17,9 +17,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// To profile with callgrind uncomment following line
|
|
||||||
//#define USE_CALLGRIND
|
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -31,10 +28,6 @@
|
||||||
#include "search.h"
|
#include "search.h"
|
||||||
#include "ucioption.h"
|
#include "ucioption.h"
|
||||||
|
|
||||||
#ifdef USE_CALLGRIND
|
|
||||||
#include <valgrind/callgrind.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
extern void uci_loop();
|
extern void uci_loop();
|
||||||
|
@ -56,23 +49,18 @@ int main(int argc, char* argv[]) {
|
||||||
Search::init();
|
Search::init();
|
||||||
Threads.init();
|
Threads.init();
|
||||||
|
|
||||||
#ifdef USE_CALLGRIND
|
|
||||||
CALLGRIND_START_INSTRUMENTATION;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
// Print copyright notice
|
|
||||||
cout << engine_name() << " by " << engine_authors() << endl;
|
cout << engine_name() << " by " << engine_authors() << endl;
|
||||||
|
|
||||||
if (CpuHasPOPCNT)
|
if (CpuHasPOPCNT)
|
||||||
cout << "Good! CPU has hardware POPCNT." << endl;
|
cout << "Good! CPU has hardware POPCNT." << endl;
|
||||||
|
|
||||||
// Enter the UCI loop waiting for input
|
uci_loop(); // Enter the UCI loop and wait for user input
|
||||||
uci_loop();
|
|
||||||
}
|
}
|
||||||
else if (string(argv[1]) == "bench" && argc < 8)
|
else if (string(argv[1]) == "bench" && argc < 8)
|
||||||
benchmark(argc, argv);
|
benchmark(argc, argv);
|
||||||
|
|
||||||
else
|
else
|
||||||
cout << "Usage: stockfish bench [hash size = 128] [threads = 1] "
|
cout << "Usage: stockfish bench [hash size = 128] [threads = 1] "
|
||||||
<< "[limit = 12] [fen positions file = default] "
|
<< "[limit = 12] [fen positions file = default] "
|
||||||
|
|
|
@ -680,7 +680,7 @@ namespace {
|
||||||
{
|
{
|
||||||
// If we are allowed to ponder do not stop the search now but
|
// If we are allowed to ponder do not stop the search now but
|
||||||
// keep pondering until GUI sends "ponderhit" or "stop".
|
// keep pondering until GUI sends "ponderhit" or "stop".
|
||||||
if (Limits.ponder) // FIXME racing
|
if (Limits.ponder)
|
||||||
Signals.stopOnPonderhit = true;
|
Signals.stopOnPonderhit = true;
|
||||||
else
|
else
|
||||||
Signals.stop = true;
|
Signals.stop = true;
|
||||||
|
|
52
src/uci.cpp
52
src/uci.cpp
|
@ -17,7 +17,6 @@
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -35,8 +34,8 @@ using namespace std;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// FEN string for the initial position
|
// FEN string of the initial position, normal chess
|
||||||
const char* StarFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
const char* StartFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
||||||
|
|
||||||
// Keep track of position keys along the setup moves (from start position to the
|
// Keep track of position keys along the setup moves (from start position to the
|
||||||
// position just before to start searching). This is needed by draw detection
|
// position just before to start searching). This is needed by draw detection
|
||||||
|
@ -51,35 +50,36 @@ namespace {
|
||||||
|
|
||||||
|
|
||||||
/// Wait for a command from the user, parse this text string as an UCI command,
|
/// Wait for a command from the user, parse this text string as an UCI command,
|
||||||
/// and calls the appropriate functions. Also intercepts EOF from stdin to
|
/// and call the appropriate functions. Also intercepts EOF from stdin to ensure
|
||||||
/// ensure that we exit gracefully if the GUI dies unexpectedly. In addition to
|
/// that we exit gracefully if the GUI dies unexpectedly. In addition to the UCI
|
||||||
/// the UCI commands, the function also supports a few debug commands.
|
/// commands, the function also supports a few debug commands.
|
||||||
|
|
||||||
void uci_loop() {
|
void uci_loop() {
|
||||||
|
|
||||||
Position pos(StarFEN, false, 0); // The root position
|
Position pos(StartFEN, false, 0); // The root position
|
||||||
string cmd, token;
|
string cmd, token;
|
||||||
bool quit = false;
|
|
||||||
|
|
||||||
while (!quit && getline(cin, cmd))
|
while (token != "quit")
|
||||||
{
|
{
|
||||||
|
if (!getline(cin, cmd)) // Block here waiting for input
|
||||||
|
cmd = "quit";
|
||||||
|
|
||||||
istringstream is(cmd);
|
istringstream is(cmd);
|
||||||
|
|
||||||
is >> skipws >> token;
|
is >> skipws >> token;
|
||||||
|
|
||||||
if (cmd == "quit" || cmd == "stop")
|
if (token == "quit" || token == "stop")
|
||||||
{
|
{
|
||||||
quit = (token == "quit");
|
|
||||||
Search::Signals.stop = true;
|
Search::Signals.stop = true;
|
||||||
Threads[0].wake_up(); // In case is waiting for stop or ponderhit
|
Threads[0].wake_up(); // In case is waiting for stop or ponderhit
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (cmd == "ponderhit")
|
else if (token == "ponderhit")
|
||||||
{
|
{
|
||||||
// The opponent has played the expected move. GUI sends "ponderhit" if
|
// The opponent has played the expected move. GUI sends "ponderhit" if
|
||||||
// we were told to ponder on the same move the opponent has played. We
|
// we were told to ponder on the same move the opponent has played. We
|
||||||
// should continue searching but switching from pondering to normal search.
|
// should continue searching but switching from pondering to normal search.
|
||||||
Search::Limits.ponder = false; // FIXME racing
|
Search::Limits.ponder = false;
|
||||||
|
|
||||||
if (Search::Signals.stopOnPonderhit)
|
if (Search::Signals.stopOnPonderhit)
|
||||||
Search::Signals.stop = true;
|
Search::Signals.stop = true;
|
||||||
|
@ -91,7 +91,7 @@ void uci_loop() {
|
||||||
go(pos, is);
|
go(pos, is);
|
||||||
|
|
||||||
else if (token == "ucinewgame")
|
else if (token == "ucinewgame")
|
||||||
pos.from_fen(StarFEN, false);
|
pos.from_fen(StartFEN, false);
|
||||||
|
|
||||||
else if (token == "isready")
|
else if (token == "isready")
|
||||||
cout << "readyok" << endl;
|
cout << "readyok" << endl;
|
||||||
|
@ -149,7 +149,7 @@ namespace {
|
||||||
|
|
||||||
if (token == "startpos")
|
if (token == "startpos")
|
||||||
{
|
{
|
||||||
fen = StarFEN;
|
fen = StartFEN;
|
||||||
is >> token; // Consume "moves" token if any
|
is >> token; // Consume "moves" token if any
|
||||||
}
|
}
|
||||||
else if (token == "fen")
|
else if (token == "fen")
|
||||||
|
@ -172,9 +172,8 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// set_option() is called when engine receives the "setoption" UCI
|
// set_option() is called when engine receives the "setoption" UCI command. The
|
||||||
// command. The function updates the corresponding UCI option ("name")
|
// function updates the UCI option ("name") to the given value ("value").
|
||||||
// to the given value ("value").
|
|
||||||
|
|
||||||
void set_option(istringstream& is) {
|
void set_option(istringstream& is) {
|
||||||
|
|
||||||
|
@ -197,10 +196,9 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// go() is called when engine receives the "go" UCI command. The
|
// go() is called when engine receives the "go" UCI command. The function sets
|
||||||
// function sets the thinking time and other parameters from the input
|
// the thinking time and other parameters from the input string, and then starts
|
||||||
// string, and then calls think(). Returns false if a quit command
|
// the main searching thread.
|
||||||
// is received while thinking, true otherwise.
|
|
||||||
|
|
||||||
void go(Position& pos, istringstream& is) {
|
void go(Position& pos, istringstream& is) {
|
||||||
|
|
||||||
|
@ -235,6 +233,7 @@ namespace {
|
||||||
while (is >> token)
|
while (is >> token)
|
||||||
searchMoves.push_back(move_from_uci(pos, token));
|
searchMoves.push_back(move_from_uci(pos, token));
|
||||||
}
|
}
|
||||||
|
|
||||||
searchMoves.push_back(MOVE_NONE);
|
searchMoves.push_back(MOVE_NONE);
|
||||||
limits.time = time[pos.side_to_move()];
|
limits.time = time[pos.side_to_move()];
|
||||||
limits.increment = inc[pos.side_to_move()];
|
limits.increment = inc[pos.side_to_move()];
|
||||||
|
@ -243,21 +242,20 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// perft() is called when engine receives the "perft" command.
|
// perft() is called when engine receives the "perft" command. The function
|
||||||
// The function calls perft() passing the required search depth
|
// calls perft() with the required search depth then prints counted leaf nodes
|
||||||
// then prints counted leaf nodes and elapsed time.
|
// and elapsed time.
|
||||||
|
|
||||||
void perft(Position& pos, istringstream& is) {
|
void perft(Position& pos, istringstream& is) {
|
||||||
|
|
||||||
int depth, time;
|
int depth, time;
|
||||||
int64_t n;
|
|
||||||
|
|
||||||
if (!(is >> depth))
|
if (!(is >> depth))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
time = get_system_time();
|
time = get_system_time();
|
||||||
|
|
||||||
n = Search::perft(pos, depth * ONE_PLY);
|
int64_t n = Search::perft(pos, depth * ONE_PLY);
|
||||||
|
|
||||||
time = get_system_time() - time;
|
time = get_system_time() - time;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue