}
-/// OptionsMap c'tor initializes the UCI options to their hard coded default
+/// UCIOptions::init() initializes the UCI options to their hard coded default
/// values and initializes the default value of "Threads" and "Min Split Depth"
/// parameters according to the number of CPU cores detected.
-OptionsMap::OptionsMap() {
+void UCIOptions::init(OptionsMap& o) {
int cpus = std::min(cpu_count(), MAX_THREADS);
int msd = cpus < 8 ? 4 : 7;
- OptionsMap& o = *this;
o["Use Debug Log"] = UCIOption(false, on_logger);
o["Use Search Log"] = UCIOption(false);
/// check for option's limits, but we could receive the new value directly from
/// the user by console window, so let's check the bounds anyway.
-void UCIOption::operator=(const string& v) {
+UCIOption& UCIOption::operator=(const string& v) {
assert(!type.empty());
if ( (type != "button" && v.empty())
|| (type == "check" && v != "true" && v != "false")
|| (type == "spin" && (atoi(v.c_str()) < min || atoi(v.c_str()) > max)))
- return;
+ return *this;
if (type != "button")
currentValue = v;
if (on_change)
(*on_change)(*this);
+
+ return *this;
}