<?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.SBModule</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;SBModule
      </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.SBModule-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SBModule</h1><p class="nomargin-top"><span class="codelink"><a href="lldb-pysrc.html#SBModule">source&nbsp;code</a></span></p>
<center>
<center>  <map id="uml_class_diagram_for_lldb_sbm" name="uml_class_diagram_for_lldb_sbm">
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__swig_setmethods__" title="lldb.SBModule.__swig_setmethods__" alt="" coords="17,31,237,49"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__swig_getmethods__" title="lldb.SBModule.__swig_getmethods__" alt="" coords="17,49,237,68"/>
<area shape="rect" id="node28" href="lldb.SBModule.symbols_access-class.html" title="lldb.SBModule.symbols_access" alt="" coords="17,68,237,87"/>
<area shape="rect" id="node28" href="lldb.SBModule.sections_access-class.html" title="lldb.SBModule.sections_access" alt="" coords="17,87,237,105"/>
<area shape="rect" id="node28" href="lldb.SBModule.compile_units_access-class.html" title="lldb.SBModule.compile_units_access" alt="" coords="17,105,237,124"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#addr_size" title="A read only property that returns the size in bytes of an address for this &#160;module." alt="" coords="17,124,237,143"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#byte_order" title="A read only property that returns an lldb enumeration value &#160;(lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that &#160;represents the byte order for this module." alt="" coords="17,143,237,161"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#compile_units" title="A read only property that returns a list() of lldb.SBCompileUnit objects &#160;contained in this module." alt="" coords="17,161,237,180"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#file" title="A read only property that returns an lldb object that represents the file &#160;(lldb.SBFileSpec) for this object file for this module as it is represented where it is being debugged." alt="" coords="17,180,237,199"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#num_sections" title="A read only property that returns number of sections in the module as an &#160;integer." alt="" coords="17,199,237,217"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#num_symbols" title="A read only property that returns number of symbols in the module symbol &#160;table as an integer." alt="" coords="17,217,237,236"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#platform_file" title="A read only property that returns an lldb object that represents the file &#160;(lldb.SBFileSpec) for this object file for this module as it is represented on the current host system." alt="" coords="17,236,237,255"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#section" title="A read only property that can be used to access compile units by index &#160;(&quot;compile_unit = module.compile_unit[0]&quot;), name (&quot;compile_unit = &#160;module.compile_unit[&#39;main.cpp&#39;]&quot;), or using a regular expression &#160;(&quot;compile_unit = module.compile_unit[re.compile(...)]&quot;)." alt="" coords="17,255,237,273"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#uuid" title="A read only property that returns a standard python uuid.UUID object that &#160;represents the UUID of this module." alt="" coords="17,292,237,311"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__setattr__" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,313,237,332"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__getattr__" title="lldb.SBModule.__getattr__" alt="" coords="17,332,237,351"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__repr__" title="repr(x)" alt="" coords="17,351,237,369"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__iter__" title="lldb.SBModule.__iter__" alt="" coords="17,369,237,388"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__len__" title="lldb.SBModule.__len__" alt="" coords="17,388,237,407"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#section_iter" title="lldb.SBModule.section_iter" alt="" coords="17,407,237,425"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#compile_unit_iter" title="lldb.SBModule.compile_unit_iter" alt="" coords="17,425,237,444"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#symbol_in_section_iter" title="Given a module and its contained section, returns an iterator on the &#160;symbols within the section." alt="" coords="17,444,237,463"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__init__" title="__init__(lldb::SBModule self) &#45;&gt; SBModule __init__(lldb::SBModule self, &#160;SBModule rhs) &#45;&gt; SBModule __init__(lldb::SBModule self, SBModuleSpec &#160;module_spec) &#45;&gt; SBModule __init__(lldb::SBModule self, SBProcess process, &#160;lldb::addr_t header_addr) &#45;&gt; SBModule" alt="" coords="17,463,237,481"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__swig_destroy__" title="delete_SBModule(SBModule self)" alt="" coords="17,481,237,500"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__del__" title="lldb.SBModule.__del__" alt="" coords="17,500,237,519"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__nonzero__" title="lldb.SBModule.__nonzero__" alt="" coords="17,519,237,537"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#IsValid" title="IsValid(SBModule self) &#45;&gt; bool" alt="" coords="17,537,237,556"/>
<area shape="rect" id="node28" href="lldb.SBModule-class.html#__ne__" title="lldb.SBModule.__ne__" alt="" coords="17,575,237,593"/>
<area shape="rect" id="node1" href="lldb.SBModule-class.html" title="Represents an executable image and its associated object and symbol files." alt="" coords="5,6,248,599"/>
</map>
  <img src="uml_class_diagram_for_lldb_sbm.gif" alt='' usemap="#uml_class_diagram_for_lldb_sbm" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<pre class="literalblock">

