return false;\r
}\r
\r
+const char * uci_thread_option(uci_t * uci){\r
+ const char **thread_options_copy = thread_options;\r
+ const char *thread_option;\r
+ int i;\r
+ while((thread_option = *(thread_options_copy++))){\r
+ i=uci_get_option(uci,thread_option);\r
+ if(i>=0){\r
+ return Uci->option[i].name;\r
+ break;\r
+ }\r
+ }\r
+ return NULL;\r
+}\r
+\r
// uci_is_ok()\r
\r
static bool uci_is_ok(const uci_t * uci) {\r
do {\r
engine_get(uci->engine,string,StringSize);\r
event = uci_parse(uci,string);\r
- } while ((event & EVENT_UCI) == 0);\r
+ } while (!engine_eof(Engine) && (event & EVENT_UCI) == 0);\r
}\r
\r
// uci_close()\r
for (i = 0; i < uci->option_nb; i++) {\r
opt = &uci->option[i];\r
my_string_clear(&opt->name);\r
- my_string_clear(&opt->value);\r
+ my_string_clear(&opt->default_);\r
}\r
\r
uci->option_nb = 0;\r
do {\r
engine_get(uci->engine,string,StringSize);\r
event = uci_parse(uci,string);\r
- } while ((event & EVENT_READY) == 0);\r
+ } while (!engine_eof(Engine) && (event & EVENT_READY) == 0);\r
}\r
\r
// uci_send_stop()\r
do {\r
engine_get(uci->engine,string,StringSize);\r
event = uci_parse(uci,string);\r
- } while ((event & EVENT_STOP) == 0);\r
+ } while (!engine_eof(Engine) && (event & EVENT_STOP) == 0);\r
}\r
\r
// uci_send_ucinewgame()\r
\r
opt = &uci->option[i];\r
\r
- if (my_string_case_equal(opt->name,option) && !my_string_equal(opt->value,value)) {\r
+ if (my_string_case_equal(opt->name,option) && !my_string_equal(opt->default_,value)) {\r
engine_send(uci->engine,"setoption name %s value %s",opt->name,value);\r
- my_string_set(&opt->value,value);\r
+ my_string_set(&opt->default_,value);\r
break;\r
}\r
}\r
\r
void uci_set_option(uci_t * uci,\r
const char * name,\r
- const char * value,\r
+ const char * default_,\r
const char * type,\r
const char * max,\r
const char * min,\r
- const char * var){\r
- int i;\r
+ int var_nb,\r
+ const char * var[]){\r
+ int i,j;\r
for(i=0;i<Uci->option_nb;i++){\r
if(my_string_equal(Uci->option[i].name,name)){\r
break;\r
}\r
if(i<OptionNb){\r
my_string_set(&(Uci->option[i].name),name);\r
- my_string_set(&(Uci->option[i].value),value);\r
+ my_string_set(&(Uci->option[i].default_),default_);\r
my_string_set(&(Uci->option[i].type),type);\r
my_string_set(&(Uci->option[i].min),min);\r
my_string_set(&(Uci->option[i].max),max);\r
- my_string_set(&(Uci->option[i].var),var);\r
+ Uci->option[i].var_nb=var_nb;\r
+ for(j=0;j<var_nb;j++){\r
+ my_string_set(&(Uci->option[i].var[j]),var[j]);\r
+ }\r
if(i==Uci->option_nb){\r
Uci->option_nb++;\r
}\r
opt = &uci->option[uci->option_nb];\r
uci->option_nb++;\r
\r
+ opt->value=NULL;\r
+ my_string_set(&opt->value,"<empty>");\r
+ opt->mode=0;\r
+\r
opt->name = NULL;\r
my_string_set(&opt->name,"<empty>");\r
\r
- opt->value = NULL;\r
- my_string_set(&opt->value,"<empty>");\r
+ \r
+ opt->default_ = NULL;\r
+ my_string_set(&opt->default_,"<empty>");\r
\r
opt->max = NULL;\r
my_string_set(&opt->max,"<empty>");\r
opt->type = NULL;\r
my_string_set(&opt->type,"<empty>");\r
\r
- opt->var = NULL;\r
- my_string_set(&opt->var,"<empty>");\r
-\r
+ opt->var_nb=0;\r
+ \r
parse_open(parse,string);\r
parse_add_keyword(parse,"default");\r
parse_add_keyword(parse,"max");\r
// loop\r
\r
while (parse_get_word(parse,option,StringSize)) {\r
-\r
parse_get_string(parse,argument,StringSize);\r
if (UseDebug) my_log("POLYGLOT COMMAND \"%s\" OPTION \"%s\" ARGUMENT \"%s\"\n",command,option,argument);\r
\r
// ASSERT(!my_string_empty(argument)); // HACK for Pepito\r
\r
if (!my_string_empty(argument)) {\r
+ my_string_set(&opt->default_,argument);\r
my_string_set(&opt->value,argument);\r
}\r
\r
} else if (my_string_equal(option,"var")) {\r
\r
ASSERT(!my_string_empty(argument));\r
- my_string_set(&opt->var,argument);\r
+ my_string_set(&opt->var[opt->var_nb++],argument);\r
+ if(opt->var_nb==VarNb) break;\r
\r
} else {\r
\r
\r
parse_close(parse);\r
\r
- if (UseDebug) my_log("POLYGLOT option name \"%s\" value \"%s\"\n",opt->name,opt->value);\r
+ if (UseDebug) my_log("POLYGLOT option name \"%s\" default \"%s\"\n",opt->name,opt->default_);\r
}\r
\r
// parse_score()\r