o["Passed Pawn Extension (non-PV nodes)"] = Option(0, 0, 2);
o["Pawn Endgame Extension (PV nodes)"] = Option(2, 0, 2);
o["Pawn Endgame Extension (non-PV nodes)"] = Option(2, 0, 2);
- o["Full Depth Moves (PV nodes)"] = Option(10, 1, 100);
- o["Full Depth Moves (non-PV nodes)"] = Option(3, 1, 100);
o["Threat Depth"] = Option(5, 0, 100);
o["Randomness"] = Option(0, 0, 10);
o["Minimum Split Depth"] = Option(4, 4, 7);
o["Maximum Number of Threads per Split Point"] = Option(5, 4, 8);
- o["Threads"] = Option(1, 1, THREAD_MAX);
- o["Hash"] = Option(32, 4, 2048);
+ o["Threads"] = Option(1, 1, MAX_THREADS);
+ o["Hash"] = Option(32, 4, 8192);
o["Clear Hash"] = Option(false, BUTTON);
o["New Game"] = Option(false, BUTTON);
o["Ponder"] = Option(true);
else if (v == "false")
v = "0";
- if (options.find(name) != options.end())
- options[name].currentValue = v;
- else
+ if (options.find(name) == options.end())
+ {
std::cout << "No such option: " << name << std::endl;
+ return;
+ }
+
+ // Normally it's up to the GUI to check for option's limits,
+ // but we could receive the new value directly from the user
+ // by teminal window. So let's check the bounds anyway.
+ Option& opt = options[name];
+
+ if (opt.type == CHECK && v != "0" && v != "1")
+ return;
+
+ else if (opt.type == SPIN)
+ {
+ int val = atoi(v.c_str());
+ if (val < opt.minValue || val > opt.maxValue)
+ return;
+ }
+
+ opt.currentValue = v;
}