1 //===-- SWIG Interface for SBCompileUnit ------------------------*- 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 "Represents a compilation unit, or compiled source file.
14 
15 SBCompileUnit supports line entry iteration. For example,
16 
17     # Now get the SBSymbolContext from this frame.  We want everything. :-)
18     context = frame0.GetSymbolContext(lldb.eSymbolContextEverything)
19     ...
20 
21     compileUnit = context.GetCompileUnit()
22 
23     for lineEntry in compileUnit:
24         print 'line entry: %s:%d' % (str(lineEntry.GetFileSpec()),
25                                     lineEntry.GetLine())
26         print 'start addr: %s' % str(lineEntry.GetStartAddress())
27         print 'end   addr: %s' % str(lineEntry.GetEndAddress())
28 
29 produces:
30 
31 line entry: /Volumes/data/lldb/svn/trunk/test/python_api/symbol-context/main.c:20
32 start addr: a.out[0x100000d98]
33 end   addr: a.out[0x100000da3]
34 line entry: /Volumes/data/lldb/svn/trunk/test/python_api/symbol-context/main.c:21
35 start addr: a.out[0x100000da3]
36 end   addr: a.out[0x100000da9]
37 line entry: /Volumes/data/lldb/svn/trunk/test/python_api/symbol-context/main.c:22
38 start addr: a.out[0x100000da9]
39 end   addr: a.out[0x100000db6]
40 line entry: /Volumes/data/lldb/svn/trunk/test/python_api/symbol-context/main.c:23
41 start addr: a.out[0x100000db6]
42 end   addr: a.out[0x100000dbc]
43 ...
44 
45 See also SBSymbolContext and SBLineEntry"
46 ) SBCompileUnit;
47 class SBCompileUnit
48 {
49 public:
50 
51     SBCompileUnit ();
52 
53     SBCompileUnit (const lldb::SBCompileUnit &rhs);
54 
55     ~SBCompileUnit ();
56 
57     bool
58     IsValid () const;
59 
60     lldb::SBFileSpec
61     GetFileSpec () const;
62 
63     uint32_t
64     GetNumLineEntries () const;
65 
66     lldb::SBLineEntry
67     GetLineEntryAtIndex (uint32_t idx) const;
68 
69     uint32_t
70     FindLineEntryIndex (uint32_t start_idx,
71                         uint32_t line,
72                         lldb::SBFileSpec *inline_file_spec) const;
73 
74     uint32_t
75     FindLineEntryIndex (uint32_t start_idx,
76                         uint32_t line,
77                         lldb::SBFileSpec *inline_file_spec,
78 			bool exact) const;
79 
80     SBFileSpec
81     GetSupportFileAtIndex (uint32_t idx) const;
82 
83     uint32_t
84     GetNumSupportFiles () const;
85 
86     uint32_t
87     FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full);
88 
89     %feature("docstring", "
90      //------------------------------------------------------------------
91      /// Get all types matching \a type_mask from debug info in this
92      /// compile unit.
93      ///
94      /// @param[in] type_mask
95      ///    A bitfield that consists of one or more bits logically OR'ed
96      ///    together from the lldb::TypeClass enumeration. This allows
97      ///    you to request only structure types, or only class, struct
98      ///    and union types. Passing in lldb::eTypeClassAny will return
99      ///    all types found in the debug information for this compile
100      ///    unit.
101      ///
102      /// @return
103      ///    A list of types in this compile unit that match \a type_mask
104      //------------------------------------------------------------------
105      ") GetTypes;
106     lldb::SBTypeList
107     GetTypes (uint32_t type_mask = lldb::eTypeClassAny);
108 
109     bool
110     GetDescription (lldb::SBStream &description);
111 
112     bool
113     operator == (const lldb::SBCompileUnit &rhs) const;
114 
115     bool
116     operator != (const lldb::SBCompileUnit &rhs) const;
117 
118     %pythoncode %{
119         __swig_getmethods__["file"] = GetFileSpec
120         if _newclass: file = property(GetFileSpec, None, doc='''A read only property that returns the same result an lldb object that represents the source file (lldb.SBFileSpec) for the compile unit.''')
121 
122         __swig_getmethods__["num_line_entries"] = GetNumLineEntries
123         if _newclass: num_line_entries = property(GetNumLineEntries, None, doc='''A read only property that returns the number of line entries in a compile unit as an integer.''')
124     %}
125 };
126 
127 } // namespace lldb
128