]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/API/SBProcessInfo.cpp
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / API / SBProcessInfo.cpp
1 //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "lldb/API/SBProcessInfo.h"
11
12 #include "lldb/API/SBFileSpec.h"
13 #include "lldb/Target/Process.h"
14
15 using namespace lldb;
16 using namespace lldb_private;
17
18 SBProcessInfo::SBProcessInfo() : m_opaque_ap() {}
19
20 SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() {
21   if (rhs.IsValid()) {
22     ref() = *rhs.m_opaque_ap;
23   }
24 }
25
26 SBProcessInfo::~SBProcessInfo() {}
27
28 SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) {
29   if (this != &rhs) {
30     if (rhs.IsValid())
31       ref() = *rhs.m_opaque_ap;
32     else
33       m_opaque_ap.reset();
34   }
35   return *this;
36 }
37
38 ProcessInstanceInfo &SBProcessInfo::ref() {
39   if (m_opaque_ap == nullptr) {
40     m_opaque_ap.reset(new ProcessInstanceInfo());
41   }
42   return *m_opaque_ap;
43 }
44
45 void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) {
46   ref() = proc_info_ref;
47 }
48
49 bool SBProcessInfo::IsValid() const { return m_opaque_ap != nullptr; }
50
51 const char *SBProcessInfo::GetName() {
52   const char *name = nullptr;
53   if (m_opaque_ap) {
54     name = m_opaque_ap->GetName();
55   }
56   return name;
57 }
58
59 SBFileSpec SBProcessInfo::GetExecutableFile() {
60   SBFileSpec file_spec;
61   if (m_opaque_ap) {
62     file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile());
63   }
64   return file_spec;
65 }
66
67 lldb::pid_t SBProcessInfo::GetProcessID() {
68   lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
69   if (m_opaque_ap) {
70     proc_id = m_opaque_ap->GetProcessID();
71   }
72   return proc_id;
73 }
74
75 uint32_t SBProcessInfo::GetUserID() {
76   uint32_t user_id = UINT32_MAX;
77   if (m_opaque_ap) {
78     user_id = m_opaque_ap->GetUserID();
79   }
80   return user_id;
81 }
82
83 uint32_t SBProcessInfo::GetGroupID() {
84   uint32_t group_id = UINT32_MAX;
85   if (m_opaque_ap) {
86     group_id = m_opaque_ap->GetGroupID();
87   }
88   return group_id;
89 }
90
91 bool SBProcessInfo::UserIDIsValid() {
92   bool is_valid = false;
93   if (m_opaque_ap) {
94     is_valid = m_opaque_ap->UserIDIsValid();
95   }
96   return is_valid;
97 }
98
99 bool SBProcessInfo::GroupIDIsValid() {
100   bool is_valid = false;
101   if (m_opaque_ap) {
102     is_valid = m_opaque_ap->GroupIDIsValid();
103   }
104   return is_valid;
105 }
106
107 uint32_t SBProcessInfo::GetEffectiveUserID() {
108   uint32_t user_id = UINT32_MAX;
109   if (m_opaque_ap) {
110     user_id = m_opaque_ap->GetEffectiveUserID();
111   }
112   return user_id;
113 }
114
115 uint32_t SBProcessInfo::GetEffectiveGroupID() {
116   uint32_t group_id = UINT32_MAX;
117   if (m_opaque_ap) {
118     group_id = m_opaque_ap->GetEffectiveGroupID();
119   }
120   return group_id;
121 }
122
123 bool SBProcessInfo::EffectiveUserIDIsValid() {
124   bool is_valid = false;
125   if (m_opaque_ap) {
126     is_valid = m_opaque_ap->EffectiveUserIDIsValid();
127   }
128   return is_valid;
129 }
130
131 bool SBProcessInfo::EffectiveGroupIDIsValid() {
132   bool is_valid = false;
133   if (m_opaque_ap) {
134     is_valid = m_opaque_ap->EffectiveGroupIDIsValid();
135   }
136   return is_valid;
137 }
138
139 lldb::pid_t SBProcessInfo::GetParentProcessID() {
140   lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID;
141   if (m_opaque_ap) {
142     proc_id = m_opaque_ap->GetParentProcessID();
143   }
144   return proc_id;
145 }