PlatformRemoteiOS.h revision 58e26e0935138225477fd61283215ceff2068899
1//===-- PlatformRemoteiOS.h ----------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_PlatformRemoteiOS_h_
11#define liblldb_PlatformRemoteiOS_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "PlatformDarwin.h"
18
19namespace lldb_private {
20
21    class PlatformRemoteiOS : public PlatformDarwin
22    {
23    public:
24
25        //------------------------------------------------------------
26        // Class Functions
27        //------------------------------------------------------------
28        static Platform*
29        CreateInstance ();
30
31        static void
32        Initialize ();
33
34        static void
35        Terminate ();
36
37        static const char *
38        GetPluginNameStatic ();
39
40        static const char *
41        GetShortPluginNameStatic();
42
43        static const char *
44        GetDescriptionStatic();
45
46        //------------------------------------------------------------
47        // Class Methods
48        //------------------------------------------------------------
49        PlatformRemoteiOS ();
50
51        virtual
52        ~PlatformRemoteiOS();
53
54        //------------------------------------------------------------
55        // lldb_private::PluginInterface functions
56        //------------------------------------------------------------
57        virtual const char *
58        GetPluginName()
59        {
60            return GetPluginNameStatic();
61        }
62
63        virtual const char *
64        GetShortPluginName()
65        {
66            return GetShortPluginNameStatic();
67        }
68
69        virtual uint32_t
70        GetPluginVersion()
71        {
72            return 1;
73        }
74
75        //------------------------------------------------------------
76        // lldb_private::Platform functions
77        //------------------------------------------------------------
78        virtual Error
79        ResolveExecutable (const FileSpec &exe_file,
80                           const ArchSpec &arch,
81                           lldb::ModuleSP &module_sp);
82
83        virtual const char *
84        GetDescription ()
85        {
86            return GetDescriptionStatic();
87        }
88
89        virtual void
90        GetStatus (Stream &strm);
91
92        virtual Error
93        GetFile (const FileSpec &platform_file,
94                 const UUID *uuid_ptr,
95                 FileSpec &local_file);
96
97        virtual uint32_t
98        FindProcessesByName (const char *name_match,
99                             lldb::NameMatchType name_match_type,
100                             ProcessInfoList &process_infos);
101
102        virtual bool
103        GetProcessInfo (lldb::pid_t pid, ProcessInfo &proc_info);
104
105        virtual bool
106        GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch);
107
108    protected:
109        std::string m_device_support_directory;
110        std::string m_device_support_directory_for_os_version;
111        std::string m_build_update;
112        //std::vector<FileSpec> m_device_support_os_dirs;
113
114        const char *
115        GetDeviceSupportDirectory();
116
117        const char *
118        GetDeviceSupportDirectoryForOSVersion();
119
120    private:
121        DISALLOW_COPY_AND_ASSIGN (PlatformRemoteiOS);
122
123    };
124} // namespace lldb_private
125
126#endif  // liblldb_PlatformRemoteiOS_h_
127