1 //===-- SBProcessInfoList.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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "lldb/API/SBProcessInfoList.h" 10 #include "lldb/API/SBProcessInfo.h" 11 #include "lldb/Utility/Instrumentation.h" 12 #include "lldb/Utility/ProcessInfo.h" 13 14 #include "Utils.h" 15 16 using namespace lldb; 17 using namespace lldb_private; 18 19 SBProcessInfoList::SBProcessInfoList() = default; 20 21 SBProcessInfoList::~SBProcessInfoList() = default; 22 23 SBProcessInfoList::SBProcessInfoList(const ProcessInfoList &impl) 24 : m_opaque_up(std::make_unique<ProcessInfoList>(impl)) { 25 LLDB_INSTRUMENT_VA(this, impl); 26 } 27 28 SBProcessInfoList::SBProcessInfoList(const lldb::SBProcessInfoList &rhs) { 29 30 LLDB_INSTRUMENT_VA(this, rhs); 31 32 m_opaque_up = clone(rhs.m_opaque_up); 33 } 34 35 const lldb::SBProcessInfoList & 36 SBProcessInfoList::operator=(const lldb::SBProcessInfoList &rhs) { 37 38 LLDB_INSTRUMENT_VA(this, rhs); 39 40 if (this != &rhs) 41 m_opaque_up = clone(rhs.m_opaque_up); 42 return *this; 43 } 44 45 uint32_t SBProcessInfoList::GetSize() const { 46 LLDB_INSTRUMENT_VA(this); 47 48 if (m_opaque_up) 49 return m_opaque_up->GetSize(); 50 51 return 0; 52 } 53 54 void SBProcessInfoList::Clear() { 55 LLDB_INSTRUMENT_VA(this); 56 57 if (m_opaque_up) 58 m_opaque_up->Clear(); 59 } 60 61 bool SBProcessInfoList::GetProcessInfoAtIndex(uint32_t idx, 62 SBProcessInfo &info) { 63 LLDB_INSTRUMENT_VA(this, idx, info); 64 65 if (m_opaque_up) { 66 lldb_private::ProcessInstanceInfo process_instance_info; 67 if (m_opaque_up->GetProcessInfoAtIndex(idx, process_instance_info)) { 68 info.SetProcessInfo(process_instance_info); 69 return true; 70 } 71 } 72 73 return false; 74 } 75