1254721Semaste//===-- ValueObjectList.cpp -------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#include "lldb/Core/ValueObjectList.h" 11254721Semaste 12254721Semaste// C Includes 13254721Semaste// C++ Includes 14254721Semaste// Other libraries and framework includes 15254721Semaste// Project includes 16254721Semaste#include "lldb/Core/ValueObjectChild.h" 17254721Semaste#include "lldb/Core/ValueObjectRegister.h" 18254721Semaste#include "lldb/Core/ValueObjectVariable.h" 19254721Semaste#include "lldb/Target/ExecutionContext.h" 20254721Semaste#include "lldb/Target/Process.h" 21254721Semaste 22254721Semasteusing namespace lldb; 23254721Semasteusing namespace lldb_private; 24254721Semaste 25254721SemasteValueObjectList::ValueObjectList () : 26254721Semaste m_value_objects() 27254721Semaste{ 28254721Semaste} 29254721Semaste 30254721SemasteValueObjectList::ValueObjectList (const ValueObjectList &rhs) : 31254721Semaste m_value_objects(rhs.m_value_objects) 32254721Semaste{ 33254721Semaste} 34254721Semaste 35254721Semaste 36254721SemasteValueObjectList::~ValueObjectList () 37254721Semaste{ 38254721Semaste} 39254721Semaste 40254721Semasteconst ValueObjectList & 41254721SemasteValueObjectList::operator = (const ValueObjectList &rhs) 42254721Semaste{ 43254721Semaste if (this != &rhs) 44254721Semaste m_value_objects = rhs.m_value_objects; 45254721Semaste return *this; 46254721Semaste} 47254721Semaste 48254721Semastevoid 49254721SemasteValueObjectList::Append (const ValueObjectSP &val_obj_sp) 50254721Semaste{ 51254721Semaste m_value_objects.push_back(val_obj_sp); 52254721Semaste} 53254721Semaste 54254721Semastevoid 55254721SemasteValueObjectList::Append (const ValueObjectList &valobj_list) 56254721Semaste{ 57254721Semaste std::copy(valobj_list.m_value_objects.begin(), // source begin 58254721Semaste valobj_list.m_value_objects.end(), // source end 59254721Semaste back_inserter(m_value_objects)); // destination 60254721Semaste 61254721Semaste} 62254721Semaste 63254721Semaste 64254721Semastesize_t 65254721SemasteValueObjectList::GetSize() const 66254721Semaste{ 67254721Semaste return m_value_objects.size(); 68254721Semaste} 69254721Semaste 70254721Semastevoid 71254721SemasteValueObjectList::Resize (size_t size) 72254721Semaste{ 73254721Semaste m_value_objects.resize (size); 74254721Semaste} 75254721Semaste 76254721Semastelldb::ValueObjectSP 77254721SemasteValueObjectList::GetValueObjectAtIndex (size_t idx) 78254721Semaste{ 79254721Semaste lldb::ValueObjectSP valobj_sp; 80254721Semaste if (idx < m_value_objects.size()) 81254721Semaste valobj_sp = m_value_objects[idx]; 82254721Semaste return valobj_sp; 83254721Semaste} 84254721Semaste 85254721Semastelldb::ValueObjectSP 86254721SemasteValueObjectList::RemoveValueObjectAtIndex (size_t idx) 87254721Semaste{ 88254721Semaste lldb::ValueObjectSP valobj_sp; 89254721Semaste if (idx < m_value_objects.size()) 90254721Semaste { 91254721Semaste valobj_sp = m_value_objects[idx]; 92254721Semaste m_value_objects.erase (m_value_objects.begin() + idx); 93254721Semaste } 94254721Semaste return valobj_sp; 95254721Semaste} 96254721Semaste 97254721Semastevoid 98254721SemasteValueObjectList::SetValueObjectAtIndex (size_t idx, const ValueObjectSP &valobj_sp) 99254721Semaste{ 100254721Semaste if (idx >= m_value_objects.size()) 101254721Semaste m_value_objects.resize (idx + 1); 102254721Semaste m_value_objects[idx] = valobj_sp; 103254721Semaste} 104254721Semaste 105254721SemasteValueObjectSP 106254721SemasteValueObjectList::FindValueObjectByValueName (const char *name) 107254721Semaste{ 108254721Semaste ConstString name_const_str(name); 109254721Semaste ValueObjectSP val_obj_sp; 110254721Semaste collection::iterator pos, end = m_value_objects.end(); 111254721Semaste for (pos = m_value_objects.begin(); pos != end; ++pos) 112254721Semaste { 113254721Semaste ValueObject *valobj = (*pos).get(); 114254721Semaste if (valobj && valobj->GetName() == name_const_str) 115254721Semaste { 116254721Semaste val_obj_sp = *pos; 117254721Semaste break; 118254721Semaste } 119254721Semaste } 120254721Semaste return val_obj_sp; 121254721Semaste} 122254721Semaste 123254721SemasteValueObjectSP 124254721SemasteValueObjectList::FindValueObjectByUID (lldb::user_id_t uid) 125254721Semaste{ 126254721Semaste ValueObjectSP valobj_sp; 127254721Semaste collection::iterator pos, end = m_value_objects.end(); 128254721Semaste 129254721Semaste for (pos = m_value_objects.begin(); pos != end; ++pos) 130254721Semaste { 131254721Semaste // Watch out for NULL objects in our list as the list 132254721Semaste // might get resized to a specific size and lazily filled in 133254721Semaste ValueObject *valobj = (*pos).get(); 134254721Semaste if (valobj && valobj->GetID() == uid) 135254721Semaste { 136254721Semaste valobj_sp = *pos; 137254721Semaste break; 138254721Semaste } 139254721Semaste } 140254721Semaste return valobj_sp; 141254721Semaste} 142254721Semaste 143254721Semaste 144254721SemasteValueObjectSP 145254721SemasteValueObjectList::FindValueObjectByPointer (ValueObject *find_valobj) 146254721Semaste{ 147254721Semaste ValueObjectSP valobj_sp; 148254721Semaste collection::iterator pos, end = m_value_objects.end(); 149254721Semaste 150254721Semaste for (pos = m_value_objects.begin(); pos != end; ++pos) 151254721Semaste { 152254721Semaste ValueObject *valobj = (*pos).get(); 153254721Semaste if (valobj && valobj == find_valobj) 154254721Semaste { 155254721Semaste valobj_sp = *pos; 156254721Semaste break; 157254721Semaste } 158254721Semaste } 159254721Semaste return valobj_sp; 160254721Semaste} 161254721Semaste 162254721Semastevoid 163254721SemasteValueObjectList::Swap (ValueObjectList &value_object_list) 164254721Semaste{ 165254721Semaste m_value_objects.swap (value_object_list.m_value_objects); 166254721Semaste} 167