Represents an executable image and its associated object and symbol files.

The module is designed to be able to select a single slice of an
executable image as it would appear on disk and during program
execution.

You can retrieve SBModule from SBSymbolContext, which in turn is available
from SBFrame.

SBModule supports symbol iteration, for example,

    for symbol in module:
        name = symbol.GetName()
        saddr = symbol.GetStartAddress()
        eaddr = symbol.GetEndAddress()

and rich comparion methods which allow the API program to use,

    if thisModule == thatModule:
        print 'This module is the same as that module'

to test module equality.  A module also contains object file sections, namely
SBSection.  SBModule supports section iteration through section_iter(), for
example,

    print 'Number of sections: %d' % module.GetNumSections()
    for sec in module.section_iter():
        print sec

And to iterate the symbols within a SBSection, use symbol_in_section_iter(),

    # Iterates the text section and prints each symbols within each sub-section.
    for subsec in text_sec:
        print INDENT + repr(subsec)
        for sym in exe_module.symbol_in_section_iter(subsec):
            print INDENT2 + repr(sym)
            print INDENT2 + 'symbol type: %s' % symbol_type_to_str(sym.GetType())

produces this following output:

    [0x0000000100001780-0x0000000100001d5c) a.out.__TEXT.__text
        id = {0x00000004}, name = 'mask_access(MaskAction, unsigned int)', range = [0x00000001000017c0-0x0000000100001870)
        symbol type: code
        id = {0x00000008}, name = 'thread_func(void*)', range = [0x0000000100001870-0x00000001000019b0)
        symbol type: code
        id = {0x0000000c}, name = 'main', range = [0x00000001000019b0-0x0000000100001d5c)
        symbol type: code
        id = {0x00000023}, name = 'start', address = 0x0000000100001780
        symbol type: code
    [0x0000000100001d5c-0x0000000100001da4) a.out.__TEXT.__stubs
        id = {0x00000024}, name = '__stack_chk_fail', range = [0x0000000100001d5c-0x0000000100001d62)
        symbol type: trampoline
        id = {0x00000028}, name = 'exit', range = [0x0000000100001d62-0x0000000100001d68)
        symbol type: trampoline
        id = {0x00000029}, name = 'fflush', range = [0x0000000100001d68-0x0000000100001d6e)
        symbol type: trampoline
        id = {0x0000002a}, name = 'fgets', range = [0x0000000100001d6e-0x0000000100001d74)
        symbol type: trampoline
        id = {0x0000002b}, name = 'printf', range = [0x0000000100001d74-0x0000000100001d7a)
        symbol type: trampoline
        id = {0x0000002c}, name = 'pthread_create', range = [0x0000000100001d7a-0x0000000100001d80)
        symbol type: trampoline
        id = {0x0000002d}, name = 'pthread_join', range = [0x0000000100001d80-0x0000000100001d86)
        symbol type: trampoline
        id = {0x0000002e}, name = 'pthread_mutex_lock', range = [0x0000000100001d86-0x0000000100001d8c)
        symbol type: trampoline
        id = {0x0000002f}, name = 'pthread_mutex_unlock', range = [0x0000000100001d8c-0x0000000100001d92)
        symbol type: trampoline
        id = {0x00000030}, name = 'rand', range = [0x0000000100001d92-0x0000000100001d98)
        symbol type: trampoline
        id = {0x00000031}, name = 'strtoul', range = [0x0000000100001d98-0x0000000100001d9e)
        symbol type: trampoline
        id = {0x00000032}, name = 'usleep', range = [0x0000000100001d9e-0x0000000100001da4)
        symbol type: trampoline
    [0x0000000100001da4-0x0000000100001e2c) a.out.__TEXT.__stub_helper
    [0x0000000100001e2c-0x0000000100001f10) a.out.__TEXT.__cstring
    [0x0000000100001f10-0x0000000100001f68) a.out.__TEXT.__unwind_info
    [0x0000000100001f68-0x0000000100001ff8) a.out.__TEXT.__eh_frame

