diff options
Diffstat (limited to 'contrib/llvm-project/lldb/include/lldb/API/SBPlatform.h')
-rw-r--r-- | contrib/llvm-project/lldb/include/lldb/API/SBPlatform.h | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/include/lldb/API/SBPlatform.h b/contrib/llvm-project/lldb/include/lldb/API/SBPlatform.h new file mode 100644 index 000000000000..7207b2e2a78d --- /dev/null +++ b/contrib/llvm-project/lldb/include/lldb/API/SBPlatform.h @@ -0,0 +1,166 @@ +//===-- SBPlatform.h --------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_SBPlatform_h_ +#define LLDB_SBPlatform_h_ + +#include "lldb/API/SBDefines.h" + +#include <functional> + +struct PlatformConnectOptions; +struct PlatformShellCommand; + +namespace lldb { + +class SBLaunchInfo; + +class LLDB_API SBPlatformConnectOptions { +public: + SBPlatformConnectOptions(const char *url); + + SBPlatformConnectOptions(const SBPlatformConnectOptions &rhs); + + ~SBPlatformConnectOptions(); + + void operator=(const SBPlatformConnectOptions &rhs); + + const char *GetURL(); + + void SetURL(const char *url); + + bool GetRsyncEnabled(); + + void EnableRsync(const char *options, const char *remote_path_prefix, + bool omit_remote_hostname); + + void DisableRsync(); + + const char *GetLocalCacheDirectory(); + + void SetLocalCacheDirectory(const char *path); + +protected: + PlatformConnectOptions *m_opaque_ptr; +}; + +class LLDB_API SBPlatformShellCommand { +public: + SBPlatformShellCommand(const char *shell_command); + + SBPlatformShellCommand(const SBPlatformShellCommand &rhs); + + ~SBPlatformShellCommand(); + + void Clear(); + + const char *GetCommand(); + + void SetCommand(const char *shell_command); + + const char *GetWorkingDirectory(); + + void SetWorkingDirectory(const char *path); + + uint32_t GetTimeoutSeconds(); + + void SetTimeoutSeconds(uint32_t sec); + + int GetSignal(); + + int GetStatus(); + + const char *GetOutput(); + +protected: + friend class SBPlatform; + + PlatformShellCommand *m_opaque_ptr; +}; + +class LLDB_API SBPlatform { +public: + SBPlatform(); + + SBPlatform(const char *platform_name); + + ~SBPlatform(); + + explicit operator bool() const; + + bool IsValid() const; + + void Clear(); + + const char *GetWorkingDirectory(); + + bool SetWorkingDirectory(const char *path); + + const char *GetName(); + + SBError ConnectRemote(SBPlatformConnectOptions &connect_options); + + void DisconnectRemote(); + + bool IsConnected(); + + // The following functions will work if the platform is connected + const char *GetTriple(); + + const char *GetHostname(); + + const char *GetOSBuild(); + + const char *GetOSDescription(); + + uint32_t GetOSMajorVersion(); + + uint32_t GetOSMinorVersion(); + + uint32_t GetOSUpdateVersion(); + + SBError Put(SBFileSpec &src, SBFileSpec &dst); + + SBError Get(SBFileSpec &src, SBFileSpec &dst); + + SBError Install(SBFileSpec &src, SBFileSpec &dst); + + SBError Run(SBPlatformShellCommand &shell_command); + + SBError Launch(SBLaunchInfo &launch_info); + + SBError Kill(const lldb::pid_t pid); + + SBError + MakeDirectory(const char *path, + uint32_t file_permissions = eFilePermissionsDirectoryDefault); + + uint32_t GetFilePermissions(const char *path); + + SBError SetFilePermissions(const char *path, uint32_t file_permissions); + + SBUnixSignals GetUnixSignals() const; + +protected: + friend class SBDebugger; + friend class SBTarget; + + lldb::PlatformSP GetSP() const; + + void SetSP(const lldb::PlatformSP &platform_sp); + + SBError ExecuteConnected( + const std::function<lldb_private::Status(const lldb::PlatformSP &)> + &func); + + lldb::PlatformSP m_opaque_sp; +}; + +} // namespace lldb + +#endif // LLDB_SBPlatform_h_ |