1 //===-- 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" 11 #include "lldb/API/SBAddress.h" 12 #include "lldb/API/SBFileSpec.h" 13 #include "lldb/API/SBFileSpec.h" 14 #include "lldb/Core/Module.h" 15 16 using namespace lldb; 17 18 19 SBModule::SBModule () : 20 m_opaque_sp () 21 { 22 } 23 24 SBModule::SBModule (const lldb::ModuleSP& module_sp) : 25 m_opaque_sp (module_sp) 26 { 27 } 28 29 SBModule::~SBModule () 30 { 31 } 32 33 bool 34 SBModule::IsValid () const 35 { 36 return m_opaque_sp.get() != NULL; 37 } 38 39 SBFileSpec 40 SBModule::GetFileSpec () const 41 { 42 SBFileSpec file_spec; 43 if (m_opaque_sp) 44 file_spec.SetFileSpec(m_opaque_sp->GetFileSpec()); 45 return file_spec; 46 } 47 48 const uint8_t * 49 SBModule::GetUUIDBytes () const 50 { 51 if (m_opaque_sp) 52 return (const uint8_t *)m_opaque_sp->GetUUID().GetBytes(); 53 return NULL; 54 } 55 56 57 bool 58 SBModule::operator == (const SBModule &rhs) const 59 { 60 if (m_opaque_sp) 61 return m_opaque_sp.get() == rhs.m_opaque_sp.get(); 62 return false; 63 } 64 65 bool 66 SBModule::operator != (const SBModule &rhs) const 67 { 68 if (m_opaque_sp) 69 return m_opaque_sp.get() != rhs.m_opaque_sp.get(); 70 return false; 71 } 72 73 lldb::ModuleSP & 74 SBModule::operator *() 75 { 76 return m_opaque_sp; 77 } 78 79 lldb_private::Module * 80 SBModule::operator ->() 81 { 82 return m_opaque_sp.get(); 83 } 84 85 const lldb_private::Module * 86 SBModule::operator ->() const 87 { 88 return m_opaque_sp.get(); 89 } 90 91 lldb_private::Module * 92 SBModule::get() 93 { 94 return m_opaque_sp.get(); 95 } 96 97 const lldb_private::Module * 98 SBModule::get() const 99 { 100 return m_opaque_sp.get(); 101 } 102 103 104 void 105 SBModule::SetModule (const lldb::ModuleSP& module_sp) 106 { 107 m_opaque_sp = module_sp; 108 } 109 110 111 bool 112 SBModule::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 121 SBSymbolContext 122 SBModule::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 130