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