version 1.4.39b
[polyglot.git] / option.c
index 8d067b8..44d5c83 100644 (file)
--- a/option.c
+++ b/option.c
@@ -25,11 +25,14 @@ option_t DefaultOptions[] = {
 \r
    // options\r
 \r
+    { "SaveSettingsOnExit","check","0","0",      "true"     , NULL,0,NNB,  PG|XBOARD}, \r
+    { "SaveFile",         "string","0","0",     "<empty>"   , NULL,0,NNB,  PG|XBOARD},\r
+    \r
     { "EngineName",       "string","0","0",     "<empty>"   , NULL,0,NNB,  PG}, \r
     { "EngineDir",        "string","0","0",     "."         , NULL,0,NNB,  PG}, \r
     { "EngineCommand",    "string","0","0",     "<empty>"   , NULL,0,NNB,  PG}, \r
 \r
-    { "Log",              "check","0","0",     "false"      , NULL,0,NNB,  PG|XBOARD|UCI}, \r
+    { "Log",              "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD|UCI}, \r
     { "LogFile",          "string","0","0",     "polyglot.log", NULL,0,NNB,  PG|XBOARD|UCI}, \r
 \r
     { "UCI",              "check","0","0",      "false"     , NULL,0,NNB,  PG}, \r
@@ -37,26 +40,28 @@ option_t DefaultOptions[] = {
     { "UseNice",          "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD|UCI}, \r
     { "NiceValue",        "spin", "0","20",     "5"         , NULL,0,NNB,  PG|XBOARD|UCI}, \r
 \r
-    { "Chess960",         "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
+    { "Chess960",         "check","0","0",      "false"     , NULL,0,NNB,  PG}, \r
 \r
     { "Resign",           "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
     { "ResignMoves",      "spin","0","10000",    "3"        , NULL,0,NNB,  PG|XBOARD}, \r
     { "ResignScore",      "spin","0","10000",   "600"       , NULL,0,NNB,  PG|XBOARD}, \r
 \r
-    { "MateScore",        "spin","0","1000000", "10000"     , NULL,0,NNB,  PG|XBOARD}, \r
+    { "MateScore",        "spin","0","100000",  "10000"     , NULL,0,NNB,  PG|XBOARD}, \r
 \r
     { "Book",             "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD|UCI}, \r
     { "BookFile",         "string","0","0",     "book.bin"  , NULL,0,NNB,  PG|XBOARD|UCI}, \r
 \r
     { "BookRandom",       "check","0","0",      "true"      , NULL,0,NNB,  PG|XBOARD|UCI}, \r
+    { "BookDepth",        "spin","0","256",     "256"       , NULL,0,NNB,  PG|XBOARD}, \r
+    { "BookTreshold",     "spin","0","1000",    "5"         , NULL,0,NNB,  PG|XBOARD|UCI}, \r
     { "BookLearn",        "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
 \r
     { "KibitzMove",       "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
     { "KibitzPV",         "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
 \r
     { "KibitzCommand",    "string","0","0",     "tellall"   , NULL,0,NNB,  PG|XBOARD}, \r
-    { "KibitzDelay",      "spin","0","10000",  "5"         , NULL,0,NNB,  PG|XBOARD}, \r
-    { "KibitzInterval",   "spin","0","10000",  "0"         , NULL,0,NNB,  PG|XBOARD}, \r
+    { "KibitzDelay",      "spin","0","1000",    "5"         , NULL,0,NNB,  PG|XBOARD}, \r
+    { "KibitzInterval",   "spin","0","1000",    "0"         , NULL,0,NNB,  PG|XBOARD}, \r
 \r
     { "ShowPonder",       "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
     { "ScoreWhite",       "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
@@ -66,11 +71,12 @@ option_t DefaultOptions[] = {
     { "UCIVersion",       "spin","1","2",       "2"         , NULL,0,NNB,  PG|XBOARD}, \r
     { "CanPonder",        "check","1","2",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
     { "SyncStop",         "check","1","2",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
-    { "Affinity",        "spin","-1","32",     "-1"        , NULL,0,NNB,  PG}, \r
-    { "RepeatPV",        "check","0","0",      "true"     , NULL,0,NNB,  PG|XBOARD},\r
+    { "Affinity",         "spin","-1","32",     "-1"        , NULL,0,NNB,  PG}, \r
+    { "RepeatPV",         "check","0","0",      "true"      , NULL,0,NNB,  PG|XBOARD},\r
     { "PromoteWorkAround","check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
 \r
-    { "WbWorkArounds",    "check","0","0",      "true"     , NULL,0,NNB,  PG|XBOARD}, \r
+    { "WbWorkArounds",    "check","0","0",      "true"      , NULL,0,NNB,  PG|XBOARD}, \r
+    { "WbWorkArounds2",   "check","0","0",      "false"     , NULL,0,NNB,  PG|XBOARD}, \r
     { NULL,               NULL,"0","0",         NULL        , NULL,0,NNB,  0},\r
 \r
 };\r
@@ -120,16 +126,16 @@ void option_init(option_list_t *option){
 // option_insert()\r
 \r
 void option_insert(option_list_t *option, option_t *new_option){\r
+    int i;\r
+    option_t *opt;\r
     ASSERT(option!=NULL);\r
     ASSERT(new_option!=NULL);\r
     ASSERT(new_option->name!=NULL);\r
-    option_t *opt;\r
     opt=option_find(option,new_option->name);\r
     if(!opt){\r
         opt=&option->options[option->option_nb];\r
         option->option_nb++;\r
     }\r
-    int i;\r
     if(option->option_nb>=OptionNb){\r
         my_fatal("option_insert(): option list overflow\n");\r
     }\r
@@ -180,7 +186,7 @@ bool option_set_default(option_list_t *option,
    opt = option_find(option,name);\r
    if (opt == NULL) return FALSE;\r
 \r
-   opt->default_=my_strdup(value);\r
+   my_string_set(&opt->default_,value);\r
 \r
    if (UseDebug) my_log("POLYGLOT OPTION DEFAULT SET \"%s\" -> \"%s\"\n",opt->name,opt->default_);\r
 \r
@@ -290,10 +296,14 @@ option_t * option_find(option_list_t *option, const char name[]) {
    return NULL;\r
 }\r
 \r
+// option_start_iter()\r
+\r
 void option_start_iter(option_list_t *option){\r
     option->iter=0;\r
 }\r
 \r
+// option_next()\r
+\r
 option_t * option_next(option_list_t *option){\r
     ASSERT(option->iter<=option->option_nb);\r
     if(option->iter==option->option_nb){\r
@@ -318,6 +328,8 @@ void option_free(option_t *option){
       option->mode=0;\r
 }\r
 \r
+// option_clear()\r
+\r
 void option_clear(option_list_t *option){\r
     int i;\r
     for (i = 0; i < option->option_nb; i++) {\r
@@ -326,5 +338,18 @@ void option_clear(option_list_t *option){
    option->option_nb=0;\r
 }\r
 \r
+// option_from_ini()\r
+\r
+void option_from_ini(option_list_t *option,\r
+                     ini_t *ini,\r
+                     const char *section){\r
+    ini_entry_t *entry;\r
+    ini_start_iter(ini);\r
+    while((entry=ini_next(ini))){\r
+        option_set(option,entry->name,entry->value);\r
+        option_set_default(option,entry->name,entry->value);\r
+    }\r
+}\r
+\r
 // end of option.cpp\r
 \r