]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBCompileUnit.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / API / SBCompileUnit.h
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_