</pre>

<!-- ==================== NESTED CLASSES ==================== -->
<a name="section-NestedClasses"></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">Nested Classes</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-NestedClasses"
         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 href="lldb.SBModule.symbols_access-class.html" class="summary-name">symbols_access</a>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule.sections_access-class.html" class="summary-name">sections_access</a>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule.compile_units_access-class.html" class="summary-name">compile_units_access</a>
    </td>
  </tr>
</table>
<!-- ==================== 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.SBModule-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#SBModule.__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#SBModule.__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.SBModule-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 name="__iter__"></a><span class="summary-sig-name">__iter__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__iter__">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="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__len__">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="section_iter"></a><span class="summary-sig-name">section_iter</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.section_iter">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="compile_unit_iter"></a><span class="summary-sig-name">compile_unit_iter</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.compile_unit_iter">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="symbol_in_section_iter"></a><span class="summary-sig-name">symbol_in_section_iter</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">section</span>)</span><br />
      Given a module and its contained section, returns an iterator on the 
      symbols within the section.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.symbol_in_section_iter">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.SBModule-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::SBModule self) -&gt; SBModule __init__(lldb::SBModule 
      self, SBModule rhs) -&gt; SBModule __init__(lldb::SBModule self, 
      SBModuleSpec module_spec) -&gt; SBModule __init__(lldb::SBModule 
      self, SBProcess process, lldb::addr_t header_addr) -&gt; SBModule</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__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_SBModule(SBModule 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#SBModule.__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#SBModule.__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(SBModule self) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.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="Clear"></a><span class="summary-sig-name">Clear</span>(<span class="summary-sig-arg">self</span>)</span><br />
      Clear(SBModule self)</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.Clear">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.SBModule-class.html#GetFileSpec" class="summary-sig-name">GetFileSpec</a>(<span class="summary-sig-arg">self</span>)</span><br />
      GetFileSpec(SBModule self) -&gt; SBFileSpec</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetFileSpec">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.SBModule-class.html#GetPlatformFileSpec" class="summary-sig-name">GetPlatformFileSpec</a>(<span class="summary-sig-arg">self</span>)</span><br />
      GetPlatformFileSpec(SBModule self) -&gt; SBFileSpec</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetPlatformFileSpec">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="SetPlatformFileSpec"></a><span class="summary-sig-name">SetPlatformFileSpec</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      SetPlatformFileSpec(SBModule self, SBFileSpec platform_file) -&gt; 
      bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.SetPlatformFileSpec">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.SBModule-class.html#GetUUIDString" class="summary-sig-name">GetUUIDString</a>(<span class="summary-sig-arg">self</span>)</span><br />
      GetUUIDString(SBModule self) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetUUIDString">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="FindSection"></a><span class="summary-sig-name">FindSection</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindSection(SBModule self, str const * sect_name) -&gt; SBSection</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindSection">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="ResolveFileAddress"></a><span class="summary-sig-name">ResolveFileAddress</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      ResolveFileAddress(SBModule self, lldb::addr_t vm_addr) -&gt; 
      SBAddress</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.ResolveFileAddress">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="ResolveSymbolContextForAddress"></a><span class="summary-sig-name">ResolveSymbolContextForAddress</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      ResolveSymbolContextForAddress(SBModule self, SBAddress addr, 
      uint32_t resolve_scope) -&gt; SBSymbolContext</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.ResolveSymbolContextForAddress">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="GetDescription"></a><span class="summary-sig-name">GetDescription</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetDescription(SBModule self, SBStream description) -&gt; bool</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetDescription">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="GetNumCompileUnits"></a><span class="summary-sig-name">GetNumCompileUnits</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetNumCompileUnits(SBModule self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetNumCompileUnits">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="GetCompileUnitAtIndex"></a><span class="summary-sig-name">GetCompileUnitAtIndex</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetCompileUnitAtIndex(SBModule self, uint32_t arg2) -&gt; 
      SBCompileUnit</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetCompileUnitAtIndex">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="GetNumSymbols"></a><span class="summary-sig-name">GetNumSymbols</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetNumSymbols(SBModule self) -&gt; size_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetNumSymbols">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="GetSymbolAtIndex"></a><span class="summary-sig-name">GetSymbolAtIndex</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetSymbolAtIndex(SBModule self, size_t idx) -&gt; SBSymbol</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetSymbolAtIndex">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="FindSymbol"></a><span class="summary-sig-name">FindSymbol</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindSymbol(SBModule self, str const * name, lldb::SymbolType 
      type=eSymbolTypeAny) -&gt; SBSymbol FindSymbol(SBModule self, str 
      const * name) -&gt; SBSymbol</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindSymbol">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="FindSymbols"></a><span class="summary-sig-name">FindSymbols</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindSymbols(SBModule self, str const * name, lldb::SymbolType 
      type=eSymbolTypeAny) -&gt; SBSymbolContextList FindSymbols(SBModule 
      self, str const * name) -&gt; SBSymbolContextList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindSymbols">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="GetNumSections"></a><span class="summary-sig-name">GetNumSections</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetNumSections(SBModule self) -&gt; size_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetNumSections">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="GetSectionAtIndex"></a><span class="summary-sig-name">GetSectionAtIndex</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetSectionAtIndex(SBModule self, size_t idx) -&gt; SBSection</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetSectionAtIndex">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.SBModule-class.html#FindFunctions" class="summary-sig-name">FindFunctions</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindFunctions(SBModule self, str const * name, uint32_t name_type_mask=eFunctionNameTypeAny) -&gt; SBSymbolContextList
