Convert more stuff from #ifdef to dspwrappers: GetString.
authorYann Dirson <ydirson@free.fr>
Thu, 17 Oct 2013 20:46:54 +0000 (22:46 +0200)
committerYann Dirson <ydirson@free.fr>
Sat, 19 Oct 2013 13:45:21 +0000 (15:45 +0200)
Thin function is the first non-void one and shows the limits of the
current macro set.  Let's consider this stuff to be temporary.

At least it finally allows to drop #include <curses.h> from commondsp.

gnushogi/commondsp.c
gnushogi/cursesdsp.c
gnushogi/cursesdsp.h
gnushogi/dspwrappers.c
gnushogi/dspwrappers.h
gnushogi/rawdsp.c
gnushogi/rawdsp.h

index 7987307..53efa2b 100644 (file)
@@ -42,7 +42,6 @@
 #include <sys/types.h>
 #include <sys/file.h>
 
-#include <curses.h>
 #include "gnushogi.h"
 
 char mvstr[4][6];
@@ -1641,23 +1640,12 @@ InputCommand(char *command)
         have_shown_prompt = false;
 #endif /* QUIETBACKGROUND */
 
-        if (command == NULL)
-        {
+        if (command == NULL) {
             if (NOT_CURSES)
-            {
-                s[0] = sx[0] = '\0';
+                s[0] = '\0';
 
-                while(!eof && !sx[0])
-                    eof = (fgets(sx, 80, stdin) == NULL);
-            }
-            else
-            {
-                fflush(stdout);
-                eof = (getstr(sx) == ERR);
-            }
-        }
-        else
-        {
+            eof = GetString(sx);
+        } else {
             strcpy(sx, command);
             done = true;
         }
index 0deb256..d71aa63 100644 (file)
@@ -181,6 +181,14 @@ Curses_doRequestInputString(const char* fmt, char* buffer)
 }
 
 
+int
+Curses_GetString(char* sx)
+{
+    fflush(stdout);
+    return (getstr(sx) == ERR);
+}
+
+
 void
 Curses_ShowNodeCnt(long NodeCnt)
 {
index 4f9fd68..7031bd4 100644 (file)
@@ -62,6 +62,7 @@ void Curses_ShowMessage(char *s);
 void Curses_AlwaysShowMessage(const char *format, ...);
 void Curses_Printf(const char *format, ...);
 void Curses_doRequestInputString(const char* fmt, char* buffer);
+int  Curses_GetString(char* sx);
 void Curses_ShowPatternCount(short side, short n);
 void Curses_ShowPostnValue(short sq);
 void Curses_ShowPostnValues(void);
index 382c438..ebe0f05 100644 (file)
@@ -126,3 +126,32 @@ void RequestInputString(char* buffer, unsigned bufsize)
     }
     doRequestInputString(fmt, buffer);
 }
+
+/*********/
+
+#define CASE_DSPFUNC_RAW(func,args) \
+  case DISPLAY_RAW:                 \
+  case DISPLAY_X:                   \
+    return (func args);             \
+    break
+
+#ifdef HAVE_LIBCURSES
+#define CASE_DSPFUNC_CURSES(func,args) \
+  case DISPLAY_CURSES:                 \
+    return (func args);                \
+    break;
+#else
+#define CASE_DSPFUNC_CURSES(func,args)
+#endif
+
+#define DISPLAY_INTFUNC(func,argsdecl,args)         \
+  int func argsdecl                                 \
+  {                                                 \
+    switch (display_type) {                         \
+      CASE_DSPFUNC_RAW(Raw_ ## func, args);         \
+      CASE_DSPFUNC_CURSES(Curses_ ## func, args);   \
+    }                                               \
+    assert(0);                                      \
+  }
+
+DISPLAY_INTFUNC(GetString, (char* sx), (sx))
index c1fe649..e563982 100644 (file)
@@ -60,6 +60,7 @@ extern void ShowMessage(char *s);
 extern void AlwaysShowMessage(const char *format, ...);
 extern void Printf(const char *format, ...);
 extern void RequestInputString(char* buffer, unsigned bufsize);
+extern int  GetString(char* sx);
 extern void ShowPatternCount(short side, short n);
 extern void ShowPostnValue(short sq);
 extern void ShowPostnValues(void);
index 328d80d..cbbfe52 100644 (file)
@@ -148,6 +148,18 @@ Raw_doRequestInputString(const char* fmt, char* buffer)
 }
 
 
+int
+Raw_GetString(char* sx)
+{
+    int eof = 0;
+    sx[0] = '\0';
+
+    while(!eof && !sx[0])
+        eof = (fgets(sx, 80, stdin) == NULL);
+    return eof;
+}
+
+
 void
 Raw_ShowNodeCnt(long NodeCnt)
 {
index 52915e4..758ee26 100644 (file)
@@ -62,6 +62,7 @@ void Raw_ShowMessage(char *s);
 void Raw_AlwaysShowMessage(const char *format, ...);
 void Raw_Printf(const char *format, ...);
 void Raw_doRequestInputString(const char* fmt, char* buffer);
+int  Raw_GetString(char* sx);
 void Raw_ShowPatternCount(short side, short n);
 void Raw_ShowPostnValue(short sq);
 void Raw_ShowPostnValues(void);