]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/source/API/SBModuleSpec.cpp
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / source / API / SBModuleSpec.cpp
1 //===-- SBModuleSpec.cpp ----------------------------------------*- 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 #include "lldb/API/SBModuleSpec.h"
11 #include "lldb/API/SBStream.h"
12 #include "lldb/Core/Module.h"
13 #include "lldb/Core/ModuleSpec.h"
14 #include "lldb/Core/Stream.h"
15 #include "lldb/Host/Host.h"
16 #include "lldb/Symbol/ObjectFile.h"
17
18 using namespace lldb;
19 using namespace lldb_private;
20
21
22 SBModuleSpec::SBModuleSpec () :
23     m_opaque_ap (new lldb_private::ModuleSpec())
24 {
25 }
26
27 SBModuleSpec::SBModuleSpec(const SBModuleSpec &rhs) :
28     m_opaque_ap (new lldb_private::ModuleSpec(*rhs.m_opaque_ap))
29 {
30 }
31
32 const SBModuleSpec &
33 SBModuleSpec::operator = (const SBModuleSpec &rhs)
34 {
35     if (this != &rhs)
36         *m_opaque_ap = *(rhs.m_opaque_ap);
37     return *this;
38 }
39
40 SBModuleSpec::~SBModuleSpec ()
41 {
42 }
43
44 bool
45 SBModuleSpec::IsValid () const
46 {
47     return *m_opaque_ap;
48 }
49
50 void
51 SBModuleSpec::Clear()
52 {
53     m_opaque_ap->Clear();
54 }
55
56 SBFileSpec
57 SBModuleSpec::GetFileSpec ()
58 {
59     SBFileSpec sb_spec(m_opaque_ap->GetFileSpec());
60     return sb_spec;
61 }
62
63 void
64 SBModuleSpec::SetFileSpec (const lldb::SBFileSpec &sb_spec)
65 {
66     m_opaque_ap->GetFileSpec() = *sb_spec;
67 }
68
69 lldb::SBFileSpec
70 SBModuleSpec::GetPlatformFileSpec ()
71 {
72     return SBFileSpec(m_opaque_ap->GetPlatformFileSpec());
73 }
74
75 void
76 SBModuleSpec::SetPlatformFileSpec (const lldb::SBFileSpec &sb_spec)
77 {
78     m_opaque_ap->GetPlatformFileSpec() = *sb_spec;
79 }
80
81 lldb::SBFileSpec
82 SBModuleSpec::GetSymbolFileSpec ()
83 {
84     return SBFileSpec(m_opaque_ap->GetSymbolFileSpec());
85 }
86
87 void
88 SBModuleSpec::SetSymbolFileSpec (const lldb::SBFileSpec &sb_spec)
89 {
90     m_opaque_ap->GetSymbolFileSpec() = *sb_spec;
91 }
92
93 const char *
94 SBModuleSpec::GetObjectName ()
95 {
96     return m_opaque_ap->GetObjectName().GetCString();
97 }
98
99 void
100 SBModuleSpec::SetObjectName (const char *name)
101 {
102     m_opaque_ap->GetObjectName().SetCString(name);
103 }
104
105 const char *
106 SBModuleSpec::GetTriple ()
107 {
108     std::string triple (m_opaque_ap->GetArchitecture().GetTriple().str());
109     // Unique the string so we don't run into ownership issues since
110     // the const strings put the string into the string pool once and
111     // the strings never comes out
112     ConstString const_triple (triple.c_str());
113     return const_triple.GetCString();
114 }
115
116 void
117 SBModuleSpec::SetTriple (const char *triple)
118 {
119     m_opaque_ap->GetArchitecture().SetTriple(triple);
120 }
121
122 const uint8_t *
123 SBModuleSpec::GetUUIDBytes ()
124 {
125     return (const uint8_t *)m_opaque_ap->GetUUID().GetBytes();
126 }
127
128 size_t
129 SBModuleSpec::GetUUIDLength ()
130 {
131     return m_opaque_ap->GetUUID().GetByteSize();
132 }
133
134 bool
135 SBModuleSpec::SetUUIDBytes (const uint8_t *uuid, size_t uuid_len)
136 {
137     return m_opaque_ap->GetUUID().SetBytes(uuid, uuid_len);
138 }
139
140 bool
141 SBModuleSpec::GetDescription (lldb::SBStream &description)
142 {
143     m_opaque_ap->Dump (description.ref());
144     return true;
145 }
146
147 SBModuleSpecList::SBModuleSpecList() :
148     m_opaque_ap(new ModuleSpecList())
149 {
150     
151 }
152
153 SBModuleSpecList::SBModuleSpecList (const SBModuleSpecList &rhs) :
154     m_opaque_ap(new ModuleSpecList(*rhs.m_opaque_ap))
155 {
156     
157 }
158
159 SBModuleSpecList &
160 SBModuleSpecList::operator = (const SBModuleSpecList &rhs)
161 {
162     if (this != &rhs)
163         *m_opaque_ap = *rhs.m_opaque_ap;
164     return *this;
165 }
166
167 SBModuleSpecList::~SBModuleSpecList()
168 {
169     
170 }
171
172 SBModuleSpecList
173 SBModuleSpecList::GetModuleSpecifications (const char *path)
174 {
175     SBModuleSpecList specs;
176     FileSpec file_spec(path, true);
177     Host::ResolveExecutableInBundle(file_spec);
178     ObjectFile::GetModuleSpecifications(file_spec, 0, 0, *specs.m_opaque_ap);
179     return specs;
180 }
181
182 void
183 SBModuleSpecList::Append (const SBModuleSpec &spec)
184 {
185     m_opaque_ap->Append (*spec.m_opaque_ap);
186 }
187
188 void
189 SBModuleSpecList::Append (const SBModuleSpecList &spec_list)
190 {
191     m_opaque_ap->Append (*spec_list.m_opaque_ap);
192 }
193
194 size_t
195 SBModuleSpecList::GetSize()
196 {
197     return m_opaque_ap->GetSize();
198 }
199
200 SBModuleSpec
201 SBModuleSpecList::GetSpecAtIndex (size_t i)
202 {
203     SBModuleSpec sb_module_spec;
204     m_opaque_ap->GetModuleSpecAtIndex(i, *sb_module_spec.m_opaque_ap);
205     return sb_module_spec;
206 }
207
208 SBModuleSpec
209 SBModuleSpecList::FindFirstMatchingSpec (const SBModuleSpec &match_spec)
210 {
211     SBModuleSpec sb_module_spec;
212     m_opaque_ap->FindMatchingModuleSpec(*match_spec.m_opaque_ap, *sb_module_spec.m_opaque_ap);
213     return sb_module_spec;
214 }
215
216 SBModuleSpecList
217 SBModuleSpecList::FindMatchingSpecs (const SBModuleSpec &match_spec)
218 {
219     SBModuleSpecList specs;
220     m_opaque_ap->FindMatchingModuleSpecs(*match_spec.m_opaque_ap, *specs.m_opaque_ap);
221     return specs;
222     
223 }
224
225 bool
226 SBModuleSpecList::GetDescription (lldb::SBStream &description)
227 {
228     m_opaque_ap->Dump (description.ref());
229     return true;
230 }