]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/lldb/include/lldb/API/SBThreadCollection.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / lldb / include / lldb / API / SBThreadCollection.h
1 //===-- SBThreadCollection.h ------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #ifndef LLDB_SBThreadCollection_h_
10 #define LLDB_SBThreadCollection_h_
11
12 #include "lldb/API/SBDefines.h"
13
14 namespace lldb {
15
16 class LLDB_API SBThreadCollection {
17 public:
18   SBThreadCollection();
19
20   SBThreadCollection(const SBThreadCollection &rhs);
21
22   const SBThreadCollection &operator=(const SBThreadCollection &rhs);
23
24   ~SBThreadCollection();
25
26   explicit operator bool() const;
27
28   bool IsValid() const;
29
30   size_t GetSize();
31
32   lldb::SBThread GetThreadAtIndex(size_t idx);
33
34 protected:
35   // Mimic shared pointer...
36   lldb_private::ThreadCollection *get() const;
37
38   lldb_private::ThreadCollection *operator->() const;
39
40   lldb::ThreadCollectionSP &operator*();
41
42   const lldb::ThreadCollectionSP &operator*() const;
43
44   SBThreadCollection(const lldb::ThreadCollectionSP &threads);
45
46   void SetOpaque(const lldb::ThreadCollectionSP &threads);
47
48 private:
49   friend class SBProcess;
50   friend class SBThread;
51
52   lldb::ThreadCollectionSP m_opaque_sp;
53 };
54
55 } // namespace lldb
56
57 #endif // LLDB_SBThreadCollection_h_