xref: /freebsd-src/contrib/llvm-project/lldb/source/API/SBProcessInfoList.cpp (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
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 Andric SBProcessInfoList::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 Andric SBProcessInfoList::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 Andric SBProcessInfoList::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 Andric uint32_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 Andric void 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 Andric bool 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