1 //===-- SWIG Interface for SBCommandInterpreter -----------------*- C++ -*-===// 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 namespace lldb { 10 11 %feature("docstring", 12 "SBCommandInterpreter handles/interprets commands for lldb. 13 14 You get the command interpreter from the :py:class:`SBDebugger` instance. 15 16 For example (from test/ python_api/interpreter/TestCommandInterpreterAPI.py),:: 17 18 def command_interpreter_api(self): 19 '''Test the SBCommandInterpreter APIs.''' 20 exe = os.path.join(os.getcwd(), 'a.out') 21 22 # Create a target by the debugger. 23 target = self.dbg.CreateTarget(exe) 24 self.assertTrue(target, VALID_TARGET) 25 26 # Retrieve the associated command interpreter from our debugger. 27 ci = self.dbg.GetCommandInterpreter() 28 self.assertTrue(ci, VALID_COMMAND_INTERPRETER) 29 30 # Exercise some APIs.... 31 32 self.assertTrue(ci.HasCommands()) 33 self.assertTrue(ci.HasAliases()) 34 self.assertTrue(ci.HasAliasOptions()) 35 self.assertTrue(ci.CommandExists('breakpoint')) 36 self.assertTrue(ci.CommandExists('target')) 37 self.assertTrue(ci.CommandExists('platform')) 38 self.assertTrue(ci.AliasExists('file')) 39 self.assertTrue(ci.AliasExists('run')) 40 self.assertTrue(ci.AliasExists('bt')) 41 42 res = lldb.SBCommandReturnObject() 43 ci.HandleCommand('breakpoint set -f main.c -l %d' % self.line, res) 44 self.assertTrue(res.Succeeded()) 45 ci.HandleCommand('process launch', res) 46 self.assertTrue(res.Succeeded()) 47 48 process = ci.GetProcess() 49 self.assertTrue(process) 50 51 ... 52 53 The HandleCommand() instance method takes two args: the command string and 54 an SBCommandReturnObject instance which encapsulates the result of command 55 execution.") SBCommandInterpreter; 56 class SBCommandInterpreter 57 { 58 public: 59 enum 60 { 61 eBroadcastBitThreadShouldExit = (1 << 0), 62 eBroadcastBitResetPrompt = (1 << 1), 63 eBroadcastBitQuitCommandReceived = (1 << 2), // User entered quit 64 eBroadcastBitAsynchronousOutputData = (1 << 3), 65 eBroadcastBitAsynchronousErrorData = (1 << 4) 66 }; 67 68 SBCommandInterpreter (const lldb::SBCommandInterpreter &rhs); 69 70 ~SBCommandInterpreter (); 71 72 static const char * 73 GetArgumentTypeAsCString (const lldb::CommandArgumentType arg_type); 74 75 static const char * 76 GetArgumentDescriptionAsCString (const lldb::CommandArgumentType arg_type); 77 78 static bool 79 EventIsCommandInterpreterEvent (const lldb::SBEvent &event); 80 81 bool 82 IsValid() const; 83 84 explicit operator bool() const; 85 86 const char * 87 GetIOHandlerControlSequence(char ch); 88 89 bool 90 GetPromptOnQuit(); 91 92 void 93 SetPromptOnQuit(bool b); 94 95 void 96 AllowExitCodeOnQuit(bool b); 97 98 bool 99 HasCustomQuitExitCode(); 100 101 int 102 GetQuitStatus(); 103 104 void 105 ResolveCommand(const char *command_line, SBCommandReturnObject &result); 106 107 bool 108 CommandExists (const char *cmd); 109 110 bool 111 AliasExists (const char *cmd); 112 113 lldb::SBBroadcaster 114 GetBroadcaster (); 115 116 static const char * 117 GetBroadcasterClass (); 118 119 bool 120 HasCommands (); 121 122 bool 123 HasAliases (); 124 125 bool 126 HasAliasOptions (); 127 128 bool 129 IsInteractive (); 130 131 lldb::SBProcess 132 GetProcess (); 133 134 lldb::SBDebugger 135 GetDebugger (); 136 137 void 138 SourceInitFileInHomeDirectory (lldb::SBCommandReturnObject &result); 139 140 void 141 SourceInitFileInCurrentWorkingDirectory (lldb::SBCommandReturnObject &result); 142 143 lldb::ReturnStatus 144 HandleCommand (const char *command_line, lldb::SBCommandReturnObject &result, bool add_to_history = false); 145 146 lldb::ReturnStatus 147 HandleCommand (const char *command_line, SBExecutionContext &exe_ctx, SBCommandReturnObject &result, bool add_to_history = false); 148 149 void 150 HandleCommandsFromFile (lldb::SBFileSpec &file, 151 lldb::SBExecutionContext &override_context, 152 lldb::SBCommandInterpreterRunOptions &options, 153 lldb::SBCommandReturnObject result); 154 155 int 156 HandleCompletion (const char *current_line, 157 uint32_t cursor_pos, 158 int match_start_point, 159 int max_return_elements, 160 lldb::SBStringList &matches); 161 162 int 163 HandleCompletionWithDescriptions (const char *current_line, 164 uint32_t cursor_pos, 165 int match_start_point, 166 int max_return_elements, 167 lldb::SBStringList &matches, 168 lldb::SBStringList &descriptions); 169 bool 170 IsActive (); 171 172 bool 173 WasInterrupted () const; 174 }; 175 176 } // namespace lldb 177