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