FindFunctions(SBModule self, str const * name) -&gt; SBSymbolContextList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindFunctions">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="FindFirstType"></a><span class="summary-sig-name">FindFirstType</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindFirstType(SBModule self, str const * name) -&gt; SBType</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindFirstType">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="FindTypes"></a><span class="summary-sig-name">FindTypes</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindTypes(SBModule self, str const * type) -&gt; SBTypeList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindTypes">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="GetBasicType"></a><span class="summary-sig-name">GetBasicType</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetBasicType(SBModule self, lldb::BasicType type) -&gt; SBType</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetBasicType">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.SBModule-class.html#GetTypes" class="summary-sig-name">GetTypes</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      GetTypes(SBModule self, uint32_t type_mask=eTypeClassAny) -&gt; SBTypeList
GetTypes(SBModule self) -&gt; SBTypeList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetTypes">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.SBModule-class.html#FindGlobalVariables" class="summary-sig-name">FindGlobalVariables</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindGlobalVariables(SBModule self, SBTarget target, str const * name, uint32_t max_matches) -&gt; SBValueList</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindGlobalVariables">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.SBModule-class.html#FindFirstGlobalVariable" class="summary-sig-name">FindFirstGlobalVariable</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">*args</span>)</span><br />
      FindFirstGlobalVariable(SBModule self, SBTarget target, str const * name) -&gt; SBValue</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.FindFirstGlobalVariable">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="GetByteOrder"></a><span class="summary-sig-name">GetByteOrder</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetByteOrder(SBModule self) -&gt; lldb::ByteOrder</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetByteOrder">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="GetAddressByteSize"></a><span class="summary-sig-name">GetAddressByteSize</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetAddressByteSize(SBModule self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetAddressByteSize">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="GetTriple"></a><span class="summary-sig-name">GetTriple</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetTriple(SBModule self) -&gt; str const *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetTriple">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="GetVersion"></a><span class="summary-sig-name">GetVersion</span>(<span class="summary-sig-arg">self</span>)</span><br />
      GetVersion(SBModule self) -&gt; uint32_t</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.GetVersion">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="get_symbols_access_object"></a><span class="summary-sig-name">get_symbols_access_object</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a symbols_access() object which 
      allows lazy symbol access from a lldb.SBModule object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_symbols_access_object">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="get_compile_units_access_object"></a><span class="summary-sig-name">get_compile_units_access_object</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a compile_units_access() object 
      which allows lazy compile unit access from a lldb.SBModule object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_compile_units_access_object">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="get_symbols_array"></a><span class="summary-sig-name">get_symbols_array</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a list() that contains all symbols 
      in a lldb.SBModule object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_symbols_array">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="get_sections_access_object"></a><span class="summary-sig-name">get_sections_access_object</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns a sections_access() object which 
      allows lazy section array access.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_sections_access_object">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="get_sections_array"></a><span class="summary-sig-name">get_sections_array</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns an array object that contains all 
      sections in this module object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_sections_array">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="get_compile_units_array"></a><span class="summary-sig-name">get_compile_units_array</span>(<span class="summary-sig-arg">self</span>)</span><br />
      An accessor function that returns an array object that contains all 
      compile_units in this module object.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_compile_units_array">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="get_uuid"></a><span class="summary-sig-name">get_uuid</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.get_uuid">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.SBModule-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
      __str__(SBModule self) -&gt; PyObject *</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__str__">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="__eq__"></a><span class="summary-sig-name">__eq__</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">rhs</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__eq__">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="__ne__"></a><span class="summary-sig-name">__ne__</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">rhs</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="lldb-pysrc.html#SBModule.__ne__">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>__subclasshook__</code>
      </p>
    </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>
</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 width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#addr_size" class="summary-name">addr_size</a><br />
      A read only property that returns the size in bytes of an address for
      this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#byte_order" class="summary-name">byte_order</a><br />
      A read only property that returns an lldb enumeration value 
      (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) 
      that represents the byte order for this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#compile_units" class="summary-name">compile_units</a><br />
      A read only property that returns a list() of lldb.SBCompileUnit 
      objects contained in this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#file" class="summary-name">file</a><br />
      A read only property that returns an lldb object that represents the 
      file (lldb.SBFileSpec) for this object file for this module as it is 
      represented where it is being debugged.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#num_sections" class="summary-name">num_sections</a><br />
      A read only property that returns number of sections in the module as
      an integer.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#num_symbols" class="summary-name">num_symbols</a><br />
      A read only property that returns number of symbols in the module 
      symbol table as an integer.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#platform_file" class="summary-name">platform_file</a><br />
      A read only property that returns an lldb object that represents the 
      file (lldb.SBFileSpec) for this object file for this module as it is 
      represented on the current host system.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#section" class="summary-name">section</a><br />
      A read only property that can be used to access compile units by 
      index (&quot;compile_unit = module.compile_unit[0]&quot;), name 
      (&quot;compile_unit = module.compile_unit['main.cpp']&quot;), or 
      using a regular expression (&quot;compile_unit = 
      module.compile_unit[re.compile(...)]&quot;).
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#sections" class="summary-name">sections</a><br />
      A read only property that returns a list() of lldb.SBSection objects 
      contained in this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#symbol" class="summary-name">symbol</a><br />
      A read only property that can be used to access symbols by index 
      (&quot;symbol = module.symbol[0]&quot;), name (&quot;symbols = 
      module.symbol['main']&quot;), or using a regular expression 
      (&quot;symbols = module.symbol[re.compile(...)]&quot;).
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#symbols" class="summary-name">symbols</a><br />
      A read only property that returns a list() of lldb.SBSymbol objects 
      contained in this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#triple" class="summary-name">triple</a><br />
      A read only property that returns the target triple (arch-vendor-os) 
      for this module.
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="lldb.SBModule-class.html#uuid" class="summary-name">uuid</a><br />
      A read only property that returns a standard python uuid.UUID object 
      that represents the UUID of this module.
    </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#SBModule.__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#SBModule.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>__init__(lldb::SBModule self) -&gt; SBModule __init__(lldb::SBModule 
  self, SBModule rhs) -&gt; SBModule __init__(lldb::SBModule self, 
  SBModuleSpec module_spec) -&gt; SBModule __init__(lldb::SBModule self, 
  SBProcess process, lldb::addr_t header_addr) -&gt; SBModule</p>
  <dl class="fields">
    <dt>Overrides:
        object.__init__
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="GetFileSpec"></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">GetFileSpec</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBModule.GetFileSpec">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

