brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · fdee957 Raw
104 lines · cpp
1//===-- ValueObjectList.cpp -----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/ValueObject/ValueObjectList.h"10 11#include "lldb/Utility/ConstString.h"12#include "lldb/ValueObject/ValueObject.h"13 14#include <utility>15 16using namespace lldb;17using namespace lldb_private;18 19void ValueObjectList::Append(const ValueObjectSP &val_obj_sp) {20  m_value_objects.push_back(val_obj_sp);21}22 23void ValueObjectList::Append(const ValueObjectList &valobj_list) {24  std::copy(valobj_list.m_value_objects.begin(), // source begin25            valobj_list.m_value_objects.end(),   // source end26            back_inserter(m_value_objects));     // destination27}28 29size_t ValueObjectList::GetSize() const { return m_value_objects.size(); }30 31void ValueObjectList::Resize(size_t size) { m_value_objects.resize(size); }32 33lldb::ValueObjectSP ValueObjectList::GetValueObjectAtIndex(size_t idx) {34  lldb::ValueObjectSP valobj_sp;35  if (idx < m_value_objects.size())36    valobj_sp = m_value_objects[idx];37  return valobj_sp;38}39 40lldb::ValueObjectSP ValueObjectList::RemoveValueObjectAtIndex(size_t idx) {41  lldb::ValueObjectSP valobj_sp;42  if (idx < m_value_objects.size()) {43    valobj_sp = m_value_objects[idx];44    m_value_objects.erase(m_value_objects.begin() + idx);45  }46  return valobj_sp;47}48 49void ValueObjectList::SetValueObjectAtIndex(size_t idx,50                                            const ValueObjectSP &valobj_sp) {51  if (idx >= m_value_objects.size())52    m_value_objects.resize(idx + 1);53  m_value_objects[idx] = valobj_sp;54}55 56ValueObjectSP ValueObjectList::FindValueObjectByValueName(const char *name) {57  ConstString name_const_str(name);58  ValueObjectSP val_obj_sp;59  collection::iterator pos, end = m_value_objects.end();60  for (pos = m_value_objects.begin(); pos != end; ++pos) {61    ValueObject *valobj = (*pos).get();62    if (valobj && valobj->GetName() == name_const_str) {63      val_obj_sp = *pos;64      break;65    }66  }67  return val_obj_sp;68}69 70ValueObjectSP ValueObjectList::FindValueObjectByUID(lldb::user_id_t uid) {71  ValueObjectSP valobj_sp;72  collection::iterator pos, end = m_value_objects.end();73 74  for (pos = m_value_objects.begin(); pos != end; ++pos) {75    // Watch out for NULL objects in our list as the list might get resized to76    // a specific size and lazily filled in77    ValueObject *valobj = (*pos).get();78    if (valobj && valobj->GetID() == uid) {79      valobj_sp = *pos;80      break;81    }82  }83  return valobj_sp;84}85 86ValueObjectSP87ValueObjectList::FindValueObjectByPointer(ValueObject *find_valobj) {88  ValueObjectSP valobj_sp;89  collection::iterator pos, end = m_value_objects.end();90 91  for (pos = m_value_objects.begin(); pos != end; ++pos) {92    ValueObject *valobj = (*pos).get();93    if (valobj && valobj == find_valobj) {94      valobj_sp = *pos;95      break;96    }97  }98  return valobj_sp;99}100 101void ValueObjectList::Swap(ValueObjectList &value_object_list) {102  m_value_objects.swap(value_object_list.m_value_objects);103}104