5 #define StringSize ((int)4096)
\r
19 #include "xboard2uci.h"
\r
20 #include "uci2uci.h"
\r
24 static void mainloop_init ();
\r
25 static void mainloop_wait_for_event ();
\r
26 static void mainloop_engine_step(char * string);
\r
27 static void mainloop_gui_step(char * string);
\r
33 static void mainloop_init(){
\r
34 if(!option_get_bool(Option,"UCI")){
\r
35 xboard2uci_init(); // the default
\r
39 // mainloop_engine_step()
\r
41 static void mainloop_engine_step(char * string){
\r
42 if(option_get_bool(Option,"UCI")){
\r
43 uci2uci_engine_step(string);
\r
45 xboard2uci_engine_step(string);
\r
49 // mainloop_gui_step()
\r
51 static void mainloop_gui_step(char * string){
\r
52 if(option_get_bool(Option,"UCI")){
\r
53 uci2uci_gui_step(string);
\r
54 }else if(my_string_equal(string,"uci")){ // mode auto detection
\r
55 my_log("POLYGLOT *** Switching to UCI mode ***\n");
\r
56 option_set(Option,"UCI","true");
\r
57 uci2uci_gui_step(string);
\r
59 xboard2uci_gui_step(string);
\r
66 char string[StringSize];
\r
67 my_log("POLYGLOT *** Mainloop started ***\n");
\r
69 while (!engine_eof(Engine)) {
\r
70 // process buffered lines
\r
72 if(gui_get_non_blocking(GUI,string)){
\r
73 mainloop_gui_step(string);
\r
74 }else if(!engine_eof(Engine) &&
\r
75 engine_get_non_blocking(Engine,string) ){
\r
76 mainloop_engine_step(string);
\r
81 mainloop_wait_for_event();
\r
83 my_log("POLYGLOT *** Mainloop has ended ***\n");
\r
84 // This should be handled better.
\r
85 engine_close(Engine);
\r
86 my_log("POLYGLOT Calling exit\n");
\r
94 // mainloop_wait_for_event()
\r
96 static void mainloop_wait_for_event(){
\r
98 pipex[0]=GUI->pipex;
\r
99 pipex[1]=Engine->pipex;
\r
101 pipex_wait_event(pipex);
\r