SBQueueItem.cpp revision 269024
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
20using namespace lldb;
21using namespace lldb_private;
22
23//----------------------------------------------------------------------
24// Constructors
25//----------------------------------------------------------------------
26SBQueueItem::SBQueueItem () :
27    m_queue_item_sp()
28{
29}
30
31SBQueueItem::SBQueueItem (const QueueItemSP& queue_item_sp) :
32    m_queue_item_sp (queue_item_sp)
33{
34}
35
36//----------------------------------------------------------------------
37// Destructor
38//----------------------------------------------------------------------
39SBQueueItem::~SBQueueItem()
40{
41    m_queue_item_sp.reset();
42}
43
44bool
45SBQueueItem::IsValid() const
46{
47    return m_queue_item_sp.get() != NULL;
48}
49
50
51void
52SBQueueItem::Clear ()
53{
54    m_queue_item_sp.reset();
55}
56
57
58void
59SBQueueItem::SetQueueItem (const QueueItemSP& queue_item_sp)
60{
61    m_queue_item_sp = queue_item_sp;
62}
63
64
65lldb::QueueItemKind
66SBQueueItem::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
76void
77SBQueueItem::SetKind (lldb::QueueItemKind kind)
78{
79    if (m_queue_item_sp)
80    {
81        m_queue_item_sp->SetKind (kind);
82    }
83}
84
85SBAddress
86SBQueueItem::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
96void
97SBQueueItem::SetAddress (SBAddress addr)
98{
99    if (m_queue_item_sp)
100    {
101        m_queue_item_sp->SetAddress (addr.ref());
102    }
103}
104
105SBThread
106SBQueueItem::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