15 #include "xboard2uci.h"
20 static void mainloop_init ();
21 static void mainloop_wait_for_event ();
22 static void mainloop_engine_step(char * string);
23 static void mainloop_gui_step(char * string);
29 static void mainloop_init(){
30 if(!option_get_bool(Option,"UCI")){
31 xboard2uci_init(); // the default
35 // mainloop_engine_step()
37 static void mainloop_engine_step(char * string){
38 if(option_get_bool(Option,"UCI")){
39 uci2uci_engine_step(string);
41 xboard2uci_engine_step(string);
45 // mainloop_gui_step()
47 static void mainloop_gui_step(char * string){
48 if(option_get_bool(Option,"UCI")){
49 uci2uci_gui_step(string);
50 }else if(my_string_equal(string,"uci")){ // mode auto detection
51 my_log("POLYGLOT *** Switching to UCI mode ***\n");
52 option_set(Option,"UCI","true");
53 uci2uci_gui_step(string);
55 xboard2uci_gui_step(string);
62 char string[StringSize];
63 my_log("POLYGLOT *** Mainloop started ***\n");
65 while (!engine_eof(Engine)) {
66 // process buffered lines
68 if(gui_get_non_blocking(GUI,string)){
69 mainloop_gui_step(string);
70 }else if(!engine_eof(Engine) &&
71 engine_get_non_blocking(Engine,string) ){
72 mainloop_engine_step(string);
77 mainloop_wait_for_event();
79 my_log("POLYGLOT *** Mainloop has ended ***\n");
80 // This should be handled better.
82 my_log("POLYGLOT Calling exit\n");
90 // mainloop_wait_for_event()
92 static void mainloop_wait_for_event(){
95 pipex[1]=Engine->pipex;
97 pipex_wait_event(pipex);