summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
authorTim Shen <timshen91@gmail.com>2018-05-30 14:54:22 +0000
committerTim Shen <timshen91@gmail.com>2018-05-30 14:54:22 +0000
commit761abc05aa7bbbb4379606ffffa75f552be9d164 (patch)
treeef90387e3b7f9ad7b7a5159dce7397c10c74e771 /lldb
parent6b23fb764ecc6d355408c4974019a8b43efc220e (diff)
downloadbcm5719-llvm-761abc05aa7bbbb4379606ffffa75f552be9d164.tar.gz
bcm5719-llvm-761abc05aa7bbbb4379606ffffa75f552be9d164.zip
[LLDB] Re-apply r303907 that's reverted by mistake
llvm-svn: 333552
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Host/Editline.h12
-rw-r--r--lldb/source/Host/common/Editline.cpp8
2 files changed, 13 insertions, 7 deletions
diff --git a/lldb/include/lldb/Host/Editline.h b/lldb/include/lldb/Host/Editline.h
index 917e406224d..f06fc06f9ca 100644
--- a/lldb/include/lldb/Host/Editline.h
+++ b/lldb/include/lldb/Host/Editline.h
@@ -81,8 +81,14 @@ using EditLineStringStreamType = std::stringstream;
using EditLineCharType = char;
#endif
+#ifdef EL_CLIENTDATA /* editline with wide support + wide char read function */
+using EditLineGetCharType = wchar_t;
+#else
+using EditLineGetCharType = char;
+#endif
+
typedef int (*EditlineGetCharCallbackType)(::EditLine *editline,
- EditLineCharType *c);
+ EditLineGetCharType *c);
typedef unsigned char (*EditlineCommandCallbackType)(::EditLine *editline,
int ch);
typedef const char *(*EditlinePromptCallbackType)(::EditLine *editline);
@@ -269,7 +275,7 @@ private:
/// Character reading implementation for EditLine that supports our multi-line
/// editing trickery.
- int GetCharacter(EditLineCharType *c);
+ int GetCharacter(EditLineGetCharType *c);
/// Prompt implementation for EditLine.
const char *Prompt();
@@ -322,7 +328,7 @@ private:
/// single or multi-line editing.
void ConfigureEditor(bool multiline);
- bool CompleteCharacter(char ch, EditLineCharType &out);
+ bool CompleteCharacter(char ch, EditLineGetCharType &out);
private:
#if LLDB_EDITLINE_USE_WCHAR
diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp
index 7ae3f19944f..329c0c1f3b7 100644
--- a/lldb/source/Host/common/Editline.cpp
+++ b/lldb/source/Host/common/Editline.cpp
@@ -467,7 +467,7 @@ unsigned char Editline::RecallHistory(bool earlier) {
return CC_NEWLINE;
}
-int Editline::GetCharacter(EditLineCharType *c) {
+int Editline::GetCharacter(EditLineGetCharType *c) {
const LineInfoW *info = el_wline(m_editline);
// Paint a faint version of the desired prompt over the version libedit draws
@@ -961,7 +961,7 @@ void Editline::ConfigureEditor(bool multiline) {
}));
el_wset(m_editline, EL_GETCFN, (EditlineGetCharCallbackType)([](
- EditLine *editline, EditLineCharType *c) {
+ EditLine *editline, EditLineGetCharType *c) {
return Editline::InstanceFor(editline)->GetCharacter(c);
}));
@@ -1350,12 +1350,12 @@ void Editline::PrintAsync(Stream *stream, const char *s, size_t len) {
}
}
-bool Editline::CompleteCharacter(char ch, EditLineCharType &out) {
+bool Editline::CompleteCharacter(char ch, EditLineGetCharType &out) {
#if !LLDB_EDITLINE_USE_WCHAR
if (ch == (char)EOF)
return false;
- out = ch;
+ out = (unsigned char)ch;
return true;
#else
std::codecvt_utf8<wchar_t> cvt;
OpenPOWER on IntegriCloud