Home | History | Annotate | Download | only in interface
      1 //===-- SWIG Interface for SBSymbolContext ----------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 namespace lldb {
     11 
     12 %feature("docstring",
     13 "A context object that provides access to core debugger entities.
     14 
     15 Manay debugger functions require a context when doing lookups. This class
     16 provides a common structure that can be used as the result of a query that
     17 can contain a single result.
     18 
     19 For example,
     20 
     21         exe = os.path.join(os.getcwd(), 'a.out')
     22 
     23         # Create a target for the debugger.
     24         target = self.dbg.CreateTarget(exe)
     25 
     26         # Now create a breakpoint on main.c by name 'c'.
     27         breakpoint = target.BreakpointCreateByName('c', 'a.out')
     28 
     29         # Now launch the process, and do not stop at entry point.
     30         process = target.LaunchSimple(None, None, os.getcwd())
     31 
     32         # The inferior should stop on 'c'.
     33         from lldbutil import get_stopped_thread
     34         thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
     35         frame0 = thread.GetFrameAtIndex(0)
     36 
     37         # Now get the SBSymbolContext from this frame.  We want everything. :-)
     38         context = frame0.GetSymbolContext(lldb.eSymbolContextEverything)
     39 
     40         # Get the module.
     41         module = context.GetModule()
     42         ...
     43 
     44         # And the compile unit associated with the frame.
     45         compileUnit = context.GetCompileUnit()
     46         ...
     47 "
     48 ) SBSymbolContext;
     49 class SBSymbolContext
     50 {
     51 public:
     52     SBSymbolContext ();
     53 
     54     SBSymbolContext (const lldb::SBSymbolContext& rhs);
     55 
     56     ~SBSymbolContext ();
     57 
     58     bool
     59     IsValid () const;
     60 
     61     lldb::SBModule        GetModule ();
     62     lldb::SBCompileUnit   GetCompileUnit ();
     63     lldb::SBFunction      GetFunction ();
     64     lldb::SBBlock         GetBlock ();
     65     lldb::SBLineEntry     GetLineEntry ();
     66     lldb::SBSymbol        GetSymbol ();
     67 
     68     void SetModule      (lldb::SBModule module);
     69     void SetCompileUnit (lldb::SBCompileUnit compile_unit);
     70     void SetFunction    (lldb::SBFunction function);
     71     void SetBlock       (lldb::SBBlock block);
     72     void SetLineEntry   (lldb::SBLineEntry line_entry);
     73     void SetSymbol      (lldb::SBSymbol symbol);
     74 
     75     lldb::SBSymbolContext
     76     GetParentOfInlinedScope (const lldb::SBAddress &curr_frame_pc,
     77                              lldb::SBAddress &parent_frame_addr) const;
     78 
     79 
     80     bool
     81     GetDescription (lldb::SBStream &description);
     82 
     83 
     84     %pythoncode %{
     85         __swig_getmethods__["module"] = GetModule
     86         __swig_setmethods__["module"] = SetModule
     87         if _newclass: module = property(GetModule, SetModule, doc='''A read/write property that allows the getting/setting of the module (lldb.SBModule) in this symbol context.''')
     88 
     89         __swig_getmethods__["compile_unit"] = GetCompileUnit
     90         __swig_setmethods__["compile_unit"] = SetCompileUnit
     91         if _newclass: compile_unit = property(GetCompileUnit, SetCompileUnit, doc='''A read/write property that allows the getting/setting of the compile unit (lldb.SBCompileUnit) in this symbol context.''')
     92 
     93         __swig_getmethods__["function"] = GetFunction
     94         __swig_setmethods__["function"] = SetFunction
     95         if _newclass: function = property(GetFunction, SetFunction, doc='''A read/write property that allows the getting/setting of the function (lldb.SBFunction) in this symbol context.''')
     96 
     97         __swig_getmethods__["block"] = GetBlock
     98         __swig_setmethods__["block"] = SetBlock
     99         if _newclass: block = property(GetBlock, SetBlock, doc='''A read/write property that allows the getting/setting of the block (lldb.SBBlock) in this symbol context.''')
    100 
    101         __swig_getmethods__["symbol"] = GetSymbol
    102         __swig_setmethods__["symbol"] = SetSymbol
    103         if _newclass: symbol = property(GetSymbol, SetSymbol, doc='''A read/write property that allows the getting/setting of the symbol (lldb.SBSymbol) in this symbol context.''')
    104 
    105         __swig_getmethods__["line_entry"] = GetLineEntry
    106         __swig_setmethods__["line_entry"] = SetLineEntry
    107         if _newclass: line_entry = property(GetLineEntry, SetLineEntry, doc='''A read/write property that allows the getting/setting of the line entry (lldb.SBLineEntry) in this symbol context.''')
    108     %}
    109 
    110 };
    111 
    112 } // namespace lldb
    113