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