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