AppleObjCRuntimeV1.h revision 10de7d1db3ec782ea2ccda1f39c0a40b9c301594
1//===-- AppleObjCRuntimeV1.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_AppleObjCRuntimeV1_h_
11#define liblldb_AppleObjCRuntimeV1_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/lldb-private.h"
18#include "lldb/Target/LanguageRuntime.h"
19#include "lldb/Target/ObjCLanguageRuntime.h"
20#include "lldb/Core/ValueObject.h"
21#include "AppleObjCRuntime.h"
22#include "AppleObjCTrampolineHandler.h"
23#include "AppleThreadPlanStepThroughObjCTrampoline.h"
24
25namespace lldb_private {
26
27class AppleObjCRuntimeV1 :
28        public AppleObjCRuntime
29{
30public:
31    ~AppleObjCRuntimeV1() { }
32
33    // These are generic runtime functions:
34    virtual bool
35    GetDynamicTypeAndAddress (ValueObject &in_value,
36                              lldb::DynamicValueType use_dynamic,
37                              TypeAndOrName &class_type_or_name,
38                              Address &address);
39
40    virtual ClangUtilityFunction *
41    CreateObjectChecker (const char *);
42
43    //------------------------------------------------------------------
44    // Static Functions
45    //------------------------------------------------------------------
46    static void
47    Initialize();
48
49    static void
50    Terminate();
51
52    static lldb_private::LanguageRuntime *
53    CreateInstance (Process *process, lldb::LanguageType language);
54
55    //------------------------------------------------------------------
56    // PluginInterface protocol
57    //------------------------------------------------------------------
58    virtual const char *
59    GetPluginName();
60
61    virtual const char *
62    GetShortPluginName();
63
64    virtual uint32_t
65    GetPluginVersion();
66
67    virtual void
68    SetExceptionBreakpoints ();
69
70    virtual ObjCRuntimeVersions
71    GetRuntimeVersion ()
72    {
73        return eAppleObjC_V1;
74    }
75protected:
76
77private:
78    AppleObjCRuntimeV1(Process *process) :
79        lldb_private::AppleObjCRuntime (process)
80     { } // Call CreateInstance instead.
81};
82
83} // namespace lldb_private
84
85#endif  // liblldb_AppleObjCRuntimeV1_h_
86