]> git.sesse.net Git - stockfish/commitdiff
Cleanup Bioskey()
authorMarco Costalba <mcostalba@gmail.com>
Mon, 15 Nov 2010 12:49:13 +0000 (13:49 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 15 Nov 2010 17:58:00 +0000 (18:58 +0100)
And rename in dataAvailable()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/misc.cpp
src/misc.h
src/search.cpp

index 9a9d0dda4824fc0b5f6a5898ef36a53eaa525c30..ed6f8f47abe60a195ae30043c193462f2298a00a 100644 (file)
@@ -218,20 +218,18 @@ int cpu_count() {
 #endif
 
 
-/*
-  From Beowulf, from Olithink
-*/
+/// Check for console input. Original code from Beowulf and Olithink
+
 #ifndef _WIN32
-/* Non-windows version */
-int Bioskey()
+
+int data_available()
 {
-  fd_set          readfds;
+  fd_set readfds;
   struct timeval  timeout;
 
   FD_ZERO(&readfds);
   FD_SET(fileno(stdin), &readfds);
-  /* Set to timeout immediately */
-  timeout.tv_sec = 0;
+  timeout.tv_sec = 0; // Set to timeout immediately
   timeout.tv_usec = 0;
   select(16, &readfds, 0, 0, &timeout);
 
@@ -239,59 +237,49 @@ int Bioskey()
 }
 
 #else
-/* Windows-version */
-#include <windows.h>
-#include <conio.h>
-int Bioskey()
+
+int data_available()
 {
-    static int      init = 0,
-                    pipe;
-    static HANDLE   inh;
-    DWORD           dw;
-    /* If we're running under XBoard then we can't use _kbhit() as the input
-     * commands are sent to us directly over the internal pipe */
-
-#if defined(FILE_CNT)
-    if (stdin->_cnt > 0)
-        return stdin->_cnt;
-#endif
-    if (!init) {
-        init = 1;
+    static HANDLE inh = NULL;
+    static bool usePipe;
+    INPUT_RECORD rec[256];
+    DWORD dw, recCnt;
+
+    if (!inh)
+    {
         inh = GetStdHandle(STD_INPUT_HANDLE);
-        pipe = !GetConsoleMode(inh, &dw);
-        if (!pipe) {
+        usePipe = !GetConsoleMode(inh, &dw);
+        if (!usePipe)
+        {
             SetConsoleMode(inh, dw & ~(ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT));
             FlushConsoleInputBuffer(inh);
         }
     }
-    if (pipe) {
-        if (!PeekNamedPipe(inh, NULL, 0, NULL, &dw, NULL))
-            return 1;
-        return dw;
-    } else {
-        // Count the number of unread input records, including keyboard,
-        // mouse, and window-resizing input records.
-        GetNumberOfConsoleInputEvents(inh, &dw);
-        if (dw <= 0)
-            return 0;
-
-        // Read data from console without removing it from the buffer
-        INPUT_RECORD rec[256];
-        DWORD recCnt;
-        if (!PeekConsoleInput(inh, rec, Min(dw, 256), &recCnt))
-            return 0;
-
-        // Search for at least one keyboard event
-        for (DWORD i = 0; i < recCnt; i++)
-            if (rec[i].EventType == KEY_EVENT)
-                return 1;
 
+    // If we're running under XBoard then we can't use PeekConsoleInput() as
+    // the input commands are sent to us directly over the internal pipe.
+    if (usePipe)
+        return PeekNamedPipe(inh, NULL, 0, NULL, &dw, NULL) ? dw : 1;
+
+    // Count the number of unread input records, including keyboard,
+    // mouse, and window-resizing input records.
+    GetNumberOfConsoleInputEvents(inh, &dw);
+
+    // Read data from console without removing it from the buffer
+    if (dw <= 0 || !PeekConsoleInput(inh, rec, Min(dw, 256), &recCnt))
         return 0;
-    }
+
+    // Search for at least one keyboard event
+    for (DWORD i = 0; i < recCnt; i++)
+        if (rec[i].EventType == KEY_EVENT)
+            return 1;
+
+    return 0;
 }
 
 #endif
 
+
 /// prefetch() preloads the given address in L1/L2 cache. This is a non
 /// blocking function and do not stalls the CPU waiting for data to be
 /// loaded from RAM, that can be very slow.
index 6fa86d734039297b4c3a4bddad787a2c9f69db9a..5f6166edf472be6faa646f3bf3c975c37fefbcb9 100644 (file)
@@ -47,7 +47,7 @@
 extern const std::string engine_name();
 extern int get_system_time();
 extern int cpu_count();
-extern int Bioskey();
+extern int data_available();
 extern void prefetch(char* addr);
 extern void prefetchPawn(Key, int);
 
index 1a2b45d7eb92053e5f0cd55208832775c475ed44..997732131408d314efbb913b3ed87f838e6f9a87 100644 (file)
@@ -1936,7 +1936,7 @@ split_point_start: // At split points actual search starts from here
     int t = current_search_time();
 
     //  Poll for input
-    if (Bioskey())
+    if (data_available())
     {
         // We are line oriented, don't read single chars
         std::string command;