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