diff options
author | Tim Shen <timshen91@gmail.com> | 2018-05-30 14:54:22 +0000 |
---|---|---|
committer | Tim Shen <timshen91@gmail.com> | 2018-05-30 14:54:22 +0000 |
commit | 761abc05aa7bbbb4379606ffffa75f552be9d164 (patch) | |
tree | ef90387e3b7f9ad7b7a5159dce7397c10c74e771 /lldb | |
parent | 6b23fb764ecc6d355408c4974019a8b43efc220e (diff) | |
download | bcm5719-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.h | 12 | ||||
-rw-r--r-- | lldb/source/Host/common/Editline.cpp | 8 |
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; |