xref: /llvm-project/lldb/source/API/SBThreadCollection.cpp (revision b9c1b51e45b845debb76d8658edabca70ca56079)
1 //===-- SBThreadCollection.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/SBThreadCollection.h"
11 #include "lldb/API/SBThread.h"
12 #include "lldb/Target/ThreadList.h"
13 
14 using namespace lldb;
15 using namespace lldb_private;
16 
17 SBThreadCollection::SBThreadCollection() : m_opaque_sp() {}
18 
19 SBThreadCollection::SBThreadCollection(const SBThreadCollection &rhs)
20     : m_opaque_sp(rhs.m_opaque_sp) {}
21 
22 const SBThreadCollection &SBThreadCollection::
23 operator=(const SBThreadCollection &rhs) {
24   if (this != &rhs)
25     m_opaque_sp = rhs.m_opaque_sp;
26   return *this;
27 }
28 
29 SBThreadCollection::SBThreadCollection(const ThreadCollectionSP &threads)
30     : m_opaque_sp(threads) {}
31 
32 SBThreadCollection::~SBThreadCollection() {}
33 
34 void SBThreadCollection::SetOpaque(const lldb::ThreadCollectionSP &threads) {
35   m_opaque_sp = threads;
36 }
37 
38 lldb_private::ThreadCollection *SBThreadCollection::get() const {
39   return m_opaque_sp.get();
40 }
41 
42 lldb_private::ThreadCollection *SBThreadCollection::operator->() const {
43   return m_opaque_sp.operator->();
44 }
45 
46 lldb::ThreadCollectionSP &SBThreadCollection::operator*() {
47   return m_opaque_sp;
48 }
49 
50 const lldb::ThreadCollectionSP &SBThreadCollection::operator*() const {
51   return m_opaque_sp;
52 }
53 
54 bool SBThreadCollection::IsValid() const { return m_opaque_sp.get() != NULL; }
55 
56 size_t SBThreadCollection::GetSize() {
57   if (m_opaque_sp)
58     return m_opaque_sp->GetSize();
59   return 0;
60 }
61 
62 SBThread SBThreadCollection::GetThreadAtIndex(size_t idx) {
63   SBThread thread;
64   if (m_opaque_sp && idx < m_opaque_sp->GetSize())
65     thread = m_opaque_sp->GetThreadAtIndex(idx);
66   return thread;
67 }
68