blob: 8cc29c3422d03c8e1e3b8d136fd52430124a0056 [file] [log] [blame]
Greg Clayton09960032010-09-10 18:31:35 +00001//===-- SBSymbolContextList.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/SBSymbolContextList.h"
Greg Clayton5569e642012-02-06 01:44:54 +000011#include "lldb/API/SBStream.h"
Greg Clayton09960032010-09-10 18:31:35 +000012#include "lldb/Symbol/SymbolContext.h"
13
14using namespace lldb;
15using namespace lldb_private;
16
Kate Stoneb9c1b512016-09-06 20:57:50 +000017SBSymbolContextList::SBSymbolContextList()
18 : m_opaque_ap(new SymbolContextList()) {}
19
20SBSymbolContextList::SBSymbolContextList(const SBSymbolContextList &rhs)
21 : m_opaque_ap(new SymbolContextList(*rhs.m_opaque_ap)) {}
22
23SBSymbolContextList::~SBSymbolContextList() {}
24
25const SBSymbolContextList &SBSymbolContextList::
26operator=(const SBSymbolContextList &rhs) {
27 if (this != &rhs) {
28 *m_opaque_ap = *rhs.m_opaque_ap;
29 }
30 return *this;
Greg Clayton09960032010-09-10 18:31:35 +000031}
32
Kate Stoneb9c1b512016-09-06 20:57:50 +000033uint32_t SBSymbolContextList::GetSize() const {
34 if (m_opaque_ap.get())
35 return m_opaque_ap->GetSize();
36 return 0;
Greg Clayton09960032010-09-10 18:31:35 +000037}
38
Kate Stoneb9c1b512016-09-06 20:57:50 +000039SBSymbolContext SBSymbolContextList::GetContextAtIndex(uint32_t idx) {
40 SBSymbolContext sb_sc;
41 if (m_opaque_ap.get()) {
42 SymbolContext sc;
43 if (m_opaque_ap->GetContextAtIndex(idx, sc)) {
44 sb_sc.SetSymbolContext(&sc);
Greg Clayton09960032010-09-10 18:31:35 +000045 }
Kate Stoneb9c1b512016-09-06 20:57:50 +000046 }
47 return sb_sc;
Greg Clayton09960032010-09-10 18:31:35 +000048}
49
Kate Stoneb9c1b512016-09-06 20:57:50 +000050void SBSymbolContextList::Clear() {
51 if (m_opaque_ap.get())
52 m_opaque_ap->Clear();
Greg Clayton09960032010-09-10 18:31:35 +000053}
54
Kate Stoneb9c1b512016-09-06 20:57:50 +000055void SBSymbolContextList::Append(SBSymbolContext &sc) {
56 if (sc.IsValid() && m_opaque_ap.get())
57 m_opaque_ap->Append(*sc);
Greg Clayton09960032010-09-10 18:31:35 +000058}
59
Kate Stoneb9c1b512016-09-06 20:57:50 +000060void SBSymbolContextList::Append(SBSymbolContextList &sc_list) {
61 if (sc_list.IsValid() && m_opaque_ap.get())
62 m_opaque_ap->Append(*sc_list);
Greg Claytonfe356d32011-06-21 01:34:41 +000063}
64
Kate Stoneb9c1b512016-09-06 20:57:50 +000065bool SBSymbolContextList::IsValid() const { return m_opaque_ap.get() != NULL; }
66
67lldb_private::SymbolContextList *SBSymbolContextList::operator->() const {
68 return m_opaque_ap.get();
Greg Clayton5569e642012-02-06 01:44:54 +000069}
70
Kate Stoneb9c1b512016-09-06 20:57:50 +000071lldb_private::SymbolContextList &SBSymbolContextList::operator*() const {
72 assert(m_opaque_ap.get());
73 return *m_opaque_ap.get();
Greg Clayton5569e642012-02-06 01:44:54 +000074}
75
Kate Stoneb9c1b512016-09-06 20:57:50 +000076bool SBSymbolContextList::GetDescription(lldb::SBStream &description) {
77 Stream &strm = description.ref();
78 if (m_opaque_ap.get())
79 m_opaque_ap->GetDescription(&strm, lldb::eDescriptionLevelFull, NULL);
80 return true;
Greg Clayton09960032010-09-10 18:31:35 +000081}