1//===-- SBAddressRange.cpp ------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/API/SBAddressRange.h"
10#include "Utils.h"
11#include "lldb/API/SBAddress.h"
12#include "lldb/API/SBStream.h"
13#include "lldb/API/SBTarget.h"
14#include "lldb/Core/AddressRange.h"
15#include "lldb/Core/Section.h"
16#include "lldb/Utility/Instrumentation.h"
17#include "lldb/Utility/Stream.h"
18#include <cstddef>
19#include <memory>
20
21using namespace lldb;
22using namespace lldb_private;
23
24SBAddressRange::SBAddressRange()
25 : m_opaque_up(std::make_unique<AddressRange>()) {
26 LLDB_INSTRUMENT_VA(this);
27}
28
29SBAddressRange::SBAddressRange(const SBAddressRange &rhs) {
30 LLDB_INSTRUMENT_VA(this, rhs);
31
32 m_opaque_up = clone(src: rhs.m_opaque_up);
33}
34
35SBAddressRange::SBAddressRange(lldb::SBAddress addr, lldb::addr_t byte_size)
36 : m_opaque_up(std::make_unique<AddressRange>(args&: addr.ref(), args&: byte_size)) {
37 LLDB_INSTRUMENT_VA(this, addr, byte_size);
38}
39
40SBAddressRange::~SBAddressRange() = default;
41
42const SBAddressRange &SBAddressRange::operator=(const SBAddressRange &rhs) {
43 LLDB_INSTRUMENT_VA(this, rhs);
44
45 if (this != &rhs)
46 m_opaque_up = clone(src: rhs.m_opaque_up);
47 return *this;
48}
49
50bool SBAddressRange::operator==(const SBAddressRange &rhs) {
51 LLDB_INSTRUMENT_VA(this, rhs);
52
53 return ref().operator==(rhs: rhs.ref());
54}
55
56bool SBAddressRange::operator!=(const SBAddressRange &rhs) {
57 LLDB_INSTRUMENT_VA(this, rhs);
58
59 return !(*this == rhs);
60}
61
62void SBAddressRange::Clear() {
63 LLDB_INSTRUMENT_VA(this);
64
65 ref().Clear();
66}
67
68bool SBAddressRange::IsValid() const {
69 LLDB_INSTRUMENT_VA(this);
70
71 return ref().IsValid();
72}
73
74lldb::SBAddress SBAddressRange::GetBaseAddress() const {
75 LLDB_INSTRUMENT_VA(this);
76
77 return lldb::SBAddress(ref().GetBaseAddress());
78}
79
80lldb::addr_t SBAddressRange::GetByteSize() const {
81 LLDB_INSTRUMENT_VA(this);
82
83 return ref().GetByteSize();
84}
85
86bool SBAddressRange::GetDescription(SBStream &description,
87 const SBTarget target) {
88 LLDB_INSTRUMENT_VA(this, description, target);
89
90 return ref().GetDescription(s: &description.ref(), target: target.GetSP().get());
91}
92
93lldb_private::AddressRange &SBAddressRange::ref() const {
94 assert(m_opaque_up && "opaque pointer must always be valid");
95 return *m_opaque_up;
96}
97

source code of lldb/source/API/SBAddressRange.cpp