blob: e7cbfad53082d9cfc5e17d780e57e9b6bacc07c1 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- SBValueList.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
11#include "lldb/API/SBValueList.h"
12#include "lldb/API/SBValue.h"
13
14#include "lldb/Core/ValueObjectList.h"
15
16using namespace lldb;
17using namespace lldb_private;
18
19SBValueList::SBValueList () :
20 m_lldb_object_ap ()
21{
22}
23
24SBValueList::SBValueList (const SBValueList &rhs) :
25 m_lldb_object_ap ()
26{
27 if (rhs.IsValid())
28 m_lldb_object_ap.reset (new lldb_private::ValueObjectList (*rhs));
29}
30
31SBValueList::SBValueList (const lldb_private::ValueObjectList *lldb_object_ptr) :
32 m_lldb_object_ap ()
33{
34 if (lldb_object_ptr)
35 m_lldb_object_ap.reset (new lldb_private::ValueObjectList (*lldb_object_ptr));
36}
37
38SBValueList::~SBValueList ()
39{
40}
41
42bool
43SBValueList::IsValid () const
44{
45 return (m_lldb_object_ap.get() != NULL);
46}
47
48const SBValueList &
49SBValueList::operator = (const SBValueList &rhs)
50{
51 if (this != &rhs)
52 {
53 if (rhs.IsValid())
54 m_lldb_object_ap.reset (new lldb_private::ValueObjectList (*rhs));
55 else
56 m_lldb_object_ap.reset ();
57 }
58 return *this;
59}
60
61lldb_private::ValueObjectList *
62SBValueList::operator->()
63{
64 return m_lldb_object_ap.get();
65}
66
67lldb_private::ValueObjectList &
68SBValueList::operator*()
69{
70 return *m_lldb_object_ap;
71}
72
73const lldb_private::ValueObjectList *
74SBValueList::operator->() const
75{
76 return m_lldb_object_ap.get();
77}
78
79const lldb_private::ValueObjectList &
80SBValueList::operator*() const
81{
82 return *m_lldb_object_ap;
83}
84
85void
86SBValueList::Append (const SBValue &val_obj)
87{
88 if (val_obj.get())
89 {
90 CreateIfNeeded ();
91 m_lldb_object_ap->Append (*val_obj);
92 }
93}
94
95void
96SBValueList::Append (lldb::ValueObjectSP& val_obj_sp)
97{
98 if (val_obj_sp)
99 {
100 CreateIfNeeded ();
101 m_lldb_object_ap->Append (val_obj_sp);
102 }
103}
104
105
106SBValue
107SBValueList::GetValueAtIndex (uint32_t idx) const
108{
109 SBValue sb_value;
110 if (m_lldb_object_ap.get())
111 *sb_value = m_lldb_object_ap->GetValueObjectAtIndex (idx);
112 return sb_value;
113}
114
115uint32_t
116SBValueList::GetSize () const
117{
118 uint32_t size = 0;
119 if (m_lldb_object_ap.get())
120 size = m_lldb_object_ap->GetSize();
121 return size;
122}
123
124void
125SBValueList::CreateIfNeeded ()
126{
127 if (m_lldb_object_ap.get() == NULL)
128 m_lldb_object_ap.reset (new ValueObjectList());
129}
130
131
132SBValue
133SBValueList::FindValueObjectByUID (lldb::user_id_t uid)
134{
135 SBValue sb_value;
136 if ( m_lldb_object_ap.get())
137 *sb_value = m_lldb_object_ap->FindValueObjectByUID (uid);
138 return sb_value;
139}
140