1*a5ea1e2bSKuba Brecka //===-- SBThreadCollection.cpp ----------------------------------*- C++ -*-===// 2*a5ea1e2bSKuba Brecka // 3*a5ea1e2bSKuba Brecka // The LLVM Compiler Infrastructure 4*a5ea1e2bSKuba Brecka // 5*a5ea1e2bSKuba Brecka // This file is distributed under the University of Illinois Open Source 6*a5ea1e2bSKuba Brecka // License. See LICENSE.TXT for details. 7*a5ea1e2bSKuba Brecka // 8*a5ea1e2bSKuba Brecka //===----------------------------------------------------------------------===// 9*a5ea1e2bSKuba Brecka 10*a5ea1e2bSKuba Brecka #include "lldb/API/SBThreadCollection.h" 11*a5ea1e2bSKuba Brecka #include "lldb/API/SBThread.h" 12*a5ea1e2bSKuba Brecka #include "lldb/Target/ThreadList.h" 13*a5ea1e2bSKuba Brecka 14*a5ea1e2bSKuba Brecka using namespace lldb; 15*a5ea1e2bSKuba Brecka using namespace lldb_private; 16*a5ea1e2bSKuba Brecka 17*a5ea1e2bSKuba Brecka 18*a5ea1e2bSKuba Brecka SBThreadCollection::SBThreadCollection () : 19*a5ea1e2bSKuba Brecka m_opaque_sp() 20*a5ea1e2bSKuba Brecka { 21*a5ea1e2bSKuba Brecka } 22*a5ea1e2bSKuba Brecka 23*a5ea1e2bSKuba Brecka SBThreadCollection::SBThreadCollection(const SBThreadCollection &rhs) : 24*a5ea1e2bSKuba Brecka m_opaque_sp (rhs.m_opaque_sp) 25*a5ea1e2bSKuba Brecka { 26*a5ea1e2bSKuba Brecka } 27*a5ea1e2bSKuba Brecka 28*a5ea1e2bSKuba Brecka const SBThreadCollection & 29*a5ea1e2bSKuba Brecka SBThreadCollection::operator = (const SBThreadCollection &rhs) 30*a5ea1e2bSKuba Brecka { 31*a5ea1e2bSKuba Brecka if (this != &rhs) 32*a5ea1e2bSKuba Brecka m_opaque_sp = rhs.m_opaque_sp; 33*a5ea1e2bSKuba Brecka return *this; 34*a5ea1e2bSKuba Brecka } 35*a5ea1e2bSKuba Brecka 36*a5ea1e2bSKuba Brecka SBThreadCollection::SBThreadCollection (const ThreadCollectionSP &threads) : 37*a5ea1e2bSKuba Brecka m_opaque_sp(threads) 38*a5ea1e2bSKuba Brecka { 39*a5ea1e2bSKuba Brecka } 40*a5ea1e2bSKuba Brecka 41*a5ea1e2bSKuba Brecka SBThreadCollection::~SBThreadCollection () 42*a5ea1e2bSKuba Brecka { 43*a5ea1e2bSKuba Brecka } 44*a5ea1e2bSKuba Brecka 45*a5ea1e2bSKuba Brecka void 46*a5ea1e2bSKuba Brecka SBThreadCollection::SetOpaque (const lldb::ThreadCollectionSP &threads) 47*a5ea1e2bSKuba Brecka { 48*a5ea1e2bSKuba Brecka m_opaque_sp = threads; 49*a5ea1e2bSKuba Brecka } 50*a5ea1e2bSKuba Brecka 51*a5ea1e2bSKuba Brecka lldb_private::ThreadCollection * 52*a5ea1e2bSKuba Brecka SBThreadCollection::get() const 53*a5ea1e2bSKuba Brecka { 54*a5ea1e2bSKuba Brecka return m_opaque_sp.get(); 55*a5ea1e2bSKuba Brecka } 56*a5ea1e2bSKuba Brecka 57*a5ea1e2bSKuba Brecka lldb_private::ThreadCollection * 58*a5ea1e2bSKuba Brecka SBThreadCollection::operator->() const 59*a5ea1e2bSKuba Brecka { 60*a5ea1e2bSKuba Brecka return m_opaque_sp.operator->(); 61*a5ea1e2bSKuba Brecka } 62*a5ea1e2bSKuba Brecka 63*a5ea1e2bSKuba Brecka lldb::ThreadCollectionSP & 64*a5ea1e2bSKuba Brecka SBThreadCollection::operator*() 65*a5ea1e2bSKuba Brecka { 66*a5ea1e2bSKuba Brecka return m_opaque_sp; 67*a5ea1e2bSKuba Brecka } 68*a5ea1e2bSKuba Brecka 69*a5ea1e2bSKuba Brecka const lldb::ThreadCollectionSP & 70*a5ea1e2bSKuba Brecka SBThreadCollection::operator*() const 71*a5ea1e2bSKuba Brecka { 72*a5ea1e2bSKuba Brecka return m_opaque_sp; 73*a5ea1e2bSKuba Brecka } 74*a5ea1e2bSKuba Brecka 75*a5ea1e2bSKuba Brecka 76*a5ea1e2bSKuba Brecka bool 77*a5ea1e2bSKuba Brecka SBThreadCollection::IsValid () const 78*a5ea1e2bSKuba Brecka { 79*a5ea1e2bSKuba Brecka return m_opaque_sp.get() != NULL; 80*a5ea1e2bSKuba Brecka } 81*a5ea1e2bSKuba Brecka 82*a5ea1e2bSKuba Brecka size_t 83*a5ea1e2bSKuba Brecka SBThreadCollection::GetSize () 84*a5ea1e2bSKuba Brecka { 85*a5ea1e2bSKuba Brecka if (m_opaque_sp) 86*a5ea1e2bSKuba Brecka return m_opaque_sp->GetSize(); 87*a5ea1e2bSKuba Brecka return 0; 88*a5ea1e2bSKuba Brecka } 89*a5ea1e2bSKuba Brecka 90*a5ea1e2bSKuba Brecka SBThread 91*a5ea1e2bSKuba Brecka SBThreadCollection::GetThreadAtIndex(size_t idx) 92*a5ea1e2bSKuba Brecka { 93*a5ea1e2bSKuba Brecka SBThread thread; 94*a5ea1e2bSKuba Brecka if (m_opaque_sp && idx < m_opaque_sp->GetSize()) 95*a5ea1e2bSKuba Brecka thread = m_opaque_sp->GetThreadAtIndex(idx); 96*a5ea1e2bSKuba Brecka return thread; 97*a5ea1e2bSKuba Brecka } 98