<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>lldb.SBCommandInterpreter</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://lldb.llvm.org">LLDB python API</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="lldb-module.html">Package&nbsp;lldb</a> ::
        Class&nbsp;SBCommandInterpreter
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="lldb.SBCommandInterpreter-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SBCommandInterpreter</h1><p class="nomargin-top"><span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter">source&nbsp;code</a></span></p>
<center>
<center>  <map id="uml_class_diagram_for_lldb_sbc" name="uml_class_diagram_for_lldb_sbc">
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__swig_setmethods__" title="lldb.SBCommandInterpreter.__swig_setmethods__" alt="" coords="17,31,265,49"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__swig_getmethods__" title="lldb.SBCommandInterpreter.__swig_getmethods__" alt="" coords="17,49,265,68"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#eBroadcastBitThreadShouldExit" title="lldb.SBCommandInterpreter.eBroadcastBitThreadShouldExit" alt="" coords="17,68,265,87"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#eBroadcastBitResetPrompt" title="lldb.SBCommandInterpreter.eBroadcastBitResetPrompt" alt="" coords="17,87,265,105"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#eBroadcastBitQuitCommandReceived" title="lldb.SBCommandInterpreter.eBroadcastBitQuitCommandReceived" alt="" coords="17,105,265,124"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#eBroadcastBitAsynchronousOutputData" title="lldb.SBCommandInterpreter.eBroadcastBitAsynchronousOutputData" alt="" coords="17,124,265,143"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#eBroadcastBitAsynchronousErrorData" title="lldb.SBCommandInterpreter.eBroadcastBitAsynchronousErrorData" alt="" coords="17,143,265,161"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__setattr__" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,164,265,183"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__getattr__" title="lldb.SBCommandInterpreter.__getattr__" alt="" coords="17,183,265,201"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__repr__" title="repr(x)" alt="" coords="17,201,265,220"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__init__" title="__init__(lldb::SBCommandInterpreter self, SBCommandInterpreter rhs) &#45;&gt; &#160;SBCommandInterpreter" alt="" coords="17,220,265,239"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__swig_destroy__" title="delete_SBCommandInterpreter(SBCommandInterpreter self)" alt="" coords="17,239,265,257"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__del__" title="lldb.SBCommandInterpreter.__del__" alt="" coords="17,257,265,276"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#GetArgumentTypeAsCString" title="GetArgumentTypeAsCString(lldb::CommandArgumentType const arg_type) &#45;&gt; str &#160;const *" alt="" coords="17,276,265,295"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#GetArgumentDescriptionAsCString" title="GetArgumentDescriptionAsCString(lldb::CommandArgumentType const arg_type) &#160;&#45;&gt; str const *" alt="" coords="17,295,265,313"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#__nonzero__" title="lldb.SBCommandInterpreter.__nonzero__" alt="" coords="17,313,265,332"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#IsValid" title="IsValid(SBCommandInterpreter self) &#45;&gt; bool" alt="" coords="17,332,265,351"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#CommandExists" title="CommandExists(SBCommandInterpreter self, str const * cmd) &#45;&gt; bool" alt="" coords="17,351,265,369"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#AliasExists" title="AliasExists(SBCommandInterpreter self, str const * cmd) &#45;&gt; bool" alt="" coords="17,369,265,388"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#GetBroadcaster" title="GetBroadcaster(SBCommandInterpreter self) &#45;&gt; SBBroadcaster" alt="" coords="17,388,265,407"/>
<area shape="rect" id="node7" href="lldb.SBCommandInterpreter-class.html#HandleCompletion" title="HandleCompletion(SBCommandInterpreter self, str const * current_line, uint32_t cursor_pos, int match_start_point, int max_return_elements, ..." alt="" coords="17,425,265,444"/>
<area shape="rect" id="node1" href="lldb.SBCommandInterpreter-class.html" title="SBCommandInterpreter handles/interprets commands for lldb." alt="" coords="5,6,277,450"/>
</map>
  <img src="uml_class_diagram_for_lldb_sbc.gif" alt='' usemap="#uml_class_diagram_for_lldb_sbc" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<pre class="literalblock">

