//===-- SBPlatform.h --------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLDB_SBPlatform_h_ #define LLDB_SBPlatform_h_ #include "lldb/API/SBDefines.h" #include 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(); 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& func); lldb::PlatformSP m_opaque_sp; }; } // namespace lldb #endif // LLDB_SBPlatform_h_