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