GetFileSpec(SBModule self) -&gt; SBFileSpec

Get const accessor for the module file specification.

This function returns the file for the module on the host system
that is running LLDB. This can differ from the path on the 
platform since we might be doing remote debugging.

@return
    A const reference to the file specification object.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetPlatformFileSpec"></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">GetPlatformFileSpec</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBModule.GetPlatformFileSpec">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

GetPlatformFileSpec(SBModule self) -&gt; SBFileSpec

Get accessor for the module platform file specification.

Platform file refers to the path of the module as it is known on
the remote system on which it is being debugged. For local 
debugging this is always the same as Module::GetFileSpec(). But
remote debugging might mention a file '/usr/lib/liba.dylib'
which might be locally downloaded and cached. In this case the
platform file could be something like:
'/tmp/lldb/platform-cache/remote.host.computer/usr/lib/liba.dylib'
The file could also be cached in a local developer kit directory.

@return
    A const reference to the file specification object.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetUUIDString"></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">GetUUIDString</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBModule.GetUUIDString">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>GetUUIDString(SBModule self) -&gt; str const *</p>
  <p>Returns the UUID of the module as a Python string.</p>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="FindFunctions"></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">FindFunctions</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#SBModule.FindFunctions">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

FindFunctions(SBModule self, str const * name, uint32_t name_type_mask=eFunctionNameTypeAny) -&gt; SBSymbolContextList
FindFunctions(SBModule self, str const * name) -&gt; SBSymbolContextList

