1466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton//===-- SBSymbolContextList.cpp ---------------------------------*- C++ -*-===// 2466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// 3466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// The LLVM Compiler Infrastructure 4466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// 5466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// This file is distributed under the University of Illinois Open Source 6466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// License. See LICENSE.TXT for details. 7466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton// 8466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton//===----------------------------------------------------------------------===// 9466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 10466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton#include "lldb/API/SBSymbolContextList.h" 117dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton#include "lldb/API/SBStream.h" 12466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton#include "lldb/Symbol/SymbolContext.h" 13466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 14466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonusing namespace lldb; 15466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonusing namespace lldb_private; 16466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 17466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::SBSymbolContextList () : 184ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton m_opaque_ap (new SymbolContextList()) 19466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 20466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 21466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 22466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::SBSymbolContextList (const SBSymbolContextList& rhs) : 234ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton m_opaque_ap (new SymbolContextList(*rhs.m_opaque_ap)) 24466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 25466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 26466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 27466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::~SBSymbolContextList () 28466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 29466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 30466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 31466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonconst SBSymbolContextList & 32466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::operator = (const SBSymbolContextList &rhs) 33466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 34466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton if (this != &rhs) 35466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton { 364ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton *m_opaque_ap = *rhs.m_opaque_ap; 37466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton } 38466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return *this; 39466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 40466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 41466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonuint32_t 42466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::GetSize() const 43466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 44466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton if (m_opaque_ap.get()) 45466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return m_opaque_ap->GetSize(); 46466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return 0; 47466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 48466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 49466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContext 50466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::GetContextAtIndex (uint32_t idx) 51466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 52466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton SBSymbolContext sb_sc; 53466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton if (m_opaque_ap.get()) 54466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton { 55466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton SymbolContext sc; 56466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton if (m_opaque_ap->GetContextAtIndex (idx, sc)) 57466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton { 58466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton sb_sc.SetSymbolContext(&sc); 59466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton } 60466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton } 61466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return sb_sc; 62466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 63466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 644ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Claytonvoid 654ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg ClaytonSBSymbolContextList::Clear() 664ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton{ 674ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton if (m_opaque_ap.get()) 684ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton m_opaque_ap->Clear(); 694ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton} 704ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton 717dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Claytonvoid 727dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg ClaytonSBSymbolContextList::Append(SBSymbolContext &sc) 737dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton{ 747dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if (sc.IsValid() && m_opaque_ap.get()) 757dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton m_opaque_ap->Append(*sc); 767dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton} 777dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 787dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Claytonvoid 797dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg ClaytonSBSymbolContextList::Append(SBSymbolContextList &sc_list) 807dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton{ 817dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if (sc_list.IsValid() && m_opaque_ap.get()) 827dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton m_opaque_ap->Append(*sc_list); 837dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton} 847dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 85466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 86466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonbool 87466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::IsValid () const 88466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 89466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return m_opaque_ap.get() != NULL; 90466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 91466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 92466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 93466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 94466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonlldb_private::SymbolContextList* 95466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::operator->() const 96466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 97466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return m_opaque_ap.get(); 98466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 99466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 100466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 101466f6c4c0783c6b5197059caccab94faf1e605e9Greg Claytonlldb_private::SymbolContextList& 102466f6c4c0783c6b5197059caccab94faf1e605e9Greg ClaytonSBSymbolContextList::operator*() const 103466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton{ 104466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton assert (m_opaque_ap.get()); 105466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton return *m_opaque_ap.get(); 106466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton} 107466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 1087dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Claytonbool 1097dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg ClaytonSBSymbolContextList::GetDescription (lldb::SBStream &description) 1107dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton{ 1117dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton Stream &strm = description.ref(); 1127dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton if (m_opaque_ap.get()) 1137dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton m_opaque_ap->GetDescription (&strm, lldb::eDescriptionLevelFull, NULL); 1147dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton return true; 1157dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton} 116466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 117466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 118