diff options
Diffstat (limited to 'source/API/SBProcessInfo.cpp')
-rw-r--r-- | source/API/SBProcessInfo.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/source/API/SBProcessInfo.cpp b/source/API/SBProcessInfo.cpp new file mode 100644 index 000000000000..38f6c1d1e699 --- /dev/null +++ b/source/API/SBProcessInfo.cpp @@ -0,0 +1,145 @@ +//===-- 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; +} |