[Top][All Lists]
[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);
+ }
+ }
+
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libcvd-members] gvars3 gvars3/GUI_readline.h src/GUI_readline.cc,
Edward Rosten <=