1 //===-- SBMemoryRegionInfo.cpp ----------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/API/SBDefines.h"
11 #include "lldb/API/SBError.h"
12 #include "lldb/API/SBMemoryRegionInfo.h"
13 #include "lldb/API/SBStream.h"
14 #include "lldb/Core/StreamString.h"
15 #include "lldb/Target/MemoryRegionInfo.h"
18 using namespace lldb_private;
21 SBMemoryRegionInfo::SBMemoryRegionInfo () :
22 m_opaque_ap (new MemoryRegionInfo())
26 SBMemoryRegionInfo::SBMemoryRegionInfo (const MemoryRegionInfo *lldb_object_ptr) :
27 m_opaque_ap (new MemoryRegionInfo())
30 ref() = *lldb_object_ptr;
33 SBMemoryRegionInfo::SBMemoryRegionInfo(const SBMemoryRegionInfo &rhs) :
34 m_opaque_ap (new MemoryRegionInfo())
39 const SBMemoryRegionInfo &
40 SBMemoryRegionInfo::operator = (const SBMemoryRegionInfo &rhs)
49 SBMemoryRegionInfo::~SBMemoryRegionInfo ()
54 SBMemoryRegionInfo::Clear()
60 SBMemoryRegionInfo::operator == (const SBMemoryRegionInfo &rhs) const
62 return ref() == rhs.ref();
66 SBMemoryRegionInfo::operator != (const SBMemoryRegionInfo &rhs) const
68 return ref() != rhs.ref();
72 SBMemoryRegionInfo::ref()
77 const MemoryRegionInfo &
78 SBMemoryRegionInfo::ref() const
84 SBMemoryRegionInfo::GetRegionBase () {
85 return m_opaque_ap->GetRange().GetRangeBase();
89 SBMemoryRegionInfo::GetRegionEnd () {
90 return m_opaque_ap->GetRange().GetRangeEnd();
94 SBMemoryRegionInfo::IsReadable () {
95 return m_opaque_ap->GetReadable() == MemoryRegionInfo::eYes;
99 SBMemoryRegionInfo::IsWritable () {
100 return m_opaque_ap->GetWritable() == MemoryRegionInfo::eYes;
104 SBMemoryRegionInfo::IsExecutable () {
105 return m_opaque_ap->GetExecutable() == MemoryRegionInfo::eYes;
109 SBMemoryRegionInfo::IsMapped () {
110 return m_opaque_ap->GetMapped() == MemoryRegionInfo::eYes;
114 SBMemoryRegionInfo::GetDescription (SBStream &description)
116 Stream &strm = description.ref();
117 const addr_t load_addr = m_opaque_ap->GetRange().base;
119 strm.Printf ("[0x%16.16" PRIx64 "-0x%16.16" PRIx64 " ", load_addr, load_addr + m_opaque_ap->GetRange().size);
120 strm.Printf (m_opaque_ap->GetReadable() ? "R" : "-");
121 strm.Printf (m_opaque_ap->GetWritable() ? "W" : "-");
122 strm.Printf (m_opaque_ap->GetExecutable() ? "X" : "-");