1 //===-- 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"
11 #include "lldb/Symbol/SymbolContext.h"
12 
13 using namespace lldb;
14 using namespace lldb_private;
15 
16 SBSymbolContextList::SBSymbolContextList () :
17     m_opaque_ap ()
18 {
19 }
20 
21 SBSymbolContextList::SBSymbolContextList (const SBSymbolContextList& rhs) :
22     m_opaque_ap ()
23 {
24     if (rhs.IsValid())
25         *m_opaque_ap = *rhs.m_opaque_ap;
26 }
27 
28 SBSymbolContextList::~SBSymbolContextList ()
29 {
30 }
31 
32 const SBSymbolContextList &
33 SBSymbolContextList::operator = (const SBSymbolContextList &rhs)
34 {
35     if (this != &rhs)
36     {
37         if (rhs.IsValid())
38             m_opaque_ap.reset (new lldb_private::SymbolContextList(*rhs.m_opaque_ap.get()));
39     }
40     return *this;
41 }
42 
43 uint32_t
44 SBSymbolContextList::GetSize() const
45 {
46     if (m_opaque_ap.get())
47         return m_opaque_ap->GetSize();
48     return 0;
49 }
50 
51 SBSymbolContext
52 SBSymbolContextList::GetContextAtIndex (uint32_t idx)
53 {
54     SBSymbolContext sb_sc;
55     if (m_opaque_ap.get())
56     {
57         SymbolContext sc;
58         if (m_opaque_ap->GetContextAtIndex (idx, sc))
59         {
60             sb_sc.SetSymbolContext(&sc);
61         }
62     }
63     return sb_sc;
64 }
65 
66 
67 bool
68 SBSymbolContextList::IsValid () const
69 {
70     return m_opaque_ap.get() != NULL;
71 }
72 
73 
74 
75 lldb_private::SymbolContextList*
76 SBSymbolContextList::operator->() const
77 {
78     return m_opaque_ap.get();
79 }
80 
81 
82 lldb_private::SymbolContextList&
83 SBSymbolContextList::operator*() const
84 {
85     assert (m_opaque_ap.get());
86     return *m_opaque_ap.get();
87 }
88 
89 
90 
91 
92