AppleObjCRuntimeV1.h revision c105362e1fd33664939811569dc4a540959e7db7
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/ObjCLanguageRuntime.h"
19#include "AppleObjCRuntime.h"
20
21namespace lldb_private {
22
23class AppleObjCRuntimeV1 :
24        public AppleObjCRuntime
25{
26public:
27    virtual ~AppleObjCRuntimeV1() { }
28
29    // These are generic runtime functions:
30    virtual bool
31    GetDynamicTypeAndAddress (ValueObject &in_value,
32                              lldb::DynamicValueType use_dynamic,
33                              TypeAndOrName &class_type_or_name,
34                              Address &address);
35
36    virtual ClangUtilityFunction *
37    CreateObjectChecker (const char *);
38
39    //------------------------------------------------------------------
40    // Static Functions
41    //------------------------------------------------------------------
42    static void
43    Initialize();
44
45    static void
46    Terminate();
47
48    static lldb_private::LanguageRuntime *
49    CreateInstance (Process *process, lldb::LanguageType language);
50
51    //------------------------------------------------------------------
52    // PluginInterface protocol
53    //------------------------------------------------------------------
54    virtual const char *
55    GetPluginName();
56
57    virtual const char *
58    GetShortPluginName();
59
60    virtual uint32_t
61    GetPluginVersion();
62
63    virtual ObjCRuntimeVersions
64    GetRuntimeVersion ()
65    {
66        return eAppleObjC_V1;
67    }
68
69    virtual bool
70    IsValidISA(ObjCISA isa)
71    {
72        return false;
73    }
74
75    virtual ObjCISA
76    GetISA(ValueObject& valobj)
77    {
78        return 0;
79    }
80
81    virtual ConstString
82    GetActualTypeName(ObjCISA isa)
83    {
84        return ConstString(NULL);
85    }
86
87    virtual ObjCISA
88    GetParentClass(ObjCISA isa)
89    {
90        return 0;
91    }
92
93protected:
94    virtual lldb::BreakpointSP
95    CreateExceptionBreakpoint (bool catch_bp, bool throw_bp, bool is_internal = false);
96
97private:
98    AppleObjCRuntimeV1(Process *process) :
99        lldb_private::AppleObjCRuntime (process)
100     { } // Call CreateInstance instead.
101};
102
103} // namespace lldb_private
104
105#endif  // liblldb_AppleObjCRuntimeV1_h_
106