brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · baa558c Raw
108 lines · cpp
1//===-- SBSymbolContextList.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/SBSymbolContextList.h"10#include "Utils.h"11#include "lldb/API/SBStream.h"12#include "lldb/Symbol/SymbolContext.h"13#include "lldb/Utility/Instrumentation.h"14 15using namespace lldb;16using namespace lldb_private;17 18SBSymbolContextList::SBSymbolContextList()19    : m_opaque_up(new SymbolContextList()) {20  LLDB_INSTRUMENT_VA(this);21}22 23SBSymbolContextList::SBSymbolContextList(const SBSymbolContextList &rhs) {24  LLDB_INSTRUMENT_VA(this, rhs);25 26  m_opaque_up = clone(rhs.m_opaque_up);27}28 29SBSymbolContextList::~SBSymbolContextList() = default;30 31const SBSymbolContextList &SBSymbolContextList::32operator=(const SBSymbolContextList &rhs) {33  LLDB_INSTRUMENT_VA(this, rhs);34 35  if (this != &rhs)36    m_opaque_up = clone(rhs.m_opaque_up);37  return *this;38}39 40uint32_t SBSymbolContextList::GetSize() const {41  LLDB_INSTRUMENT_VA(this);42 43  if (m_opaque_up)44    return m_opaque_up->GetSize();45  return 0;46}47 48SBSymbolContext SBSymbolContextList::GetContextAtIndex(uint32_t idx) {49  LLDB_INSTRUMENT_VA(this, idx);50 51  SBSymbolContext sb_sc;52  if (m_opaque_up) {53    SymbolContext sc;54    if (m_opaque_up->GetContextAtIndex(idx, sc))55      sb_sc = sc;56  }57  return sb_sc;58}59 60void SBSymbolContextList::Clear() {61  LLDB_INSTRUMENT_VA(this);62 63  if (m_opaque_up)64    m_opaque_up->Clear();65}66 67void SBSymbolContextList::Append(SBSymbolContext &sc) {68  LLDB_INSTRUMENT_VA(this, sc);69 70  if (sc.IsValid() && m_opaque_up.get())71    m_opaque_up->Append(*sc);72}73 74void SBSymbolContextList::Append(SBSymbolContextList &sc_list) {75  LLDB_INSTRUMENT_VA(this, sc_list);76 77  if (sc_list.IsValid() && m_opaque_up.get())78    m_opaque_up->Append(*sc_list);79}80 81bool SBSymbolContextList::IsValid() const {82  LLDB_INSTRUMENT_VA(this);83  return this->operator bool();84}85SBSymbolContextList::operator bool() const {86  LLDB_INSTRUMENT_VA(this);87 88  return m_opaque_up != nullptr;89}90 91lldb_private::SymbolContextList *SBSymbolContextList::operator->() const {92  return m_opaque_up.get();93}94 95lldb_private::SymbolContextList &SBSymbolContextList::operator*() const {96  assert(m_opaque_up.get());97  return *m_opaque_up;98}99 100bool SBSymbolContextList::GetDescription(lldb::SBStream &description) {101  LLDB_INSTRUMENT_VA(this, description);102 103  Stream &strm = description.ref();104  if (m_opaque_up)105    m_opaque_up->GetDescription(&strm, lldb::eDescriptionLevelFull, nullptr);106  return true;107}108