1 //===-- SBCompileUnit.h -----------------------------------------*- 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 #ifndef LLDB_SBCompileUnit_h_
11 #define LLDB_SBCompileUnit_h_
12 
13 #include "lldb/API/SBDefines.h"
14 #include "lldb/API/SBFileSpec.h"
15 
16 namespace lldb {
17 
18 class SBCompileUnit
19 {
20 public:
21 
22     SBCompileUnit ();
23 
24     SBCompileUnit (const lldb::SBCompileUnit &rhs);
25 
26     ~SBCompileUnit ();
27 
28     const lldb::SBCompileUnit &
29     operator = (const lldb::SBCompileUnit &rhs);
30 
31     bool
32     IsValid () const;
33 
34     lldb::SBFileSpec
35     GetFileSpec () const;
36 
37     uint32_t
38     GetNumLineEntries () const;
39 
40     lldb::SBLineEntry
41     GetLineEntryAtIndex (uint32_t idx) const;
42 
43     uint32_t
44     FindLineEntryIndex (uint32_t start_idx,
45                         uint32_t line,
46                         lldb::SBFileSpec *inline_file_spec) const;
47 
48     uint32_t
49     FindLineEntryIndex (uint32_t start_idx,
50                         uint32_t line,
51                         lldb::SBFileSpec *inline_file_spec,
52                         bool exact) const;
53 
54     SBFileSpec
55     GetSupportFileAtIndex (uint32_t idx) const;
56 
57     uint32_t
58     GetNumSupportFiles () const;
59 
60     uint32_t
61     FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full);
62 
63     //------------------------------------------------------------------
64     /// Get all types matching \a type_mask from debug info in this
65     /// compile unit.
66     ///
67     /// @param[in] type_mask
68     ///    A bitfield that consists of one or more bits logically OR'ed
69     ///    together from the lldb::TypeClass enumeration. This allows
70     ///    you to request only structure types, or only class, struct
71     ///    and union types. Passing in lldb::eTypeClassAny will return
72     ///    all types found in the debug information for this compile
73     ///    unit.
74     ///
75     /// @return
76     ///    A list of types in this compile unit that match \a type_mask
77     //------------------------------------------------------------------
78     lldb::SBTypeList
79     GetTypes (uint32_t type_mask = lldb::eTypeClassAny);
80 
81     bool
82     operator == (const lldb::SBCompileUnit &rhs) const;
83 
84     bool
85     operator != (const lldb::SBCompileUnit &rhs) const;
86 
87     bool
88     GetDescription (lldb::SBStream &description);
89 
90 private:
91     friend class SBAddress;
92     friend class SBFrame;
93     friend class SBSymbolContext;
94     friend class SBModule;
95 
96     SBCompileUnit (lldb_private::CompileUnit *lldb_object_ptr);
97 
98     const lldb_private::CompileUnit *
99     operator->() const;
100 
101     const lldb_private::CompileUnit &
102     operator*() const;
103 
104     lldb_private::CompileUnit *
105     get ();
106 
107     void
108     reset (lldb_private::CompileUnit *lldb_object_ptr);
109 
110     lldb_private::CompileUnit *m_opaque_ptr;
111 };
112 
113 
114 } // namespace lldb
115 
116 #endif // LLDB_SBCompileUnit_h_
117