| //===-- SBProcessInfo.cpp ---------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "lldb/API/SBProcessInfo.h" |
| |
| #include "lldb/API/SBFileSpec.h" |
| #include "lldb/Target/Process.h" |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| SBProcessInfo::SBProcessInfo() : m_opaque_ap() {} |
| |
| SBProcessInfo::SBProcessInfo(const SBProcessInfo &rhs) : m_opaque_ap() { |
| if (rhs.IsValid()) { |
| ref() = *rhs.m_opaque_ap; |
| } |
| } |
| |
| SBProcessInfo::~SBProcessInfo() {} |
| |
| SBProcessInfo &SBProcessInfo::operator=(const SBProcessInfo &rhs) { |
| if (this != &rhs) { |
| if (rhs.IsValid()) |
| ref() = *rhs.m_opaque_ap; |
| else |
| m_opaque_ap.reset(); |
| } |
| return *this; |
| } |
| |
| ProcessInstanceInfo &SBProcessInfo::ref() { |
| if (m_opaque_ap.get() == nullptr) { |
| m_opaque_ap.reset(new ProcessInstanceInfo()); |
| } |
| return *m_opaque_ap; |
| } |
| |
| void SBProcessInfo::SetProcessInfo(const ProcessInstanceInfo &proc_info_ref) { |
| ref() = proc_info_ref; |
| } |
| |
| bool SBProcessInfo::IsValid() const { return m_opaque_ap.get() != nullptr; } |
| |
| const char *SBProcessInfo::GetName() { |
| const char *name = nullptr; |
| if (m_opaque_ap) { |
| name = m_opaque_ap->GetName(); |
| } |
| return name; |
| } |
| |
| SBFileSpec SBProcessInfo::GetExecutableFile() { |
| SBFileSpec file_spec; |
| if (m_opaque_ap) { |
| file_spec.SetFileSpec(m_opaque_ap->GetExecutableFile()); |
| } |
| return file_spec; |
| } |
| |
| lldb::pid_t SBProcessInfo::GetProcessID() { |
| lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; |
| if (m_opaque_ap) { |
| proc_id = m_opaque_ap->GetProcessID(); |
| } |
| return proc_id; |
| } |
| |
| uint32_t SBProcessInfo::GetUserID() { |
| uint32_t user_id = UINT32_MAX; |
| if (m_opaque_ap) { |
| user_id = m_opaque_ap->GetUserID(); |
| } |
| return user_id; |
| } |
| |
| uint32_t SBProcessInfo::GetGroupID() { |
| uint32_t group_id = UINT32_MAX; |
| if (m_opaque_ap) { |
| group_id = m_opaque_ap->GetGroupID(); |
| } |
| return group_id; |
| } |
| |
| bool SBProcessInfo::UserIDIsValid() { |
| bool is_valid = false; |
| if (m_opaque_ap) { |
| is_valid = m_opaque_ap->UserIDIsValid(); |
| } |
| return is_valid; |
| } |
| |
| bool SBProcessInfo::GroupIDIsValid() { |
| bool is_valid = false; |
| if (m_opaque_ap) { |
| is_valid = m_opaque_ap->GroupIDIsValid(); |
| } |
| return is_valid; |
| } |
| |
| uint32_t SBProcessInfo::GetEffectiveUserID() { |
| uint32_t user_id = UINT32_MAX; |
| if (m_opaque_ap) { |
| user_id = m_opaque_ap->GetEffectiveUserID(); |
| } |
| return user_id; |
| } |
| |
| uint32_t SBProcessInfo::GetEffectiveGroupID() { |
| uint32_t group_id = UINT32_MAX; |
| if (m_opaque_ap) { |
| group_id = m_opaque_ap->GetEffectiveGroupID(); |
| } |
| return group_id; |
| } |
| |
| bool SBProcessInfo::EffectiveUserIDIsValid() { |
| bool is_valid = false; |
| if (m_opaque_ap) { |
| is_valid = m_opaque_ap->EffectiveUserIDIsValid(); |
| } |
| return is_valid; |
| } |
| |
| bool SBProcessInfo::EffectiveGroupIDIsValid() { |
| bool is_valid = false; |
| if (m_opaque_ap) { |
| is_valid = m_opaque_ap->EffectiveGroupIDIsValid(); |
| } |
| return is_valid; |
| } |
| |
| lldb::pid_t SBProcessInfo::GetParentProcessID() { |
| lldb::pid_t proc_id = LLDB_INVALID_PROCESS_ID; |
| if (m_opaque_ap) { |
| proc_id = m_opaque_ap->GetParentProcessID(); |
| } |
| return proc_id; |
| } |