aboutsummaryrefslogtreecommitdiff
path: root/include/lldb/Host/Editline.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/lldb/Host/Editline.h')
-rw-r--r--include/lldb/Host/Editline.h51
1 files changed, 25 insertions, 26 deletions
diff --git a/include/lldb/Host/Editline.h b/include/lldb/Host/Editline.h
index b92de1052f29..5cba8465d654 100644
--- a/include/lldb/Host/Editline.h
+++ b/include/lldb/Host/Editline.h
@@ -23,9 +23,11 @@
#include <string>
#include <vector>
+#include "lldb/Core/ConnectionFileDescriptor.h"
#include "lldb/Host/Condition.h"
#include "lldb/Host/FileSpec.h"
#include "lldb/Host/Mutex.h"
+#include "lldb/Host/Predicate.h"
namespace lldb_private {
@@ -33,6 +35,10 @@ namespace lldb_private {
/// @class Editline Editline.h "lldb/Host/Editline.h"
/// @brief A class that encapsulates editline functionality.
//----------------------------------------------------------------------
+class EditlineHistory;
+
+typedef std::shared_ptr<EditlineHistory> EditlineHistorySP;
+
class Editline
{
public:
@@ -58,6 +64,7 @@ public:
Editline(const char *prog, // Used for the history file and for editrc program name
const char *prompt,
+ bool configure_for_multiline,
FILE *fin,
FILE *fout,
FILE *ferr);
@@ -65,10 +72,13 @@ public:
~Editline();
Error
- GetLine (std::string &line);
+ GetLine (std::string &line,
+ bool &interrupted);
Error
- GetLines (const std::string &end_line, StringList &lines);
+ GetLines (const std::string &end_line,
+ StringList &lines,
+ bool &interrupted);
bool
LoadHistory ();
@@ -97,7 +107,7 @@ public:
void
Refresh();
- void
+ bool
Interrupt ();
void
@@ -118,11 +128,6 @@ public:
size_t
Push (const char *bytes, size_t len);
-
- // Cache bytes and use them for input without using a FILE. Calling this function
- // will set the getc callback in the editline
- size_t
- SetInputBuffer (const char *c, size_t len);
static int
GetCharFromInputFileCallback (::EditLine *e, char *c);
@@ -135,21 +140,21 @@ public:
void
SetPrompt (const char *p);
-
+
+ void
+ ShowLineNumbers (bool enable, uint32_t line_offset)
+ {
+ m_prompt_with_line_numbers = enable;
+ m_line_offset = line_offset;
+ }
+
private:
Error
PrivateGetLine(std::string &line);
- FileSpec
- GetHistoryFile();
-
unsigned char
HandleCompletion (int ch);
-
- int
- GetChar (char *c);
-
static unsigned char
CallbackEditPrevLine (::EditLine *e, int ch);
@@ -169,9 +174,6 @@ private:
static FILE *
GetFilePointer (::EditLine *e, int fd);
- static int
- GetCharInputBufferCallback (::EditLine *e, char *c);
-
enum class Command
{
None = 0,
@@ -179,22 +181,19 @@ private:
EditNextLine,
};
::EditLine *m_editline;
- ::History *m_history;
- ::HistEvent m_history_event;
- std::string m_program;
+ EditlineHistorySP m_history_sp;
std::string m_prompt;
std::string m_lines_prompt;
- std::string m_getc_buffer;
- Mutex m_getc_mutex;
- Condition m_getc_cond;
+ lldb_private::Predicate<bool> m_getting_char;
CompleteCallbackType m_completion_callback;
void *m_completion_callback_baton;
-// Mutex m_gets_mutex; // Make sure only one thread
LineCompletedCallbackType m_line_complete_callback;
void *m_line_complete_callback_baton;
Command m_lines_command;
+ uint32_t m_line_offset;
uint32_t m_lines_curr_line;
uint32_t m_lines_max_line;
+ ConnectionFileDescriptor m_file;
bool m_prompt_with_line_numbers;
bool m_getting_line;
bool m_got_eof; // Set to true when we detect EOF