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