X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fucioption.cpp;h=bb0b8311475cc460683deae42afb7a9ace27f8ec;hb=ba35c88ab84b959d41a67b3d8fcb40adc6537ec8;hp=84bcc832fad496bce50ba8e13b38e870799f9ec6;hpb=85477983452271946ef2dfa5cc8aad0aa841bb97;p=stockfish diff --git a/src/ucioption.cpp b/src/ucioption.cpp index 84bcc832..bb0b8311 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -1,7 +1,6 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 - Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad + Copyright (C) 2004-2020 The Stockfish developers (see AUTHORS file) Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,300 +16,177 @@ along with this program. If not, see . */ - -//// -//// Includes -//// - #include #include -#include -#include +#include #include -#include +#include "evaluate.h" #include "misc.h" +#include "search.h" #include "thread.h" -#include "ucioption.h" +#include "tt.h" +#include "uci.h" +#include "syzygy/tbprobe.h" using std::string; -using std::cout; -using std::endl; - -//// -//// Local definitions -//// - -namespace { - - enum OptionType { SPIN, COMBO, CHECK, STRING, BUTTON }; - typedef std::vector StrVector; +UCI::OptionsMap Options; // Global object - struct Option { +namespace UCI { - string name, defaultValue, currentValue; - OptionType type; - size_t idx; - int minValue, maxValue; - StrVector comboValues; +/// 'On change' actions, triggered by an option's value change +void on_clear_hash(const Option&) { Search::clear(); } +void on_hash_size(const Option& o) { TT.resize(size_t(o)); } +void on_logger(const Option& o) { start_logger(o); } +void on_threads(const Option& o) { Threads.set(size_t(o)); } +void on_tb_path(const Option& o) { Tablebases::init(o); } +void on_use_NNUE(const Option& ) { Eval::NNUE::init(); } +void on_eval_file(const Option& ) { Eval::NNUE::init(); } - Option(); - Option(const char* defaultValue, OptionType = STRING); - Option(bool defaultValue, OptionType = CHECK); - Option(int defaultValue, int minValue, int maxValue); +/// Our case insensitive less() function as required by UCI protocol +bool CaseInsensitiveLess::operator() (const string& s1, const string& s2) const { - bool operator<(const Option& o) const { return idx < o.idx; } - }; - - typedef std::vector