1141a6263SVadim Macagon //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===//
2141a6263SVadim Macagon //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6141a6263SVadim Macagon //
7141a6263SVadim Macagon //===----------------------------------------------------------------------===//
8141a6263SVadim Macagon 
9141a6263SVadim Macagon #include "lldb/API/SBProcessInfo.h"
10141a6263SVadim Macagon 
11141a6263SVadim Macagon #include "lldb/API/SBFileSpec.h"
12141a6263SVadim Macagon #include "lldb/Target/Process.h"
13141a6263SVadim Macagon 
14141a6263SVadim Macagon using namespace lldb;
15141a6263SVadim Macagon using namespace lldb_private;
16141a6263SVadim Macagon 
17141a6263SVadim Macagon SBProcessInfo::SBProcessInfo() : m_opaque_ap() {}
18141a6263SVadim Macagon 
19141a6263SVadim Macagon SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() {
20141a6263SVadim Macagon   if (rhs.IsValid()) {
21141a6263SVadim Macagon     ref() = *rhs.m_opaque_ap;
22141a6263SVadim Macagon   }
23141a6263SVadim Macagon }
24141a6263SVadim Macagon 
25141a6263SVadim Macagon SBProcessInfo::~SBProcessInfo() {}
26141a6263SVadim Macagon 
27141a6263SVadim Macagon SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
28141a6263SVadim Macagon   if (this != &rhs) {
29141a6263SVadim Macagon     if (rhs.IsValid())
30141a6263SVadim Macagon       ref() = *rhs.m_opaque_ap;
31141a6263SVadim Macagon     else
32141a6263SVadim Macagon       m_opaque_ap.reset();
33141a6263SVadim Macagon   }
34141a6263SVadim Macagon   return *this;
35141a6263SVadim Macagon }
36141a6263SVadim Macagon 
37141a6263SVadim Macagon ProcessInstanceInfo &SBProcessInfo::ref() {
383447077aSJonas Devlieghere   if (m_opaque_ap == nullptr) {
39141a6263SVadim Macagon     m_opaque_ap.reset(new ProcessInstanceInfo());
40141a6263SVadim Macagon   }
41141a6263SVadim Macagon   return *m_opaque_ap;
42141a6263SVadim Macagon }
43141a6263SVadim Macagon 
44141a6263SVadim Macagon void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
45141a6263SVadim Macagon   ref() = proc_info_ref;
46141a6263SVadim Macagon }
47141a6263SVadim Macagon 
483447077aSJonas Devlieghere bool SBProcessInfo::IsValid() const { return m_opaque_ap != nullptr; }
49141a6263SVadim Macagon 
50141a6263SVadim Macagon const char *SBProcessInfo::GetName() {
51141a6263SVadim Macagon   const char *name = nullptr;
52141a6263SVadim Macagon   if (m_opaque_ap) {
53141a6263SVadim Macagon     name = m_opaque_ap->GetName();
54141a6263SVadim Macagon   }
55141a6263SVadim Macagon   return name;
56141a6263SVadim Macagon }
57141a6263SVadim Macagon 
58141a6263SVadim Macagon SBFileSpec SBProcessInfo::GetExecutableFile() {
59141a6263SVadim Macagon   SBFileSpec file_spec;
60141a6263SVadim Macagon   if (m_opaque_ap) {
61141a6263SVadim Macagon     file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile());
62141a6263SVadim Macagon   }
63141a6263SVadim Macagon   return file_spec;
64141a6263SVadim Macagon }
65141a6263SVadim Macagon 
66141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetProcessID() {
67141a6263SVadim Macagon   lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
68141a6263SVadim Macagon   if (m_opaque_ap) {
69141a6263SVadim Macagon     proc_id = m_opaque_ap->GetProcessID();
70141a6263SVadim Macagon   }
71141a6263SVadim Macagon   return proc_id;
72141a6263SVadim Macagon }
73141a6263SVadim Macagon 
74141a6263SVadim Macagon uint32_t SBProcessInfo::GetUserID() {
75141a6263SVadim Macagon   uint32_t user_id = UINT32_MAX;
76141a6263SVadim Macagon   if (m_opaque_ap) {
77141a6263SVadim Macagon     user_id = m_opaque_ap->GetUserID();
78141a6263SVadim Macagon   }
79141a6263SVadim Macagon   return user_id;
80141a6263SVadim Macagon }
81141a6263SVadim Macagon 
82141a6263SVadim Macagon uint32_t SBProcessInfo::GetGroupID() {
83141a6263SVadim Macagon   uint32_t group_id = UINT32_MAX;
84141a6263SVadim Macagon   if (m_opaque_ap) {
85141a6263SVadim Macagon     group_id = m_opaque_ap->GetGroupID();
86141a6263SVadim Macagon   }
87141a6263SVadim Macagon   return group_id;
88141a6263SVadim Macagon }
89141a6263SVadim Macagon 
90141a6263SVadim Macagon bool SBProcessInfo::UserIDIsValid() {
91141a6263SVadim Macagon   bool is_valid = false;
92141a6263SVadim Macagon   if (m_opaque_ap) {
93141a6263SVadim Macagon     is_valid = m_opaque_ap->UserIDIsValid();
94141a6263SVadim Macagon   }
95141a6263SVadim Macagon   return is_valid;
96141a6263SVadim Macagon }
97141a6263SVadim Macagon 
98141a6263SVadim Macagon bool SBProcessInfo::GroupIDIsValid() {
99141a6263SVadim Macagon   bool is_valid = false;
100141a6263SVadim Macagon   if (m_opaque_ap) {
101141a6263SVadim Macagon     is_valid = m_opaque_ap->GroupIDIsValid();
102141a6263SVadim Macagon   }
103141a6263SVadim Macagon   return is_valid;
104141a6263SVadim Macagon }
105141a6263SVadim Macagon 
106141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveUserID() {
107141a6263SVadim Macagon   uint32_t user_id = UINT32_MAX;
108141a6263SVadim Macagon   if (m_opaque_ap) {
109141a6263SVadim Macagon     user_id = m_opaque_ap->GetEffectiveUserID();
110141a6263SVadim Macagon   }
111141a6263SVadim Macagon   return user_id;
112141a6263SVadim Macagon }
113141a6263SVadim Macagon 
114141a6263SVadim Macagon uint32_t SBProcessInfo::GetEffectiveGroupID() {
115141a6263SVadim Macagon   uint32_t group_id = UINT32_MAX;
116141a6263SVadim Macagon   if (m_opaque_ap) {
117141a6263SVadim Macagon     group_id = m_opaque_ap->GetEffectiveGroupID();
118141a6263SVadim Macagon   }
119141a6263SVadim Macagon   return group_id;
120141a6263SVadim Macagon }
121141a6263SVadim Macagon 
122141a6263SVadim Macagon bool SBProcessInfo::EffectiveUserIDIsValid() {
123141a6263SVadim Macagon   bool is_valid = false;
124141a6263SVadim Macagon   if (m_opaque_ap) {
125141a6263SVadim Macagon     is_valid = m_opaque_ap->EffectiveUserIDIsValid();
126141a6263SVadim Macagon   }
127141a6263SVadim Macagon   return is_valid;
128141a6263SVadim Macagon }
129141a6263SVadim Macagon 
130141a6263SVadim Macagon bool SBProcessInfo::EffectiveGroupIDIsValid() {
131141a6263SVadim Macagon   bool is_valid = false;
132141a6263SVadim Macagon   if (m_opaque_ap) {
133141a6263SVadim Macagon     is_valid = m_opaque_ap->EffectiveGroupIDIsValid();
134141a6263SVadim Macagon   }
135141a6263SVadim Macagon   return is_valid;
136141a6263SVadim Macagon }
137141a6263SVadim Macagon 
138141a6263SVadim Macagon lldb::pid_t SBProcessInfo::GetParentProcessID() {
139141a6263SVadim Macagon   lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
140141a6263SVadim Macagon   if (m_opaque_ap) {
141141a6263SVadim Macagon     proc_id = m_opaque_ap->GetParentProcessID();
142141a6263SVadim Macagon   }
143141a6263SVadim Macagon   return proc_id;
144141a6263SVadim Macagon }
145