#include "lldb/Core/ValueObjectList.h"
#include "lldb/Host/Config.h"
#include "lldb/Utility/CompletionRequest.h"
-#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Flags.h"
#include "lldb/Utility/Predicate.h"
#include "lldb/Utility/Stream.h"
}
bool SetPrompt(const char *) = delete;
- virtual ConstString GetControlSequence(char ch) { return ConstString(); }
+ virtual llvm::StringRef GetControlSequence(char ch) { return {}; }
virtual const char *GetCommandPrefix() { return nullptr; }
return true;
}
- virtual ConstString IOHandlerGetControlSequence(char ch) {
- return ConstString();
- }
+ virtual llvm::StringRef IOHandlerGetControlSequence(char ch) { return {}; }
virtual const char *IOHandlerGetCommandPrefix() { return nullptr; }
// the last line is equal to "end_line" which is specified in the constructor.
class IOHandlerDelegateMultiline : public IOHandlerDelegate {
public:
- IOHandlerDelegateMultiline(const char *end_line,
+ IOHandlerDelegateMultiline(llvm::StringRef end_line,
Completion completion = Completion::None)
- : IOHandlerDelegate(completion),
- m_end_line((end_line && end_line[0]) ? end_line : "") {}
+ : IOHandlerDelegate(completion), m_end_line(end_line.str() + "\n") {}
~IOHandlerDelegateMultiline() override = default;
- ConstString IOHandlerGetControlSequence(char ch) override {
+ llvm::StringRef IOHandlerGetControlSequence(char ch) override {
if (ch == 'd')
- return ConstString(m_end_line + "\n");
- return ConstString();
+ return m_end_line;
+ return {};
}
bool IOHandlerIsInputComplete(IOHandler &io_handler,
StringList &lines) override {
// Determine whether the end of input signal has been entered
const size_t num_lines = lines.GetSize();
- if (num_lines > 0 && lines[num_lines - 1] == m_end_line) {
+ const llvm::StringRef end_line =
+ llvm::StringRef(m_end_line).drop_back(1); // Drop '\n'
+ if (num_lines > 0 && llvm::StringRef(lines[num_lines - 1]) == end_line) {
// Remove the terminal line from "lines" so it doesn't appear in the
// resulting input and return true to indicate we are done getting lines
lines.PopBack();
void TerminalSizeChanged() override;
- ConstString GetControlSequence(char ch) override {
+ llvm::StringRef GetControlSequence(char ch) override {
return m_delegate.IOHandlerGetControlSequence(ch);
}
m_stack[num_io_handlers - 2]->GetType() == second_top_type);
}
- ConstString GetTopIOHandlerControlSequence(char ch) {
- return ((m_top != nullptr) ? m_top->GetControlSequence(ch) : ConstString());
+ llvm::StringRef GetTopIOHandlerControlSequence(char ch) {
+ return ((m_top != nullptr) ? m_top->GetControlSequence(ch)
+ : llvm::StringRef());
}
const char *GetTopIOHandlerCommandPrefix() {