blob: 4223fadb388680e6fb353f32aad168edb2a057e2 [file] [log] [blame]
Chris Lattner24943d22010-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 () :
Greg Clayton63094e02010-06-23 01:19:29 +000020 m_opaque_ap ()
Chris Lattner24943d22010-06-08 16:52:24 +000021{
22}
23
24SBValueList::SBValueList (const SBValueList &rhs) :
Greg Clayton63094e02010-06-23 01:19:29 +000025 m_opaque_ap ()
Chris Lattner24943d22010-06-08 16:52:24 +000026{
27 if (rhs.IsValid())
Greg Clayton63094e02010-06-23 01:19:29 +000028 m_opaque_ap.reset (new lldb_private::ValueObjectList (*rhs));
Chris Lattner24943d22010-06-08 16:52:24 +000029}
30
31SBValueList::SBValueList (const lldb_private::ValueObjectList *lldb_object_ptr) :
Greg Clayton63094e02010-06-23 01:19:29 +000032 m_opaque_ap ()
Chris Lattner24943d22010-06-08 16:52:24 +000033{
34 if (lldb_object_ptr)
Greg Clayton63094e02010-06-23 01:19:29 +000035 m_opaque_ap.reset (new lldb_private::ValueObjectList (*lldb_object_ptr));
Chris Lattner24943d22010-06-08 16:52:24 +000036}
37
38SBValueList::~SBValueList ()
39{
40}
41
42bool
43SBValueList::IsValid () const
44{
Greg Clayton63094e02010-06-23 01:19:29 +000045 return (m_opaque_ap.get() != NULL);
Chris Lattner24943d22010-06-08 16:52:24 +000046}
47
48const SBValueList &
49SBValueList::operator = (const SBValueList &rhs)
50{
51 if (this != &rhs)
52 {
53 if (rhs.IsValid())
Greg Clayton63094e02010-06-23 01:19:29 +000054 m_opaque_ap.reset (new lldb_private::ValueObjectList (*rhs));
Chris Lattner24943d22010-06-08 16:52:24 +000055 else
Greg Clayton63094e02010-06-23 01:19:29 +000056 m_opaque_ap.reset ();
Chris Lattner24943d22010-06-08 16:52:24 +000057 }
58 return *this;
59}
60
61lldb_private::ValueObjectList *
62SBValueList::operator->()
63{
Greg Clayton63094e02010-06-23 01:19:29 +000064 return m_opaque_ap.get();
Chris Lattner24943d22010-06-08 16:52:24 +000065}
66
67lldb_private::ValueObjectList &
68SBValueList::operator*()
69{
Greg Clayton63094e02010-06-23 01:19:29 +000070 return *m_opaque_ap;
Chris Lattner24943d22010-06-08 16:52:24 +000071}
72
73const lldb_private::ValueObjectList *
74SBValueList::operator->() const
75{
Greg Clayton63094e02010-06-23 01:19:29 +000076 return m_opaque_ap.get();
Chris Lattner24943d22010-06-08 16:52:24 +000077}
78
79const lldb_private::ValueObjectList &
80SBValueList::operator*() const
81{
Greg Clayton63094e02010-06-23 01:19:29 +000082 return *m_opaque_ap;
Chris Lattner24943d22010-06-08 16:52:24 +000083}
84
85void
86SBValueList::Append (const SBValue &val_obj)
87{
88 if (val_obj.get())
89 {
90 CreateIfNeeded ();
Greg Clayton63094e02010-06-23 01:19:29 +000091 m_opaque_ap->Append (*val_obj);
Chris Lattner24943d22010-06-08 16:52:24 +000092 }
93}
94
95void
96SBValueList::Append (lldb::ValueObjectSP& val_obj_sp)
97{
98 if (val_obj_sp)
99 {
100 CreateIfNeeded ();
Greg Clayton63094e02010-06-23 01:19:29 +0000101 m_opaque_ap->Append (val_obj_sp);
Chris Lattner24943d22010-06-08 16:52:24 +0000102 }
103}
104
105
106SBValue
107SBValueList::GetValueAtIndex (uint32_t idx) const
108{
109 SBValue sb_value;
Greg Clayton63094e02010-06-23 01:19:29 +0000110 if (m_opaque_ap.get())
111 *sb_value = m_opaque_ap->GetValueObjectAtIndex (idx);
Chris Lattner24943d22010-06-08 16:52:24 +0000112 return sb_value;
113}
114
115uint32_t
116SBValueList::GetSize () const
117{
118 uint32_t size = 0;
Greg Clayton63094e02010-06-23 01:19:29 +0000119 if (m_opaque_ap.get())
120 size = m_opaque_ap->GetSize();
Chris Lattner24943d22010-06-08 16:52:24 +0000121 return size;
122}
123
124void
125SBValueList::CreateIfNeeded ()
126{
Greg Clayton63094e02010-06-23 01:19:29 +0000127 if (m_opaque_ap.get() == NULL)
128 m_opaque_ap.reset (new ValueObjectList());
Chris Lattner24943d22010-06-08 16:52:24 +0000129}
130
131
132SBValue
133SBValueList::FindValueObjectByUID (lldb::user_id_t uid)
134{
135 SBValue sb_value;
Greg Clayton63094e02010-06-23 01:19:29 +0000136 if ( m_opaque_ap.get())
137 *sb_value = m_opaque_ap->FindValueObjectByUID (uid);
Chris Lattner24943d22010-06-08 16:52:24 +0000138 return sb_value;
139}
140