Find functions by name.

@param[in] name
    The name of the function we are looking for.

@param[in] name_type_mask
    A logical OR of one or more FunctionNameType enum bits that
    indicate what kind of names should be used when doing the
    lookup. Bits include fully qualified names, base names,
    C++ methods, or ObjC selectors. 
    See FunctionNameType for more details.

@return
    A symbol context list that gets filled in with all of the
    matches.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="GetTypes"></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">GetTypes</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#SBModule.GetTypes">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

GetTypes(SBModule self, uint32_t type_mask=eTypeClassAny) -&gt; SBTypeList
GetTypes(SBModule self) -&gt; SBTypeList

Get all types matching type_mask from debug info in this
module.

@param[in] type_mask
    A bitfield that consists of one or more bits logically OR'ed
    together from the lldb::TypeClass enumeration. This allows
    you to request only structure types, or only class, struct
    and union types. Passing in lldb::eTypeClassAny will return
    all types found in the debug information for this module.

@return
    A list of types in this module that match type_mask

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="FindGlobalVariables"></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">FindGlobalVariables</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#SBModule.FindGlobalVariables">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

FindGlobalVariables(SBModule self, SBTarget target, str const * name, uint32_t max_matches) -&gt; SBValueList

Find global and static variables by name.

@param[in] target
    A valid SBTarget instance representing the debuggee.

@param[in] name
    The name of the global or static variable we are looking
    for.

@param[in] max_matches
    Allow the number of matches to be limited to max_matches.

@return
    A list of matched variables in an SBValueList.

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="FindFirstGlobalVariable"></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">FindFirstGlobalVariable</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#SBModule.FindFirstGlobalVariable">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <pre class="literalblock">

FindFirstGlobalVariable(SBModule self, SBTarget target, str const * name) -&gt; SBValue

Find the first global (or static) variable by name.

@param[in] target
    A valid SBTarget instance representing the debuggee.

@param[in] name
    The name of the global or static variable we are looking
    for.

@return
    An SBValue that gets filled in with the found variable (if any).

</pre>
  <dl class="fields">
  </dl>
</td></tr></table>
</div>
<a name="__str__"></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">__str__</span>(<span class="sig-arg">self</span>)</span>
    <br /><em class="fname">(Informal representation operator)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="lldb-pysrc.html#SBModule.__str__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>__str__(SBModule self) -&gt; PyObject *</p>
  <dl class="fields">
    <dt>Overrides:
        object.__str__
    </dt>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== PROPERTY DETAILS ==================== -->
