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