1262182Semaste//===-- SBQueue.h -----------------------------------------------*- C++ -*-===//
2262182Semaste//
3262182Semaste//                     The LLVM Compiler Infrastructure
4262182Semaste//
5262182Semaste// This file is distributed under the University of Illinois Open Source
6262182Semaste// License. See LICENSE.TXT for details.
7262182Semaste//
8262182Semaste//===----------------------------------------------------------------------===//
9262182Semaste
10262182Semaste#ifndef LLDB_SBQueue_h_
11262182Semaste#define LLDB_SBQueue_h_
12262182Semaste
13262182Semaste#include <vector>
14262182Semaste
15262182Semaste#include "lldb/lldb-forward.h"
16262182Semaste#include "lldb/API/SBDefines.h"
17262182Semaste#include "lldb/API/SBQueueItem.h"
18262182Semaste
19262182Semastenamespace lldb {
20262182Semaste
21262182Semasteclass SBQueue
22262182Semaste{
23262182Semastepublic:
24262182Semaste    SBQueue ();
25262182Semaste
26262182Semaste    SBQueue (const QueueSP& queue_sp);
27262182Semaste
28262182Semaste    SBQueue (const SBQueue& rhs);
29262182Semaste
30262182Semaste    const SBQueue &
31262182Semaste    operator= (const lldb::SBQueue& rhs);
32262182Semaste
33262182Semaste   ~SBQueue();
34262182Semaste
35262182Semaste    bool
36262182Semaste    IsValid() const;
37262182Semaste
38262182Semaste    void
39262182Semaste    Clear ();
40262182Semaste
41262182Semaste    lldb::SBProcess
42262182Semaste    GetProcess ();
43262182Semaste
44262182Semaste    lldb::queue_id_t
45262182Semaste    GetQueueID () const;
46262182Semaste
47262182Semaste    const char *
48262182Semaste    GetName () const;
49262182Semaste
50262182Semaste    uint32_t
51262182Semaste    GetIndexID () const;
52262182Semaste
53262182Semaste    uint32_t
54262182Semaste    GetNumThreads ();
55262182Semaste
56262182Semaste    lldb::SBThread
57262182Semaste    GetThreadAtIndex (uint32_t);
58262182Semaste
59262182Semaste    uint32_t
60262182Semaste    GetNumPendingItems ();
61262182Semaste
62262182Semaste    lldb::SBQueueItem
63262182Semaste    GetPendingItemAtIndex (uint32_t);
64262182Semaste
65262182Semasteprotected:
66262182Semaste    friend class SBProcess;
67262182Semaste
68262182Semaste    void
69262182Semaste    SetQueue (const lldb::QueueSP& queue_sp);
70262182Semaste
71262182Semaste    void
72262182Semaste    FetchThreads ();
73262182Semaste
74262182Semaste    void
75262182Semaste    FetchItems ();
76262182Semaste
77262182Semasteprivate:
78262182Semaste    std::shared_ptr<lldb_private::QueueImpl> m_opaque_sp;
79262182Semaste};
80262182Semaste
81262182Semaste} // namespace lldb
82262182Semaste
83262182Semaste#endif  // LLDB_SBQueue_h_
84