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