SBCommandInterpreter handles/interprets commands for lldb.  You get the
command interpreter from the SBDebugger instance. For example (from test/
python_api/interpreter/TestCommandInterpreterAPI.py),

    def command_interpreter_api(self):
        '''Test the SBCommandInterpreter APIs.'''
        exe = os.path.join(os.getcwd(), 'a.out')

        # Create a target by the debugger.
        target = self.dbg.CreateTarget(exe)
        self.assertTrue(target, VALID_TARGET)

        # Retrieve the associated command interpreter from our debugger.
        ci = self.dbg.GetCommandInterpreter()
        self.assertTrue(ci, VALID_COMMAND_INTERPRETER)

        # Exercise some APIs....

        self.assertTrue(ci.HasCommands())
        self.assertTrue(ci.HasAliases())
        self.assertTrue(ci.HasAliasOptions())
        self.assertTrue(ci.CommandExists('breakpoint'))
        self.assertTrue(ci.CommandExists('target'))
        self.assertTrue(ci.CommandExists('platform'))
        self.assertTrue(ci.AliasExists('file'))
        self.assertTrue(ci.AliasExists('run'))
        self.assertTrue(ci.AliasExists('bt'))

        res = lldb.SBCommandReturnObject()
        ci.HandleCommand('breakpoint set -f main.c -l %d' % self.line, res)
        self.assertTrue(res.Succeeded())
        ci.HandleCommand('process launch', res)
        self.assertTrue(res.Succeeded())

        process = ci.GetProcess()
        self.assertTrue(process)

        ...

The HandleCommand() instance method takes two args: the command string and
an SBCommandReturnObject instance which encapsulates the result of command
execution.

</pre>

