1e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===-- PlatformMacOSX.h ----------------------------------------*- C++ -*-===//
2e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
3e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//                     The LLVM Compiler Infrastructure
4e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
5e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// This file is distributed under the University of Illinois Open Source
6e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// License. See LICENSE.TXT for details.
7e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
8e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===//
9e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
10e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#ifndef liblldb_PlatformMacOSX_h_
11e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#define liblldb_PlatformMacOSX_h_
12e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
13e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// C Includes
14e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// C++ Includes
15e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// Other libraries and framework includes
16e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// Project includes
1758e26e0935138225477fd61283215ceff2068899Greg Clayton#include "PlatformDarwin.h"
18e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
1924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Claytonclass PlatformMacOSX : public PlatformDarwin
2024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton{
2124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Claytonpublic:
2224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
2324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
2424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    // Class functions
2524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
2624bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    static lldb_private::Platform*
27b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton    CreateInstance (bool force, const lldb_private::ArchSpec *arch);
2824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
2924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    static void
3024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    Initialize ();
3124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
3224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    static void
3324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    Terminate ();
3424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
350e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    static lldb_private::ConstString
360e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    GetPluginNameStatic (bool is_host);
3724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
3824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    static const char *
3924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetDescriptionStatic(bool is_host);
4024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
4124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
4224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    // Class Methods
4324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
4424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    PlatformMacOSX (bool is_host);
4524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
4624bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    virtual
4724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    ~PlatformMacOSX();
4824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
4924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
5024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    // lldb_private::PluginInterface functions
5124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    //------------------------------------------------------------
520e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    virtual lldb_private::ConstString
5324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetPluginName()
5424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    {
550e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton        return GetPluginNameStatic (IsHost());
5624bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    }
5724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
5824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    virtual uint32_t
5924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetPluginVersion()
6024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    {
6124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton        return 1;
6224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    }
6324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
6424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    virtual const char *
6524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetDescription ()
66e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    {
6724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton        return GetDescriptionStatic (IsHost());
6824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    }
6924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
7024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    virtual lldb_private::Error
7124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetFile (const lldb_private::FileSpec &platform_file,
7224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton             const lldb_private::UUID *uuid_ptr,
7324bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton             lldb_private::FileSpec &local_file);
7424bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
7524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    virtual bool
7624bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    GetSupportedArchitectureAtIndex (uint32_t idx,
7724bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton                                     lldb_private::ArchSpec &arch);
7824bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
7924bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Claytonprivate:
8024bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton    DISALLOW_COPY_AND_ASSIGN (PlatformMacOSX);
8124bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton
8224bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton};
83e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
84cb8977d726be451df9978a74088435667fa37da2Greg Clayton#endif  // liblldb_PlatformMacOSX_h_
85