]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / source / Plugins / LanguageRuntime / CPlusPlus / ItaniumABI / ItaniumABILanguageRuntime.h
1 //===-- ItaniumABILanguageRuntime.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_ItaniumABILanguageRuntime_h_
11 #define liblldb_ItaniumABILanguageRuntime_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/Breakpoint/BreakpointResolver.h"
19 #include "lldb/Target/LanguageRuntime.h"
20 #include "lldb/Target/CPPLanguageRuntime.h"
21 #include "lldb/Core/Value.h"
22
23 namespace lldb_private {
24     
25     class ItaniumABILanguageRuntime :
26     public lldb_private::CPPLanguageRuntime
27     {
28     public:
29         ~ItaniumABILanguageRuntime() { }
30         
31         virtual bool
32         IsVTableName (const char *name);
33         
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 bool
41         CouldHaveDynamicValue (ValueObject &in_value);
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         static lldb_private::ConstString
56         GetPluginNameStatic();
57
58         //------------------------------------------------------------------
59         // PluginInterface protocol
60         //------------------------------------------------------------------
61         virtual lldb_private::ConstString
62         GetPluginName();
63         
64         virtual uint32_t
65         GetPluginVersion();
66         
67         virtual void
68         SetExceptionBreakpoints ();
69         
70         virtual void
71         ClearExceptionBreakpoints ();
72         
73         virtual bool
74         ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason);
75
76         virtual lldb::BreakpointResolverSP
77         CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
78         
79         virtual lldb::SearchFilterSP
80         CreateExceptionSearchFilter ();
81
82     protected:
83
84         lldb::BreakpointResolverSP
85         CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions);
86
87         lldb::BreakpointSP
88         CreateExceptionBreakpoint(bool catch_bp,
89                                   bool throw_bp,
90                                   bool for_expressions,
91                                   bool is_internal);
92         
93     private:
94         ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
95         
96         lldb::BreakpointSP                              m_cxx_exception_bp_sp;
97     };
98     
99 } // namespace lldb_private
100
101 #endif  // liblldb_ItaniumABILanguageRuntime_h_