-#include "ucioption.h"
-
-
-////
-//// Variables
-////
-
-bool Chess960 = false;
-
-
-////
-//// Local definitions
-////
-
-namespace {
-
- ///
- /// Types
- ///
-
- enum OptionType { SPIN, COMBO, CHECK, STRING, BUTTON };
-
- typedef std::vector<std::string> ComboValues;
-
- struct Option {
-
- std::string name, defaultValue, currentValue;
- OptionType type;
- int minValue, maxValue;
- ComboValues comboValues;
-
- Option(const char* name, const char* defaultValue, OptionType = STRING);
- Option(const char* name, bool defaultValue, OptionType = CHECK);
- Option(const char* name, int defaultValue, int minValue, int maxValue);
- };
-
- typedef std::vector<Option> Options;
-
- ///
- /// Constants
- ///
-
- // load_defaults populates the options vector with the hard
- // coded names and default values.
- void load_defaults(Options& o) {
-
- o.push_back(Option("Use Search Log", false));
- o.push_back(Option("Search Log Filename", "SearchLog.txt"));
- o.push_back(Option("Book File", "book.bin"));
- o.push_back(Option("Mobility (Middle Game)", 100, 0, 200));
- o.push_back(Option("Mobility (Endgame)", 100, 0, 200));
- o.push_back(Option("Pawn Structure (Middle Game)", 100, 0, 200));
- o.push_back(Option("Pawn Structure (Endgame)", 100, 0, 200));
- o.push_back(Option("Passed Pawns (Middle Game)", 100, 0, 200));
- o.push_back(Option("Passed Pawns (Endgame)", 100, 0, 200));
- o.push_back(Option("Aggressiveness", 100, 0, 200));
- o.push_back(Option("Cowardice", 100, 0, 200));
- o.push_back(Option("King Safety Curve", "Quadratic", COMBO));
-
- o.back().comboValues.push_back("Quadratic");
- o.back().comboValues.push_back("Linear"); /*, "From File"*/
-
- o.push_back(Option("King Safety Coefficient", 40, 1, 100));
- o.push_back(Option("King Safety X Intercept", 0, 0, 20));
- o.push_back(Option("King Safety Max Slope", 30, 10, 100));
- o.push_back(Option("King Safety Max Value", 500, 100, 1000));
- o.push_back(Option("Queen Contact Check Bonus", 4, 0, 8));
- o.push_back(Option("Rook Contact Check Bonus", 2, 0, 4));
- o.push_back(Option("Queen Check Bonus", 2, 0, 4));
- o.push_back(Option("Rook Check Bonus", 1, 0, 4));
- o.push_back(Option("Bishop Check Bonus", 1, 0, 4));
- o.push_back(Option("Knight Check Bonus", 1, 0, 4));
- o.push_back(Option("Discovered Check Bonus", 3, 0, 8));
- o.push_back(Option("Mate Threat Bonus", 3, 0, 8));
- o.push_back(Option("Check Extension (PV nodes)", 2, 0, 2));
- o.push_back(Option("Check Extension (non-PV nodes)", 1, 0, 2));
- o.push_back(Option("Single Reply Extension (PV nodes)", 2, 0, 2));
- o.push_back(Option("Single Reply Extension (non-PV nodes)", 2, 0, 2));
- o.push_back(Option("Mate Threat Extension (PV nodes)", 0, 0, 2));
- o.push_back(Option("Mate Threat Extension (non-PV nodes)", 0, 0, 2));
- o.push_back(Option("Pawn Push to 7th Extension (PV nodes)", 1, 0, 2));
- o.push_back(Option("Pawn Push to 7th Extension (non-PV nodes)", 1, 0, 2));
- o.push_back(Option("Passed Pawn Extension (PV nodes)", 1, 0, 2));
- o.push_back(Option("Passed Pawn Extension (non-PV nodes)", 0, 0, 2));
- o.push_back(Option("Pawn Endgame Extension (PV nodes)", 2, 0, 2));
- o.push_back(Option("Pawn Endgame Extension (non-PV nodes)", 2, 0, 2));
- o.push_back(Option("Full Depth Moves (PV nodes)", 14, 1, 100));
- o.push_back(Option("Full Depth Moves (non-PV nodes)", 3, 1, 100));
- o.push_back(Option("Threat Depth", 5, 0, 100));
- o.push_back(Option("Selective Plies", 7, 0, 10));
- o.push_back(Option("Futility Pruning (Main Search)", true));
- o.push_back(Option("Futility Pruning (Quiescence Search)", true));
- o.push_back(Option("Futility Margin 0", 50, 0, 1000));
- o.push_back(Option("Futility Margin 1", 100, 0, 1000));
- o.push_back(Option("Futility Margin 2", 300, 0, 1000));
- o.push_back(Option("Maximum Razoring Depth", 3, 0, 4));
- o.push_back(Option("Razoring Margin", 300, 150, 600));
- o.push_back(Option("Randomness", 0, 0, 10));
- o.push_back(Option("Minimum Split Depth", 4, 4, 7));
- o.push_back(Option("Maximum Number of Threads per Split Point", 5, 4, 8));
- o.push_back(Option("Threads", 1, 1, 8));
- o.push_back(Option("Hash", 32, 4, 4096));
- o.push_back(Option("Clear Hash", false, BUTTON));
- o.push_back(Option("Ponder", true));
- o.push_back(Option("OwnBook", true));
- o.push_back(Option("MultiPV", 1, 1, 500));
- o.push_back(Option("UCI_ShowCurrLine", false));
- o.push_back(Option("UCI_Chess960", false));
- }