From b2c0634d4898a78a9e82fca9197467d442e5cb95 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 12 Apr 2014 12:52:10 +0200 Subject: [PATCH] Move args parsing to UCI::loop This leaves a very clean main.cpp No functional change. --- src/main.cpp | 8 +------- src/uci.cpp | 11 +++++++---- src/ucioption.h | 2 +- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index dd0b7ff8a88..cbb260f26d9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,7 +18,6 @@ */ #include -#include #include "bitboard.h" #include "evaluate.h" @@ -42,12 +41,7 @@ int main(int argc, char* argv[]) { Threads.init(); TT.resize(Options["Hash"]); - std::string args; - - for (int i = 1; i < argc; ++i) - args += std::string(argv[i]) + " "; - - UCI::loop(args); + UCI::loop(argc, argv); Threads.exit(); } diff --git a/src/uci.cpp b/src/uci.cpp index df01836b3d8..e4a4393cfe7 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -143,13 +143,16 @@ namespace { /// that we exit gracefully if the GUI dies unexpectedly. In addition to the UCI /// commands, the function also supports a few debug commands. -void UCI::loop(const string& args) { +void UCI::loop(int argc, char* argv[]) { Position pos(StartFEN, false, Threads.main()); // The root position - string token, cmd = args; + string token, cmd; + + for (int i = 1; i < argc; ++i) + cmd += std::string(argv[i]) + " "; do { - if (args.empty() && !getline(cin, cmd)) // Block here waiting for input + if (argc == 1 && !getline(cin, cmd)) // Block here waiting for input cmd = "quit"; istringstream is(cmd); @@ -208,7 +211,7 @@ void UCI::loop(const string& args) { else sync_cout << "Unknown command: " << cmd << sync_endl; - } while (token != "quit" && args.empty()); // Args have one-shot behaviour + } while (token != "quit" && argc == 1); // Passed args have one-shot behaviour Threads.wait_for_think_finished(); // Cannot quit whilst the search is running } diff --git a/src/ucioption.h b/src/ucioption.h index 19ca14fdd57..87411a44929 100644 --- a/src/ucioption.h +++ b/src/ucioption.h @@ -61,7 +61,7 @@ class Option { }; void init(OptionsMap&); -void loop(const std::string&); +void loop(int argc, char* argv[]); } // namespace UCI