blob: b59a6002925102855b831ebb5f06a052c6dd5ee1 [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- SBModule.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/SBModule.h"
Greg Clayton466f6c42010-09-10 18:31:35 +000011#include "lldb/API/SBAddress.h"
12#include "lldb/API/SBFileSpec.h"
Chris Lattner24943d22010-06-08 16:52:24 +000013#include "lldb/API/SBFileSpec.h"
Caroline Tice98f930f2010-09-20 05:20:02 +000014#include "lldb/API/SBStream.h"
Chris Lattner24943d22010-06-08 16:52:24 +000015#include "lldb/Core/Module.h"
16
17using namespace lldb;
18
19
20SBModule::SBModule () :
Greg Clayton63094e02010-06-23 01:19:29 +000021 m_opaque_sp ()
Chris Lattner24943d22010-06-08 16:52:24 +000022{
23}
24
25SBModule::SBModule (const lldb::ModuleSP& module_sp) :
Greg Clayton63094e02010-06-23 01:19:29 +000026 m_opaque_sp (module_sp)
Chris Lattner24943d22010-06-08 16:52:24 +000027{
28}
29
30SBModule::~SBModule ()
31{
32}
33
34bool
35SBModule::IsValid () const
36{
Greg Clayton63094e02010-06-23 01:19:29 +000037 return m_opaque_sp.get() != NULL;
Chris Lattner24943d22010-06-08 16:52:24 +000038}
39
40SBFileSpec
41SBModule::GetFileSpec () const
42{
43 SBFileSpec file_spec;
Greg Clayton63094e02010-06-23 01:19:29 +000044 if (m_opaque_sp)
45 file_spec.SetFileSpec(m_opaque_sp->GetFileSpec());
Chris Lattner24943d22010-06-08 16:52:24 +000046 return file_spec;
47}
48
49const uint8_t *
50SBModule::GetUUIDBytes () const
51{
Greg Clayton63094e02010-06-23 01:19:29 +000052 if (m_opaque_sp)
53 return (const uint8_t *)m_opaque_sp->GetUUID().GetBytes();
Chris Lattner24943d22010-06-08 16:52:24 +000054 return NULL;
55}
56
57
58bool
59SBModule::operator == (const SBModule &rhs) const
60{
Greg Clayton63094e02010-06-23 01:19:29 +000061 if (m_opaque_sp)
62 return m_opaque_sp.get() == rhs.m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000063 return false;
64}
65
66bool
67SBModule::operator != (const SBModule &rhs) const
68{
Greg Clayton63094e02010-06-23 01:19:29 +000069 if (m_opaque_sp)
70 return m_opaque_sp.get() != rhs.m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000071 return false;
72}
73
74lldb::ModuleSP &
75SBModule::operator *()
76{
Greg Clayton63094e02010-06-23 01:19:29 +000077 return m_opaque_sp;
Chris Lattner24943d22010-06-08 16:52:24 +000078}
79
80lldb_private::Module *
81SBModule::operator ->()
82{
Greg Clayton63094e02010-06-23 01:19:29 +000083 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000084}
85
86const lldb_private::Module *
87SBModule::operator ->() const
88{
Greg Clayton63094e02010-06-23 01:19:29 +000089 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000090}
91
92lldb_private::Module *
93SBModule::get()
94{
Greg Clayton63094e02010-06-23 01:19:29 +000095 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000096}
97
98const lldb_private::Module *
99SBModule::get() const
100{
Greg Clayton63094e02010-06-23 01:19:29 +0000101 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +0000102}
103
104
105void
106SBModule::SetModule (const lldb::ModuleSP& module_sp)
107{
Greg Clayton63094e02010-06-23 01:19:29 +0000108 m_opaque_sp = module_sp;
Chris Lattner24943d22010-06-08 16:52:24 +0000109}
110
Greg Clayton466f6c42010-09-10 18:31:35 +0000111
112bool
113SBModule::ResolveFileAddress (lldb::addr_t vm_addr, SBAddress& addr)
114{
115 if (m_opaque_sp)
116 return m_opaque_sp->ResolveFileAddress (vm_addr, *addr);
117
118 addr->Clear();
119 return false;
120}
121
122SBSymbolContext
123SBModule::ResolveSymbolContextForAddress (const SBAddress& addr, uint32_t resolve_scope)
124{
125 SBSymbolContext sb_sc;
126 if (m_opaque_sp && addr.IsValid())
127 m_opaque_sp->ResolveSymbolContextForAddress (*addr, resolve_scope, *sb_sc);
128 return sb_sc;
129}
130
Caroline Tice98f930f2010-09-20 05:20:02 +0000131bool
132SBModule::GetDescription (SBStream &description)
133{
134 if (m_opaque_sp)
135 {
Caroline Ticee49ec182010-09-22 23:01:29 +0000136 description.ref();
Caroline Tice98f930f2010-09-20 05:20:02 +0000137 m_opaque_sp->Dump (description.get());
138 }
139 else
140 description.Printf ("No value");
141
142 return true;
143}