blob: a786a5e0d49da59b85f2a362b2f3110efda718c1 [file] [log] [blame]
Vadim Macagon141a6262017-08-01 07:34:26 +00001//===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Vadim Macagon141a6262017-08-01 07:34:26 +00006//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/API/SBProcessInfo.h"
10
11#include "lldb/API/SBFileSpec.h"
12#include "lldb/Target/Process.h"
13
14using namespace lldb;
15using namespace lldb_private;
16
17SBProcessInfo::SBProcessInfo() : m_opaque_ap() {}
18
19SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() {
20 if (rhs.IsValid()) {
21 ref() = *rhs.m_opaque_ap;
22 }
23}
24
25SBProcessInfo::~SBProcessInfo() {}
26
27SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
28 if (this != &rhs) {
29 if (rhs.IsValid())
30 ref() = *rhs.m_opaque_ap;
31 else
32 m_opaque_ap.reset();
33 }
34 return *this;
35}
36
37ProcessInstanceInfo &SBProcessInfo::ref() {
Jonas Devlieghere34470772018-12-20 21:02:55 +000038 if (m_opaque_ap == nullptr) {
Vadim Macagon141a6262017-08-01 07:34:26 +000039 m_opaque_ap.reset(new ProcessInstanceInfo());
40 }
41 return *m_opaque_ap;
42}
43
44void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
45 ref() = proc_info_ref;
46}
47
Jonas Devlieghere34470772018-12-20 21:02:55 +000048bool SBProcessInfo::IsValid() const { return m_opaque_ap != nullptr; }
Vadim Macagon141a6262017-08-01 07:34:26 +000049
50const char *SBProcessInfo::GetName() {
51 const char *name = nullptr;
52 if (m_opaque_ap) {
53 name = m_opaque_ap->GetName();
54 }
55 return name;
56}
57
58SBFileSpec SBProcessInfo::GetExecutableFile() {
59 SBFileSpec file_spec;
60 if (m_opaque_ap) {
61 file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile());
62 }
63 return file_spec;
64}
65
66lldb::pid_t SBProcessInfo::GetProcessID() {
67 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
68 if (m_opaque_ap) {
69 proc_id = m_opaque_ap->GetProcessID();
70 }
71 return proc_id;
72}
73
74uint32_t SBProcessInfo::GetUserID() {
75 uint32_t user_id = UINT32_MAX;
76 if (m_opaque_ap) {
77 user_id = m_opaque_ap->GetUserID();
78 }
79 return user_id;
80}
81
82uint32_t SBProcessInfo::GetGroupID() {
83 uint32_t group_id = UINT32_MAX;
84 if (m_opaque_ap) {
85 group_id = m_opaque_ap->GetGroupID();
86 }
87 return group_id;
88}
89
90bool SBProcessInfo::UserIDIsValid() {
91 bool is_valid = false;
92 if (m_opaque_ap) {
93 is_valid = m_opaque_ap->UserIDIsValid();
94 }
95 return is_valid;
96}
97
98bool SBProcessInfo::GroupIDIsValid() {
99 bool is_valid = false;
100 if (m_opaque_ap) {
101 is_valid = m_opaque_ap->GroupIDIsValid();
102 }
103 return is_valid;
104}
105
106uint32_t SBProcessInfo::GetEffectiveUserID() {
107 uint32_t user_id = UINT32_MAX;
108 if (m_opaque_ap) {
109 user_id = m_opaque_ap->GetEffectiveUserID();
110 }
111 return user_id;
112}
113
114uint32_t SBProcessInfo::GetEffectiveGroupID() {
115 uint32_t group_id = UINT32_MAX;
116 if (m_opaque_ap) {
117 group_id = m_opaque_ap->GetEffectiveGroupID();
118 }
119 return group_id;
120}
121
122bool SBProcessInfo::EffectiveUserIDIsValid() {
123 bool is_valid = false;
124 if (m_opaque_ap) {
125 is_valid = m_opaque_ap->EffectiveUserIDIsValid();
126 }
127 return is_valid;
128}
129
130bool SBProcessInfo::EffectiveGroupIDIsValid() {
131 bool is_valid = false;
132 if (m_opaque_ap) {
133 is_valid = m_opaque_ap->EffectiveGroupIDIsValid();
134 }
135 return is_valid;
136}
137
138lldb::pid_t SBProcessInfo::GetParentProcessID() {
139 lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
140 if (m_opaque_ap) {
141 proc_id = m_opaque_ap->GetParentProcessID();
142 }
143 return proc_id;
144}