• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- SWIG Interface for SBCommandInterpreter -----------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 namespace lldb {
11 
12 %feature("docstring",
13 "SBCommandInterpreter handles/interprets commands for lldb.  You get the
14 command interpreter from the SBDebugger instance. For example (from test/
15 python_api/interpreter/TestCommandInterpreterAPI.py),
16 
17     def command_interpreter_api(self):
18         '''Test the SBCommandInterpreter APIs.'''
19         exe = os.path.join(os.getcwd(), 'a.out')
20 
21         # Create a target by the debugger.
22         target = self.dbg.CreateTarget(exe)
23         self.assertTrue(target, VALID_TARGET)
24 
25         # Retrieve the associated command interpreter from our debugger.
26         ci = self.dbg.GetCommandInterpreter()
27         self.assertTrue(ci, VALID_COMMAND_INTERPRETER)
28 
29         # Exercise some APIs....
30 
31         self.assertTrue(ci.HasCommands())
32         self.assertTrue(ci.HasAliases())
33         self.assertTrue(ci.HasAliasOptions())
34         self.assertTrue(ci.CommandExists('breakpoint'))
35         self.assertTrue(ci.CommandExists('target'))
36         self.assertTrue(ci.CommandExists('platform'))
37         self.assertTrue(ci.AliasExists('file'))
38         self.assertTrue(ci.AliasExists('run'))
39         self.assertTrue(ci.AliasExists('bt'))
40 
41         res = lldb.SBCommandReturnObject()
42         ci.HandleCommand('breakpoint set -f main.c -l %d' % self.line, res)
43         self.assertTrue(res.Succeeded())
44         ci.HandleCommand('process launch', res)
45         self.assertTrue(res.Succeeded())
46 
47         process = ci.GetProcess()
48         self.assertTrue(process)
49 
50         ...
51 
52 The HandleCommand() instance method takes two args: the command string and
53 an SBCommandReturnObject instance which encapsulates the result of command
54 execution.
55 ") 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     bool
79     IsValid() const;
80 
81     bool
82     CommandExists (const char *cmd);
83 
84     bool
85     AliasExists (const char *cmd);
86 
87     lldb::SBBroadcaster
88     GetBroadcaster ();
89 
90     static const char *
91     GetBroadcasterClass ();
92 
93     bool
94     HasCommands ();
95 
96     bool
97     HasAliases ();
98 
99     bool
100     HasAliasOptions ();
101 
102     lldb::SBProcess
103     GetProcess ();
104 
105     lldb::SBDebugger
106     GetDebugger ();
107 
108     void
109     SourceInitFileInHomeDirectory (lldb::SBCommandReturnObject &result);
110 
111     void
112     SourceInitFileInCurrentWorkingDirectory (lldb::SBCommandReturnObject &result);
113 
114     lldb::ReturnStatus
115     HandleCommand (const char *command_line, lldb::SBCommandReturnObject &result, bool add_to_history = false);
116 
117     int
118     HandleCompletion (const char *current_line,
119                       uint32_t cursor_pos,
120                       int match_start_point,
121                       int max_return_elements,
122                       lldb::SBStringList &matches);
123 };
124 
125 } // namespace lldb
126