1 //===-- SBProcessInfo.h -----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_API_SBPROCESSINFO_H
10 #define LLDB_API_SBPROCESSINFO_H
11 
12 #include "lldb/API/SBDefines.h"
13 
14 namespace lldb {
15 
16 class LLDB_API SBProcessInfo {
17 public:
18   SBProcessInfo();
19   SBProcessInfo(const SBProcessInfo &rhs);
20 
21   ~SBProcessInfo();
22 
23   SBProcessInfo &operator=(const SBProcessInfo &rhs);
24 
25   explicit operator bool() const;
26 
27   bool IsValid() const;
28 
29   const char *GetName();
30 
31   SBFileSpec GetExecutableFile();
32 
33   lldb::pid_t GetProcessID();
34 
35   uint32_t GetUserID();
36 
37   uint32_t GetGroupID();
38 
39   bool UserIDIsValid();
40 
41   bool GroupIDIsValid();
42 
43   uint32_t GetEffectiveUserID();
44 
45   uint32_t GetEffectiveGroupID();
46 
47   bool EffectiveUserIDIsValid();
48 
49   bool EffectiveGroupIDIsValid();
50 
51   lldb::pid_t GetParentProcessID();
52 
53 private:
54   friend class SBProcess;
55 
56   lldb_private::ProcessInstanceInfo &ref();
57 
58   void SetProcessInfo(const lldb_private::ProcessInstanceInfo &proc_info_ref);
59 
60   std::unique_ptr<lldb_private::ProcessInstanceInfo> m_opaque_up;
61 };
62 
63 } // namespace lldb
64 
65 #endif // LLDB_API_SBPROCESSINFO_H
66