<a name="section-PropertyDetails"></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">Property Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-PropertyDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="addr_size"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">addr_size</h3>
  <p>A read only property that returns the size in bytes of an address for 
  this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetAddressByteSize" class="summary-sig-name">GetAddressByteSize</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetAddressByteSize(SBModule self) -&gt; uint32_t
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="byte_order"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">byte_order</h3>
  <p>A read only property that returns an lldb enumeration value 
  (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that 
  represents the byte order for this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetByteOrder" class="summary-sig-name">GetByteOrder</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetByteOrder(SBModule self) -&gt; lldb::ByteOrder
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="compile_units"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">compile_units</h3>
  <p>A read only property that returns a list() of lldb.SBCompileUnit 
  objects contained in this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_compile_units_array" class="summary-sig-name">get_compile_units_array</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns an array object that contains all 
      compile_units in this module object.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="file"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">file</h3>
  <p>A read only property that returns an lldb object that represents the 
  file (lldb.SBFileSpec) for this object file for this module as it is 
  represented where it is being debugged.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetFileSpec" class="summary-sig-name">GetFileSpec</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetFileSpec(SBModule self) -&gt; SBFileSpec
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="num_sections"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">num_sections</h3>
  <p>A read only property that returns number of sections in the module as 
  an integer.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetNumSections" class="summary-sig-name">GetNumSections</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetNumSections(SBModule self) -&gt; size_t
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="num_symbols"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">num_symbols</h3>
  <p>A read only property that returns number of symbols in the module 
  symbol table as an integer.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetNumSymbols" class="summary-sig-name">GetNumSymbols</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetNumSymbols(SBModule self) -&gt; size_t
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="platform_file"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">platform_file</h3>
  <p>A read only property that returns an lldb object that represents the 
  file (lldb.SBFileSpec) for this object file for this module as it is 
  represented on the current host system.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetPlatformFileSpec" class="summary-sig-name">GetPlatformFileSpec</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetPlatformFileSpec(SBModule self) -&gt; SBFileSpec
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="section"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">section</h3>
  <p>A read only property that can be used to access compile units by index
  (&quot;compile_unit = module.compile_unit[0]&quot;), name 
  (&quot;compile_unit = module.compile_unit['main.cpp']&quot;), or using a 
  regular expression (&quot;compile_unit = 
  module.compile_unit[re.compile(...)]&quot;). The return value is a single
  lldb.SBCompileUnit object for array access or by full or partial path, 
  and a list() of lldb.SBCompileUnit objects regular expressions.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_sections_access_object" class="summary-sig-name">get_sections_access_object</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns a sections_access() object which 
      allows lazy section array access.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="sections"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">sections</h3>
  <p>A read only property that returns a list() of lldb.SBSection objects 
  contained in this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_sections_array" class="summary-sig-name">get_sections_array</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns an array object that contains all 
      sections in this module object.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="symbol"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">symbol</h3>
  <p>A read only property that can be used to access symbols by index 
  (&quot;symbol = module.symbol[0]&quot;), name (&quot;symbols = 
  module.symbol['main']&quot;), or using a regular expression 
  (&quot;symbols = module.symbol[re.compile(...)]&quot;). The return value 
  is a single lldb.SBSymbol object for array access, and a list() of 
  lldb.SBSymbol objects for name and regular expression access</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_symbols_access_object" class="summary-sig-name">get_symbols_access_object</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns a symbols_access() object which 
      allows lazy symbol access from a lldb.SBModule object.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="symbols"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">symbols</h3>
  <p>A read only property that returns a list() of lldb.SBSymbol objects 
  contained in this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_symbols_array" class="summary-sig-name">get_symbols_array</a>(<span class="summary-sig-arg">self</span>)</span>
        - An accessor function that returns a list() that contains all symbols 
      in a lldb.SBModule object.
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="triple"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">triple</h3>
  <p>A read only property that returns the target triple (arch-vendor-os) 
  for this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#GetTriple" class="summary-sig-name">GetTriple</a>(<span class="summary-sig-arg">self</span>)</span>
        - GetTriple(SBModule self) -&gt; str const *
    </dd>
  </dl>
</td></tr></table>
</div>
<a name="uuid"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">uuid</h3>
  <p>A read only property that returns a standard python uuid.UUID object 
  that represents the UUID of this module.</p>
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="lldb.SBModule-class.html#get_uuid" class="summary-sig-name">get_uuid</a>(<span class="summary-sig-arg">self</span>)</span>
    </dd>
  </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:35 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>