<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBCommandInterpreter-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">name</span>,
        <span class="summary-sig-arg">value</span>)</span><br />
      x.__setattr__('name', value) &lt;==&gt; x.name = value</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__setattr__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">name</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__getattr__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBCommandInterpreter-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      repr(x)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#_swig_repr">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBCommandInterpreter-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      __init__(lldb::SBCommandInterpreter self, SBCommandInterpreter rhs) 
      -&gt; SBCommandInterpreter</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__init__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__swig_destroy__"></a><span class="summary-sig-name">__swig_destroy__</span>(<span class="summary-sig-arg">...</span>)</span><br />
      delete_SBCommandInterpreter(SBCommandInterpreter self)</td>
          <td align="right" valign="top">
            
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__del__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__nonzero__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="IsValid"></a><span class="summary-sig-name">IsValid</span>(<span class="summary-sig-arg">self</span>)</span><br />
      IsValid(SBCommandInterpreter self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.IsValid">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="CommandExists"></a><span class="summary-sig-name">CommandExists</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      CommandExists(SBCommandInterpreter self, str const * cmd) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.CommandExists">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="AliasExists"></a><span class="summary-sig-name">AliasExists</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      AliasExists(SBCommandInterpreter self, str const * cmd) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.AliasExists">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetBroadcaster"></a><span class="summary-sig-name">GetBroadcaster</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetBroadcaster(SBCommandInterpreter self) -&gt; SBBroadcaster</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetBroadcaster">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="HasCommands"></a><span class="summary-sig-name">HasCommands</span>(<span class="summary-sig-arg">self</span>)</span><br />
      HasCommands(SBCommandInterpreter self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HasCommands">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="HasAliases"></a><span class="summary-sig-name">HasAliases</span>(<span class="summary-sig-arg">self</span>)</span><br />
      HasAliases(SBCommandInterpreter self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HasAliases">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="HasAliasOptions"></a><span class="summary-sig-name">HasAliasOptions</span>(<span class="summary-sig-arg">self</span>)</span><br />
      HasAliasOptions(SBCommandInterpreter self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HasAliasOptions">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetProcess"></a><span class="summary-sig-name">GetProcess</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetProcess(SBCommandInterpreter self) -&gt; SBProcess</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetProcess">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetDebugger"></a><span class="summary-sig-name">GetDebugger</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetDebugger(SBCommandInterpreter self) -&gt; SBDebugger</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetDebugger">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SourceInitFileInHomeDirectory"></a><span class="summary-sig-name">SourceInitFileInHomeDirectory</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SourceInitFileInHomeDirectory(SBCommandInterpreter self, 
      SBCommandReturnObject result)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.SourceInitFileInHomeDirectory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="SourceInitFileInCurrentWorkingDirectory"></a><span class="summary-sig-name">SourceInitFileInCurrentWorkingDirectory</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SourceInitFileInCurrentWorkingDirectory(SBCommandInterpreter self, 
      SBCommandReturnObject result)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.SourceInitFileInCurrentWorkingDirectory">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="HandleCommand"></a><span class="summary-sig-name">HandleCommand</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      HandleCommand(SBCommandInterpreter self, str const * command_line, 
      SBCommandReturnObject result, bool add_to_history=False) -&gt; 
      lldb::ReturnStatus HandleCommand(SBCommandInterpreter self, str const
      * command_line, SBCommandReturnObject result) -&gt; 
      lldb::ReturnStatus</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HandleCommand">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="lldb.SBCommandInterpreter-class.html#HandleCompletion" class="summary-sig-name">HandleCompletion</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      HandleCompletion(SBCommandInterpreter self, str const * current_line, uint32_t cursor_pos, int match_start_point, int max_return_elements, ...</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HandleCompletion">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__delattr__</code>,
      <code>__format__</code>,
      <code>__getattribute__</code>,
      <code>__hash__</code>,
      <code>__new__</code>,
      <code>__reduce__</code>,
      <code>__reduce_ex__</code>,
      <code>__sizeof__</code>,
      <code>__str__</code>,
      <code>__subclasshook__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== STATIC METHODS ==================== -->
<a name="section-StaticMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Static Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-StaticMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetArgumentTypeAsCString"></a><span class="summary-sig-name">GetArgumentTypeAsCString</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetArgumentTypeAsCString(lldb::CommandArgumentType const arg_type) 
      -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetArgumentTypeAsCString">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetArgumentDescriptionAsCString"></a><span class="summary-sig-name">GetArgumentDescriptionAsCString</span>(<span class="summary-sig-arg">*args</span>)</span><br />
      GetArgumentDescriptionAsCString(lldb::CommandArgumentType const 
      arg_type) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetArgumentDescriptionAsCString">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">str const *</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="GetBroadcasterClass"></a><span class="summary-sig-name">GetBroadcasterClass</span>()</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.GetBroadcasterClass">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Class Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-ClassVariables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__swig_setmethods__"></a><span class="summary-name">__swig_setmethods__</span> = <code title="{}"><code class="variable-group">{</code><code class="variable-group">}</code></code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__swig_getmethods__"></a><span class="summary-name">__swig_getmethods__</span> = <code title="{}">{}</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitThreadShouldExit"></a><span class="summary-name">eBroadcastBitThreadShouldExit</span> = <code title="1">1</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitResetPrompt"></a><span class="summary-name">eBroadcastBitResetPrompt</span> = <code title="2">2</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitQuitCommandReceived"></a><span class="summary-name">eBroadcastBitQuitCommandReceived</span> = <code title="4">4</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitAsynchronousOutputData"></a><span class="summary-name">eBroadcastBitAsynchronousOutputData</span> = <code title="8">8</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="eBroadcastBitAsynchronousErrorData"></a><span class="summary-name">eBroadcastBitAsynchronousErrorData</span> = <code title="16">16</code>
    </td>
  </tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Properties</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Properties"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__class__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__setattr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">name</span>,
        <span class="sig-arg">value</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__setattr__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>x.__setattr__('name', value) &lt;==&gt; x.name = value</p>
  <dl class="fields">
    <dt>Overrides:
        object.__setattr__
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Representation operator)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#_swig_repr">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>repr(x)</p>
  <dl class="fields">
    <dt>Overrides:
        object.__repr__
        <dd><em class="note">(inherited documentation)</em></dd>
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>__init__(lldb::SBCommandInterpreter self, SBCommandInterpreter rhs) 
  -&gt; SBCommandInterpreter</p>
  <dl class="fields">
    <dt>Overrides:
        object.__init__
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="HandleCompletion"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">HandleCompletion</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">*args</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBCommandInterpreter.HandleCompletion">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

HandleCompletion(SBCommandInterpreter self, str const * current_line, uint32_t cursor_pos, int match_start_point, int max_return_elements, 
    SBStringList matches) -&gt; int

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a class="navbar" target="_top" href="http://lldb.llvm.org">LLDB python API</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Fri Jul 19 13:22:34 2013
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
