libcvd-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libcvd-members] gvars3 gvars3/GUI_readline.h src/GUI_readline.cc


From: Edward Rosten
Subject: [libcvd-members] gvars3 gvars3/GUI_readline.h src/GUI_readline.cc
Date: Fri, 08 Jun 2007 22:33:03 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    gvars3
Changes by:     Edward Rosten <edrosten>        07/06/08 22:33:03

Modified files:
        gvars3         : GUI_readline.h 
        src            : GUI_readline.cc 

Log message:
        Single threaded version of readline.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/GUI_readline.h?cvsroot=libcvd&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/GUI_readline.cc?cvsroot=libcvd&r1=1.4&r2=1.5

Patches:
Index: gvars3/GUI_readline.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/GUI_readline.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- gvars3/GUI_readline.h       22 Nov 2005 18:33:27 -0000      1.2
+++ gvars3/GUI_readline.h       8 Jun 2007 22:33:02 -0000       1.3
@@ -41,5 +41,19 @@
                        bool      none;
                        static  void* proc(void*);
        };
+
+
+       class readline_in_current_thread
+       {
+               public:
+                       void poll();
+                       readline_in_current_thread(const std::string&);
+                       ~readline_in_current_thread();
+               private:
+                       static void lineread(char*);    
+                       static std::string quit_callback;
+
+
+       };
 };
 #endif

Index: src/GUI_readline.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/GUI_readline.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/GUI_readline.cc 31 May 2006 10:40:19 -0000      1.4
+++ src/GUI_readline.cc 8 Jun 2007 22:33:02 -0000       1.5
@@ -23,6 +23,7 @@
 #include "gvars3/GUI_readline.h"
 
 #include <pthread.h>
+#include <poll.h>
 #include <readline/readline.h>
 #include <readline/history.h>
 
@@ -102,5 +103,47 @@
                }
        }
 
+
+       std::string readline_in_current_thread::quit_callback;
+
+       readline_in_current_thread::~readline_in_current_thread()
+       {
+               rl_deprep_terminal();
+       }
+
+       readline_in_current_thread::readline_in_current_thread(const string& s)
+       {
+               quit_callback = s;
+               GUI.SetupReadlineCompletion();
+               rl_event_hook = rlhook;
+               rl_set_keyboard_input_timeout(0);
+               rl_callback_handler_install("> ", lineread);
+       }
+
+       void readline_in_current_thread::poll()
+       {
+               struct pollfd p;
+
+               p.fd = 0;
+               p.events=POLLIN | POLLHUP;
+
+               if(::poll(&p, 1, 0) > 0)
+                       rl_callback_read_char();
+       }
+
+       void readline_in_current_thread::lineread(char* line)
+       {
+               if(line == NULL)
+               {
+                       rl_deprep_terminal();
+                       GUI.ParseLine(quit_callback);
+               }
+               else
+               {
+                       GUI.ParseLine(line);
+                       add_history(line);
+               }
+       }
+
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]