1*5e8dce4dSJason Molenda //===-- SBQueueItem.cpp -----------------------------------------*- C++ -*-===//
2*5e8dce4dSJason Molenda //
3*5e8dce4dSJason Molenda //                     The LLVM Compiler Infrastructure
4*5e8dce4dSJason Molenda //
5*5e8dce4dSJason Molenda // This file is distributed under the University of Illinois Open Source
6*5e8dce4dSJason Molenda // License. See LICENSE.TXT for details.
7*5e8dce4dSJason Molenda //
8*5e8dce4dSJason Molenda //===----------------------------------------------------------------------===//
9*5e8dce4dSJason Molenda 
10*5e8dce4dSJason Molenda #include "lldb/lldb-python.h"
11*5e8dce4dSJason Molenda #include "lldb/lldb-forward.h"
12*5e8dce4dSJason Molenda 
13*5e8dce4dSJason Molenda #include "lldb/API/SBAddress.h"
14*5e8dce4dSJason Molenda #include "lldb/API/SBQueueItem.h"
15*5e8dce4dSJason Molenda #include "lldb/API/SBThread.h"
16*5e8dce4dSJason Molenda #include "lldb/Core/Address.h"
17*5e8dce4dSJason Molenda #include "lldb/Target/QueueItem.h"
18*5e8dce4dSJason Molenda 
19*5e8dce4dSJason Molenda using namespace lldb;
20*5e8dce4dSJason Molenda using namespace lldb_private;
21*5e8dce4dSJason Molenda 
22*5e8dce4dSJason Molenda //----------------------------------------------------------------------
23*5e8dce4dSJason Molenda // Constructors
24*5e8dce4dSJason Molenda //----------------------------------------------------------------------
25*5e8dce4dSJason Molenda SBQueueItem::SBQueueItem () :
26*5e8dce4dSJason Molenda     m_queue_item_sp()
27*5e8dce4dSJason Molenda {
28*5e8dce4dSJason Molenda }
29*5e8dce4dSJason Molenda 
30*5e8dce4dSJason Molenda SBQueueItem::SBQueueItem (const QueueItemSP& queue_item_sp) :
31*5e8dce4dSJason Molenda     m_queue_item_sp (queue_item_sp)
32*5e8dce4dSJason Molenda {
33*5e8dce4dSJason Molenda }
34*5e8dce4dSJason Molenda 
35*5e8dce4dSJason Molenda //----------------------------------------------------------------------
36*5e8dce4dSJason Molenda // Destructor
37*5e8dce4dSJason Molenda //----------------------------------------------------------------------
38*5e8dce4dSJason Molenda SBQueueItem::~SBQueueItem()
39*5e8dce4dSJason Molenda {
40*5e8dce4dSJason Molenda     m_queue_item_sp.reset();
41*5e8dce4dSJason Molenda }
42*5e8dce4dSJason Molenda 
43*5e8dce4dSJason Molenda bool
44*5e8dce4dSJason Molenda SBQueueItem::IsValid() const
45*5e8dce4dSJason Molenda {
46*5e8dce4dSJason Molenda     return m_queue_item_sp.get() != NULL;
47*5e8dce4dSJason Molenda }
48*5e8dce4dSJason Molenda 
49*5e8dce4dSJason Molenda 
50*5e8dce4dSJason Molenda void
51*5e8dce4dSJason Molenda SBQueueItem::Clear ()
52*5e8dce4dSJason Molenda {
53*5e8dce4dSJason Molenda     m_queue_item_sp.reset();
54*5e8dce4dSJason Molenda }
55*5e8dce4dSJason Molenda 
56*5e8dce4dSJason Molenda 
57*5e8dce4dSJason Molenda void
58*5e8dce4dSJason Molenda SBQueueItem::SetQueueItem (const QueueItemSP& queue_item_sp)
59*5e8dce4dSJason Molenda {
60*5e8dce4dSJason Molenda     m_queue_item_sp = queue_item_sp;
61*5e8dce4dSJason Molenda }
62*5e8dce4dSJason Molenda 
63*5e8dce4dSJason Molenda 
64*5e8dce4dSJason Molenda lldb::QueueItemKind
65*5e8dce4dSJason Molenda SBQueueItem::GetKind () const
66*5e8dce4dSJason Molenda {
67*5e8dce4dSJason Molenda     QueueItemKind result = eQueueItemKindUnknown;
68*5e8dce4dSJason Molenda     if (m_queue_item_sp)
69*5e8dce4dSJason Molenda     {
70*5e8dce4dSJason Molenda         result = m_queue_item_sp->GetKind ();
71*5e8dce4dSJason Molenda     }
72*5e8dce4dSJason Molenda     return result;
73*5e8dce4dSJason Molenda }
74*5e8dce4dSJason Molenda 
75*5e8dce4dSJason Molenda void
76*5e8dce4dSJason Molenda SBQueueItem::SetKind (lldb::QueueItemKind kind)
77*5e8dce4dSJason Molenda {
78*5e8dce4dSJason Molenda     if (m_queue_item_sp)
79*5e8dce4dSJason Molenda     {
80*5e8dce4dSJason Molenda         m_queue_item_sp->SetKind (kind);
81*5e8dce4dSJason Molenda     }
82*5e8dce4dSJason Molenda }
83*5e8dce4dSJason Molenda 
84*5e8dce4dSJason Molenda SBAddress
85*5e8dce4dSJason Molenda SBQueueItem::GetAddress () const
86*5e8dce4dSJason Molenda {
87*5e8dce4dSJason Molenda     SBAddress result;
88*5e8dce4dSJason Molenda     if (m_queue_item_sp)
89*5e8dce4dSJason Molenda     {
90*5e8dce4dSJason Molenda         result.SetAddress (&m_queue_item_sp->GetAddress());
91*5e8dce4dSJason Molenda     }
92*5e8dce4dSJason Molenda     return result;
93*5e8dce4dSJason Molenda }
94*5e8dce4dSJason Molenda 
95*5e8dce4dSJason Molenda void
96*5e8dce4dSJason Molenda SBQueueItem::SetAddress (SBAddress addr)
97*5e8dce4dSJason Molenda {
98*5e8dce4dSJason Molenda     if (m_queue_item_sp)
99*5e8dce4dSJason Molenda     {
100*5e8dce4dSJason Molenda         m_queue_item_sp->SetAddress (addr.ref());
101*5e8dce4dSJason Molenda     }
102*5e8dce4dSJason Molenda }
103*5e8dce4dSJason Molenda 
104*5e8dce4dSJason Molenda SBThread
105*5e8dce4dSJason Molenda SBQueueItem::GetExtendedBacktraceThread (const char *type)
106*5e8dce4dSJason Molenda {
107*5e8dce4dSJason Molenda     SBThread result;
108*5e8dce4dSJason Molenda     if (m_queue_item_sp)
109*5e8dce4dSJason Molenda     {
110*5e8dce4dSJason Molenda         ThreadSP thread_sp;
111*5e8dce4dSJason Molenda         ConstString type_const (type);
112*5e8dce4dSJason Molenda         thread_sp = m_queue_item_sp->GetExtendedBacktraceThread (type_const);
113*5e8dce4dSJason Molenda         if (thread_sp)
114*5e8dce4dSJason Molenda         {
115*5e8dce4dSJason Molenda             result.SetThread (thread_sp);
116*5e8dce4dSJason Molenda         }
117*5e8dce4dSJason Molenda     }
118*5e8dce4dSJason Molenda     return result;
119*5e8dce4dSJason Molenda }
120