1*5f757f3fSDimitry Andric //===-- SBProcessInfoList.cpp ---------------------------------------------===// 2*5f757f3fSDimitry Andric // 3*5f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*5f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*5f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*5f757f3fSDimitry Andric // 7*5f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 8*5f757f3fSDimitry Andric 9*5f757f3fSDimitry Andric #include "lldb/API/SBProcessInfoList.h" 10*5f757f3fSDimitry Andric #include "lldb/API/SBProcessInfo.h" 11*5f757f3fSDimitry Andric #include "lldb/Utility/Instrumentation.h" 12*5f757f3fSDimitry Andric #include "lldb/Utility/ProcessInfo.h" 13*5f757f3fSDimitry Andric 14*5f757f3fSDimitry Andric #include "Utils.h" 15*5f757f3fSDimitry Andric 16*5f757f3fSDimitry Andric using namespace lldb; 17*5f757f3fSDimitry Andric using namespace lldb_private; 18*5f757f3fSDimitry Andric 19*5f757f3fSDimitry Andric SBProcessInfoList::SBProcessInfoList() = default; 20*5f757f3fSDimitry Andric 21*5f757f3fSDimitry Andric SBProcessInfoList::~SBProcessInfoList() = default; 22*5f757f3fSDimitry Andric SBProcessInfoList(const ProcessInfoList & impl)23*5f757f3fSDimitry AndricSBProcessInfoList::SBProcessInfoList(const ProcessInfoList &impl) 24*5f757f3fSDimitry Andric : m_opaque_up(std::make_unique<ProcessInfoList>(impl)) { 25*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this, impl); 26*5f757f3fSDimitry Andric } 27*5f757f3fSDimitry Andric SBProcessInfoList(const lldb::SBProcessInfoList & rhs)28*5f757f3fSDimitry AndricSBProcessInfoList::SBProcessInfoList(const lldb::SBProcessInfoList &rhs) { 29*5f757f3fSDimitry Andric 30*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 31*5f757f3fSDimitry Andric 32*5f757f3fSDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 33*5f757f3fSDimitry Andric } 34*5f757f3fSDimitry Andric 35*5f757f3fSDimitry Andric const lldb::SBProcessInfoList & operator =(const lldb::SBProcessInfoList & rhs)36*5f757f3fSDimitry AndricSBProcessInfoList::operator=(const lldb::SBProcessInfoList &rhs) { 37*5f757f3fSDimitry Andric 38*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this, rhs); 39*5f757f3fSDimitry Andric 40*5f757f3fSDimitry Andric if (this != &rhs) 41*5f757f3fSDimitry Andric m_opaque_up = clone(rhs.m_opaque_up); 42*5f757f3fSDimitry Andric return *this; 43*5f757f3fSDimitry Andric } 44*5f757f3fSDimitry Andric GetSize() const45*5f757f3fSDimitry Andricuint32_t SBProcessInfoList::GetSize() const { 46*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this); 47*5f757f3fSDimitry Andric 48*5f757f3fSDimitry Andric if (m_opaque_up) 49*5f757f3fSDimitry Andric return m_opaque_up->GetSize(); 50*5f757f3fSDimitry Andric 51*5f757f3fSDimitry Andric return 0; 52*5f757f3fSDimitry Andric } 53*5f757f3fSDimitry Andric Clear()54*5f757f3fSDimitry Andricvoid SBProcessInfoList::Clear() { 55*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this); 56*5f757f3fSDimitry Andric 57*5f757f3fSDimitry Andric if (m_opaque_up) 58*5f757f3fSDimitry Andric m_opaque_up->Clear(); 59*5f757f3fSDimitry Andric } 60*5f757f3fSDimitry Andric GetProcessInfoAtIndex(uint32_t idx,SBProcessInfo & info)61*5f757f3fSDimitry Andricbool SBProcessInfoList::GetProcessInfoAtIndex(uint32_t idx, 62*5f757f3fSDimitry Andric SBProcessInfo &info) { 63*5f757f3fSDimitry Andric LLDB_INSTRUMENT_VA(this, idx, info); 64*5f757f3fSDimitry Andric 65*5f757f3fSDimitry Andric if (m_opaque_up) { 66*5f757f3fSDimitry Andric lldb_private::ProcessInstanceInfo process_instance_info; 67*5f757f3fSDimitry Andric if (m_opaque_up->GetProcessInfoAtIndex(idx, process_instance_info)) { 68*5f757f3fSDimitry Andric info.SetProcessInfo(process_instance_info); 69*5f757f3fSDimitry Andric return true; 70*5f757f3fSDimitry Andric } 71*5f757f3fSDimitry Andric } 72*5f757f3fSDimitry Andric 73*5f757f3fSDimitry Andric return false; 74*5f757f3fSDimitry Andric } 75