1 | //===-- CommandObjectGUI.cpp ----------------------------------------------===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "CommandObjectGUI.h" |
10 | |
11 | #include "lldb/Core/IOHandlerCursesGUI.h" |
12 | #include "lldb/Host/Config.h" |
13 | #include "lldb/Interpreter/CommandInterpreter.h" |
14 | #include "lldb/Interpreter/CommandReturnObject.h" |
15 | |
16 | using namespace lldb; |
17 | using namespace lldb_private; |
18 | |
19 | // CommandObjectGUI |
20 | |
21 | CommandObjectGUI::CommandObjectGUI(CommandInterpreter &interpreter) |
22 | : CommandObjectParsed(interpreter, "gui", |
23 | "Switch into the curses based GUI mode.", "gui") {} |
24 | |
25 | CommandObjectGUI::~CommandObjectGUI() = default; |
26 | |
27 | void CommandObjectGUI::DoExecute(Args &args, CommandReturnObject &result) { |
28 | #if LLDB_ENABLE_CURSES |
29 | Debugger &debugger = GetDebugger(); |
30 | |
31 | File &input = debugger.GetInputFile(); |
32 | File &output = debugger.GetOutputFile(); |
33 | if (input.GetStream() && output.GetStream() && input.GetIsRealTerminal() && |
34 | input.GetIsInteractive()) { |
35 | IOHandlerSP io_handler_sp(new IOHandlerCursesGUI(debugger)); |
36 | if (io_handler_sp) |
37 | debugger.RunIOHandlerAsync(reader_sp: io_handler_sp); |
38 | result.SetStatus(eReturnStatusSuccessFinishResult); |
39 | } else { |
40 | result.AppendError(in_string: "the gui command requires an interactive terminal."); |
41 | } |
42 | #else |
43 | result.AppendError("lldb was not built with gui support"); |
44 | #endif |
45 | } |
46 |