blob: e338101c4e9f02e5b95ab4dd856d7e59cef45cda [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"
14#include "lldb/Core/Module.h"
15
16using namespace lldb;
17
18
19SBModule::SBModule () :
Greg Clayton63094e02010-06-23 01:19:29 +000020 m_opaque_sp ()
Chris Lattner24943d22010-06-08 16:52:24 +000021{
22}
23
24SBModule::SBModule (const lldb::ModuleSP& module_sp) :
Greg Clayton63094e02010-06-23 01:19:29 +000025 m_opaque_sp (module_sp)
Chris Lattner24943d22010-06-08 16:52:24 +000026{
27}
28
29SBModule::~SBModule ()
30{
31}
32
33bool
34SBModule::IsValid () const
35{
Greg Clayton63094e02010-06-23 01:19:29 +000036 return m_opaque_sp.get() != NULL;
Chris Lattner24943d22010-06-08 16:52:24 +000037}
38
39SBFileSpec
40SBModule::GetFileSpec () const
41{
42 SBFileSpec file_spec;
Greg Clayton63094e02010-06-23 01:19:29 +000043 if (m_opaque_sp)
44 file_spec.SetFileSpec(m_opaque_sp->GetFileSpec());
Chris Lattner24943d22010-06-08 16:52:24 +000045 return file_spec;
46}
47
48const uint8_t *
49SBModule::GetUUIDBytes () const
50{
Greg Clayton63094e02010-06-23 01:19:29 +000051 if (m_opaque_sp)
52 return (const uint8_t *)m_opaque_sp->GetUUID().GetBytes();
Chris Lattner24943d22010-06-08 16:52:24 +000053 return NULL;
54}
55
56
57bool
58SBModule::operator == (const SBModule &rhs) const
59{
Greg Clayton63094e02010-06-23 01:19:29 +000060 if (m_opaque_sp)
61 return m_opaque_sp.get() == rhs.m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000062 return false;
63}
64
65bool
66SBModule::operator != (const SBModule &rhs) const
67{
Greg Clayton63094e02010-06-23 01:19:29 +000068 if (m_opaque_sp)
69 return m_opaque_sp.get() != rhs.m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000070 return false;
71}
72
73lldb::ModuleSP &
74SBModule::operator *()
75{
Greg Clayton63094e02010-06-23 01:19:29 +000076 return m_opaque_sp;
Chris Lattner24943d22010-06-08 16:52:24 +000077}
78
79lldb_private::Module *
80SBModule::operator ->()
81{
Greg Clayton63094e02010-06-23 01:19:29 +000082 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000083}
84
85const lldb_private::Module *
86SBModule::operator ->() const
87{
Greg Clayton63094e02010-06-23 01:19:29 +000088 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000089}
90
91lldb_private::Module *
92SBModule::get()
93{
Greg Clayton63094e02010-06-23 01:19:29 +000094 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +000095}
96
97const lldb_private::Module *
98SBModule::get() const
99{
Greg Clayton63094e02010-06-23 01:19:29 +0000100 return m_opaque_sp.get();
Chris Lattner24943d22010-06-08 16:52:24 +0000101}
102
103
104void
105SBModule::SetModule (const lldb::ModuleSP& module_sp)
106{
Greg Clayton63094e02010-06-23 01:19:29 +0000107 m_opaque_sp = module_sp;
Chris Lattner24943d22010-06-08 16:52:24 +0000108}
109
Greg Clayton466f6c42010-09-10 18:31:35 +0000110
111bool
112SBModule::ResolveFileAddress (lldb::addr_t vm_addr, SBAddress& addr)
113{
114 if (m_opaque_sp)
115 return m_opaque_sp->ResolveFileAddress (vm_addr, *addr);
116
117 addr->Clear();
118 return false;
119}
120
121SBSymbolContext
122SBModule::ResolveSymbolContextForAddress (const SBAddress& addr, uint32_t resolve_scope)
123{
124 SBSymbolContext sb_sc;
125 if (m_opaque_sp && addr.IsValid())
126 m_opaque_sp->ResolveSymbolContextForAddress (*addr, resolve_scope, *sb_sc);
127 return sb_sc;
128}
129