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