15e8dce4dSJason Molenda //===-- SBQueueItem.cpp -----------------------------------------*- C++ -*-===// 25e8dce4dSJason Molenda // 35e8dce4dSJason Molenda // The LLVM Compiler Infrastructure 45e8dce4dSJason Molenda // 55e8dce4dSJason Molenda // This file is distributed under the University of Illinois Open Source 65e8dce4dSJason Molenda // License. See LICENSE.TXT for details. 75e8dce4dSJason Molenda // 85e8dce4dSJason Molenda //===----------------------------------------------------------------------===// 95e8dce4dSJason Molenda 105e8dce4dSJason Molenda #include "lldb/lldb-python.h" 115e8dce4dSJason Molenda #include "lldb/lldb-forward.h" 125e8dce4dSJason Molenda 135e8dce4dSJason Molenda #include "lldb/API/SBAddress.h" 145e8dce4dSJason Molenda #include "lldb/API/SBQueueItem.h" 155e8dce4dSJason Molenda #include "lldb/API/SBThread.h" 165e8dce4dSJason Molenda #include "lldb/Core/Address.h" 175e8dce4dSJason Molenda #include "lldb/Target/QueueItem.h" 18*2fd83355SJason Molenda #include "lldb/Target/Thread.h" 195e8dce4dSJason Molenda 205e8dce4dSJason Molenda using namespace lldb; 215e8dce4dSJason Molenda using namespace lldb_private; 225e8dce4dSJason Molenda 235e8dce4dSJason Molenda //---------------------------------------------------------------------- 245e8dce4dSJason Molenda // Constructors 255e8dce4dSJason Molenda //---------------------------------------------------------------------- 265e8dce4dSJason Molenda SBQueueItem::SBQueueItem () : 275e8dce4dSJason Molenda m_queue_item_sp() 285e8dce4dSJason Molenda { 295e8dce4dSJason Molenda } 305e8dce4dSJason Molenda 315e8dce4dSJason Molenda SBQueueItem::SBQueueItem (const QueueItemSP& queue_item_sp) : 325e8dce4dSJason Molenda m_queue_item_sp (queue_item_sp) 335e8dce4dSJason Molenda { 345e8dce4dSJason Molenda } 355e8dce4dSJason Molenda 365e8dce4dSJason Molenda //---------------------------------------------------------------------- 375e8dce4dSJason Molenda // Destructor 385e8dce4dSJason Molenda //---------------------------------------------------------------------- 395e8dce4dSJason Molenda SBQueueItem::~SBQueueItem() 405e8dce4dSJason Molenda { 415e8dce4dSJason Molenda m_queue_item_sp.reset(); 425e8dce4dSJason Molenda } 435e8dce4dSJason Molenda 445e8dce4dSJason Molenda bool 455e8dce4dSJason Molenda SBQueueItem::IsValid() const 465e8dce4dSJason Molenda { 475e8dce4dSJason Molenda return m_queue_item_sp.get() != NULL; 485e8dce4dSJason Molenda } 495e8dce4dSJason Molenda 505e8dce4dSJason Molenda 515e8dce4dSJason Molenda void 525e8dce4dSJason Molenda SBQueueItem::Clear () 535e8dce4dSJason Molenda { 545e8dce4dSJason Molenda m_queue_item_sp.reset(); 555e8dce4dSJason Molenda } 565e8dce4dSJason Molenda 575e8dce4dSJason Molenda 585e8dce4dSJason Molenda void 595e8dce4dSJason Molenda SBQueueItem::SetQueueItem (const QueueItemSP& queue_item_sp) 605e8dce4dSJason Molenda { 615e8dce4dSJason Molenda m_queue_item_sp = queue_item_sp; 625e8dce4dSJason Molenda } 635e8dce4dSJason Molenda 645e8dce4dSJason Molenda 655e8dce4dSJason Molenda lldb::QueueItemKind 665e8dce4dSJason Molenda SBQueueItem::GetKind () const 675e8dce4dSJason Molenda { 685e8dce4dSJason Molenda QueueItemKind result = eQueueItemKindUnknown; 695e8dce4dSJason Molenda if (m_queue_item_sp) 705e8dce4dSJason Molenda { 715e8dce4dSJason Molenda result = m_queue_item_sp->GetKind (); 725e8dce4dSJason Molenda } 735e8dce4dSJason Molenda return result; 745e8dce4dSJason Molenda } 755e8dce4dSJason Molenda 765e8dce4dSJason Molenda void 775e8dce4dSJason Molenda SBQueueItem::SetKind (lldb::QueueItemKind kind) 785e8dce4dSJason Molenda { 795e8dce4dSJason Molenda if (m_queue_item_sp) 805e8dce4dSJason Molenda { 815e8dce4dSJason Molenda m_queue_item_sp->SetKind (kind); 825e8dce4dSJason Molenda } 835e8dce4dSJason Molenda } 845e8dce4dSJason Molenda 855e8dce4dSJason Molenda SBAddress 865e8dce4dSJason Molenda SBQueueItem::GetAddress () const 875e8dce4dSJason Molenda { 885e8dce4dSJason Molenda SBAddress result; 895e8dce4dSJason Molenda if (m_queue_item_sp) 905e8dce4dSJason Molenda { 915e8dce4dSJason Molenda result.SetAddress (&m_queue_item_sp->GetAddress()); 925e8dce4dSJason Molenda } 935e8dce4dSJason Molenda return result; 945e8dce4dSJason Molenda } 955e8dce4dSJason Molenda 965e8dce4dSJason Molenda void 975e8dce4dSJason Molenda SBQueueItem::SetAddress (SBAddress addr) 985e8dce4dSJason Molenda { 995e8dce4dSJason Molenda if (m_queue_item_sp) 1005e8dce4dSJason Molenda { 1015e8dce4dSJason Molenda m_queue_item_sp->SetAddress (addr.ref()); 1025e8dce4dSJason Molenda } 1035e8dce4dSJason Molenda } 1045e8dce4dSJason Molenda 1055e8dce4dSJason Molenda SBThread 1065e8dce4dSJason Molenda SBQueueItem::GetExtendedBacktraceThread (const char *type) 1075e8dce4dSJason Molenda { 1085e8dce4dSJason Molenda SBThread result; 1095e8dce4dSJason Molenda if (m_queue_item_sp) 1105e8dce4dSJason Molenda { 1115e8dce4dSJason Molenda ThreadSP thread_sp; 1125e8dce4dSJason Molenda ConstString type_const (type); 1135e8dce4dSJason Molenda thread_sp = m_queue_item_sp->GetExtendedBacktraceThread (type_const); 1145e8dce4dSJason Molenda if (thread_sp) 1155e8dce4dSJason Molenda { 1165e8dce4dSJason Molenda result.SetThread (thread_sp); 1175e8dce4dSJason Molenda } 1185e8dce4dSJason Molenda } 1195e8dce4dSJason Molenda return result; 1205e8dce4dSJason Molenda } 121