1//===-- SWIG Interface for SBPlatform ---------------------------*- 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
9namespace lldb {
10
11
12class SBPlatformConnectOptions
13{
14public:
15    SBPlatformConnectOptions (const char *url);
16
17    SBPlatformConnectOptions (const SBPlatformConnectOptions &rhs);
18
19    ~SBPlatformConnectOptions ();
20
21    const char *
22    GetURL();
23
24    void
25    SetURL(const char *url);
26
27    bool
28    GetRsyncEnabled();
29
30    void
31    EnableRsync (const char *options,
32                 const char *remote_path_prefix,
33                 bool omit_remote_hostname);
34
35    void
36    DisableRsync ();
37
38    const char *
39    GetLocalCacheDirectory();
40
41    void
42    SetLocalCacheDirectory(const char *path);
43};
44
45class SBPlatformShellCommand
46{
47public:
48    SBPlatformShellCommand (const char *shell_command);
49
50    SBPlatformShellCommand (const SBPlatformShellCommand &rhs);
51
52    ~SBPlatformShellCommand();
53
54    void
55    Clear();
56
57    const char *
58    GetCommand();
59
60    void
61    SetCommand(const char *shell_command);
62
63    const char *
64    GetWorkingDirectory ();
65
66    void
67    SetWorkingDirectory (const char *path);
68
69    uint32_t
70    GetTimeoutSeconds ();
71
72    void
73    SetTimeoutSeconds (uint32_t sec);
74
75    int
76    GetSignal ();
77
78    int
79    GetStatus ();
80
81    const char *
82    GetOutput ();
83};
84
85%feature("docstring",
86"A class that represents a platform that can represent the current host or a remote host debug platform.
87
88The SBPlatform class represents the current host, or a remote host.
89It can be connected to a remote platform in order to provide ways
90to remotely launch and attach to processes, upload/download files,
91create directories, run remote shell commands, find locally cached
92versions of files from the remote system, and much more.
93
94SBPlatform objects can be created and then used to connect to a remote
95platform which allows the SBPlatform to be used to get a list of the
96current processes on the remote host, attach to one of those processes,
97install programs on the remote system, attach and launch processes,
98and much more.
99
100Every SBTarget has a corresponding SBPlatform. The platform can be
101specified upon target creation, or the currently selected platform
102will attempt to be used when creating the target automatically as long
103as the currently selected platform matches the target architecture
104and executable type. If the architecture or executable type do not match,
105a suitable platform will be found automatically."
106
107) SBPlatform;
108class SBPlatform
109{
110public:
111
112    SBPlatform ();
113
114    SBPlatform (const char *);
115
116    ~SBPlatform();
117
118    bool
119    IsValid () const;
120
121    explicit operator bool() const;
122
123    void
124    Clear ();
125
126    const char *
127    GetWorkingDirectory();
128
129    bool
130    SetWorkingDirectory(const char *);
131
132    const char *
133    GetName ();
134
135    SBError
136    ConnectRemote (lldb::SBPlatformConnectOptions &connect_options);
137
138    void
139    DisconnectRemote ();
140
141    bool
142    IsConnected();
143
144    const char *
145    GetTriple();
146
147    const char *
148    GetHostname ();
149
150    const char *
151    GetOSBuild ();
152
153    const char *
154    GetOSDescription ();
155
156    uint32_t
157    GetOSMajorVersion ();
158
159    uint32_t
160    GetOSMinorVersion ();
161
162    uint32_t
163    GetOSUpdateVersion ();
164
165    lldb::SBError
166    Get (lldb::SBFileSpec &src, lldb::SBFileSpec &dst);
167
168    lldb::SBError
169    Put (lldb::SBFileSpec &src, lldb::SBFileSpec &dst);
170
171    lldb::SBError
172    Install (lldb::SBFileSpec &src, lldb::SBFileSpec &dst);
173
174    lldb::SBError
175    Run (lldb::SBPlatformShellCommand &shell_command);
176
177    lldb::SBError
178    Launch (lldb::SBLaunchInfo &launch_info);
179
180    lldb::SBError
181    Kill (const lldb::pid_t pid);
182
183    lldb::SBError
184    MakeDirectory (const char *path, uint32_t file_permissions = lldb::eFilePermissionsDirectoryDefault);
185
186    uint32_t
187    GetFilePermissions (const char *path);
188
189    lldb::SBError
190    SetFilePermissions (const char *path, uint32_t file_permissions);
191
192    lldb::SBUnixSignals
193    GetUnixSignals();
194
195};
196
197} // namespace lldb
198