xref: /freebsd/contrib/llvm-project/lldb/include/lldb/API/SBQueue.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1 //===-- SBQueue.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_API_SBQUEUE_H
10 #define LLDB_API_SBQUEUE_H
11 
12 #include <vector>
13 
14 #include "lldb/API/SBDefines.h"
15 #include "lldb/lldb-forward.h"
16 
17 namespace lldb {
18 
19 class LLDB_API SBQueue {
20 public:
21   SBQueue();
22 
23   SBQueue(const SBQueue &rhs);
24 
25   const SBQueue &operator=(const lldb::SBQueue &rhs);
26 
27   ~SBQueue();
28 
29   explicit operator bool() const;
30 
31   bool IsValid() const;
32 
33   void Clear();
34 
35   lldb::SBProcess GetProcess();
36 
37   lldb::queue_id_t GetQueueID() const;
38 
39   const char *GetName() const;
40 
41   uint32_t GetIndexID() const;
42 
43   uint32_t GetNumThreads();
44 
45   lldb::SBThread GetThreadAtIndex(uint32_t);
46 
47   uint32_t GetNumPendingItems();
48 
49   lldb::SBQueueItem GetPendingItemAtIndex(uint32_t);
50 
51   uint32_t GetNumRunningItems();
52 
53   lldb::QueueKind GetKind();
54 
55 protected:
56   friend class SBProcess;
57   friend class SBThread;
58 
59   SBQueue(const QueueSP &queue_sp);
60 
61   void SetQueue(const lldb::QueueSP &queue_sp);
62 
63 private:
64   std::shared_ptr<lldb_private::QueueImpl> m_opaque_sp;
65 };
66 
67 } // namespace lldb
68 
69 #endif // LLDB_API_SBQUEUE_H
70