1254721Semaste//===-- SBSymbolContextList.cpp ---------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#include "lldb/API/SBSymbolContextList.h"
11254721Semaste#include "lldb/API/SBStream.h"
12254721Semaste#include "lldb/Symbol/SymbolContext.h"
13254721Semaste
14254721Semasteusing namespace lldb;
15254721Semasteusing namespace lldb_private;
16254721Semaste
17254721SemasteSBSymbolContextList::SBSymbolContextList () :
18254721Semaste    m_opaque_ap (new SymbolContextList())
19254721Semaste{
20254721Semaste}
21254721Semaste
22254721SemasteSBSymbolContextList::SBSymbolContextList (const SBSymbolContextList& rhs) :
23254721Semaste    m_opaque_ap (new SymbolContextList(*rhs.m_opaque_ap))
24254721Semaste{
25254721Semaste}
26254721Semaste
27254721SemasteSBSymbolContextList::~SBSymbolContextList ()
28254721Semaste{
29254721Semaste}
30254721Semaste
31254721Semasteconst SBSymbolContextList &
32254721SemasteSBSymbolContextList::operator = (const SBSymbolContextList &rhs)
33254721Semaste{
34254721Semaste    if (this != &rhs)
35254721Semaste    {
36254721Semaste        *m_opaque_ap = *rhs.m_opaque_ap;
37254721Semaste    }
38254721Semaste    return *this;
39254721Semaste}
40254721Semaste
41254721Semasteuint32_t
42254721SemasteSBSymbolContextList::GetSize() const
43254721Semaste{
44254721Semaste    if (m_opaque_ap.get())
45254721Semaste        return m_opaque_ap->GetSize();
46254721Semaste    return 0;
47254721Semaste}
48254721Semaste
49254721SemasteSBSymbolContext
50254721SemasteSBSymbolContextList::GetContextAtIndex (uint32_t idx)
51254721Semaste{
52254721Semaste    SBSymbolContext sb_sc;
53254721Semaste    if (m_opaque_ap.get())
54254721Semaste    {
55254721Semaste        SymbolContext sc;
56254721Semaste        if (m_opaque_ap->GetContextAtIndex (idx, sc))
57254721Semaste        {
58254721Semaste            sb_sc.SetSymbolContext(&sc);
59254721Semaste        }
60254721Semaste    }
61254721Semaste    return sb_sc;
62254721Semaste}
63254721Semaste
64254721Semastevoid
65254721SemasteSBSymbolContextList::Clear()
66254721Semaste{
67254721Semaste    if (m_opaque_ap.get())
68254721Semaste        m_opaque_ap->Clear();
69254721Semaste}
70254721Semaste
71254721Semastevoid
72254721SemasteSBSymbolContextList::Append(SBSymbolContext &sc)
73254721Semaste{
74254721Semaste    if (sc.IsValid() && m_opaque_ap.get())
75254721Semaste        m_opaque_ap->Append(*sc);
76254721Semaste}
77254721Semaste
78254721Semastevoid
79254721SemasteSBSymbolContextList::Append(SBSymbolContextList &sc_list)
80254721Semaste{
81254721Semaste    if (sc_list.IsValid() && m_opaque_ap.get())
82254721Semaste        m_opaque_ap->Append(*sc_list);
83254721Semaste}
84254721Semaste
85254721Semaste
86254721Semastebool
87254721SemasteSBSymbolContextList::IsValid () const
88254721Semaste{
89254721Semaste    return m_opaque_ap.get() != NULL;
90254721Semaste}
91254721Semaste
92254721Semaste
93254721Semaste
94254721Semastelldb_private::SymbolContextList*
95254721SemasteSBSymbolContextList::operator->() const
96254721Semaste{
97254721Semaste    return m_opaque_ap.get();
98254721Semaste}
99254721Semaste
100254721Semaste
101254721Semastelldb_private::SymbolContextList&
102254721SemasteSBSymbolContextList::operator*() const
103254721Semaste{
104254721Semaste    assert (m_opaque_ap.get());
105254721Semaste    return *m_opaque_ap.get();
106254721Semaste}
107254721Semaste
108254721Semastebool
109254721SemasteSBSymbolContextList::GetDescription (lldb::SBStream &description)
110254721Semaste{
111254721Semaste    Stream &strm = description.ref();
112254721Semaste    if (m_opaque_ap.get())
113254721Semaste        m_opaque_ap->GetDescription (&strm, lldb::eDescriptionLevelFull, NULL);
114254721Semaste    return true;
115254721Semaste}
116254721Semaste
117254721Semaste
118