brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 5834ebe Raw
97 lines · cpp
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-exception6//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(rhs.m_opaque_up);33}34 35SBAddressRange::SBAddressRange(lldb::SBAddress addr, lldb::addr_t byte_size)36    : m_opaque_up(std::make_unique<AddressRange>(addr.ref(), 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(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.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(&description.ref(), 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