X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=uci2uci.cpp;h=edadeb4fac90035b4309b26b3996fdcbd6ac4160;hb=acb140befabd8b0f1a8606470013b420d05b4fb7;hp=813222460ad0e94e1394c2718903bd060167a755;hpb=64f72f31685ea1dff12b19b22cfaf7a53ccc079f;p=polyglot.git diff --git a/uci2uci.cpp b/uci2uci.cpp index 8132224..edadeb4 100644 --- a/uci2uci.cpp +++ b/uci2uci.cpp @@ -6,7 +6,6 @@ #include #include "util.h" -#include "adapter.h" #include "board.h" #include "engine.h" #include "fen.h" @@ -30,11 +29,9 @@ static board_t UCIboard[1]; static bool Init=true; static int SavedMove=MoveNone; -// defines +// prototypes -#ifdef _WIN32 -#define strcasecmp lstrcmpi -#endif +static void send_uci_options(); // parse_position() @@ -118,43 +115,57 @@ static void send_book_move(int move){ gui_send(GUI,"bestmove %s",move_string); } +// format_uci_option_line() + +static void format_uci_option_line(char * option_line,option_t *opt){ + char option_string[StringSize]; + int j; + strcpy(option_line,""); + strcat(option_line,"option name"); + if(opt->mode&PG){ + strcat(option_line," Polyglot"); + } + sprintf(option_string," %s",opt->name); + strcat(option_line,option_string); + sprintf(option_string," type %s",opt->type); + strcat(option_line,option_string); + if(strcmp(opt->type,"button")){ + sprintf(option_string," default %s",opt->default_); + strcat(option_line,option_string); + } + if(!strcmp(opt->type,"spin")){ + sprintf(option_string," min %s",opt->min); + strcat(option_line,option_string); + } + if(!strcmp(opt->type,"spin")){ + sprintf(option_string," max %s",opt->max); + strcat(option_line,option_string); + } + for(j=0;jvar_nb;j++){ + sprintf(option_string," var %s",opt->var[j]); + strcat(option_line,option_string); + } +} + // send_uci_options() -void send_uci_options() { +static void send_uci_options() { int i; + option_t *p=Option; char option_line[StringSize]=""; - char option_string[StringSize]=""; gui_send(GUI,"id name %s", Uci->name); gui_send(GUI,"id author %s", Uci->author); for(i=0;ioption_nb;i++){ - strcat(option_line,"option"); - if(strcmp(Uci->option[i].name,"")){ - sprintf(option_string," name %s",Uci->option[i].name); - strcat(option_line,option_string); - } - if(strcmp(Uci->option[i].type,"")){ - sprintf(option_string," type %s",Uci->option[i].type); - strcat(option_line,option_string); - } - if(strcmp(Uci->option[i].value,"")){ - sprintf(option_string," default %s",Uci->option[i].value); - strcat(option_line,option_string); - } - if(strcmp(Uci->option[i].min,"")){ - sprintf(option_string," min %s",Uci->option[i].min); - strcat(option_line,option_string); - } - if(strcmp(Uci->option[i].max,"")){ - sprintf(option_string," max %s",Uci->option[i].max); - strcat(option_line,option_string); - } - if(strcmp(Uci->option[i].var,"")){ - sprintf(option_string," var %s",Uci->option[i].var); - strcat(option_line,option_string); - } - gui_send(GUI,"%s",option_line); - strcpy(option_line,""); + format_uci_option_line(option_line,Uci->option+i); + gui_send(GUI,"%s",option_line); } + while(p->name){ + if(p->mode &UCI){ + format_uci_option_line(option_line,p); + gui_send(GUI,"%s",option_line); + } + p++; + } gui_send(GUI,"uciok"); } @@ -163,48 +174,30 @@ void send_uci_options() { static void parse_setoption(const char string[]) { - parse_t parse[1]; - char option[StringSize]; - char name[StringSize]; - char value[StringSize]; + char *name; + char *pg_name; + char *value; char * string_copy; string_copy=my_strdup(string); - parse_open(parse,string_copy); - parse_add_keyword(parse,"setoption"); - parse_add_keyword(parse,"name"); - parse_add_keyword(parse,"value"); - parse_get_word(parse,option,StringSize); - ASSERT(my_string_equal(option,"setoption")); - if(parse_get_word(parse,option,StringSize)){ - if(my_string_equal(option,"name")){ - parse_get_string(parse,name,StringSize); - if(parse_get_word(parse,option,StringSize)){ - if(my_string_equal(option,"value")){ - parse_get_string(parse,value,StringSize); - if(my_string_case_equal(name,PolyglotBookFile)){ - my_log("POLYGLOT *** SETTING BOOK ***\n"); - my_log("POLYGLOT BOOK \"%s\"\n",value); - book_close(); - book_clear(); - book_open(value); - if(!book_is_open()){ - my_log("POLYGLOT Unable to open book \"%s\"\n",value); - } - }else{ - engine_send(Engine,"%s",string); - } - } - } + if(match(string_copy,"setoption name * value *")){ + name=Star[0]; + value=Star[1]; + if(match(name, "Polyglot *")){ + pg_name=Star[0]; + polyglot_set_option(pg_name,value); + }else{ + engine_send(Engine,"%s",string); } + }else{ + engine_send(Engine,"%s",string); } - parse_close(parse); free(string_copy); } -// uci_gui_step() +// uci2uci_gui_step() -void uci_gui_step(char string[]) { +void uci2uci_gui_step(char string[]) { int move; if(false){ }else if(match(string,"uci")){ @@ -247,7 +240,7 @@ void uci_gui_step(char string[]) { engine_send(Engine,"%s",string); } -void uci_engine_step(char string[]) { +void uci2uci_engine_step(char string[]) { gui_send(GUI,string); }