ItaniumABILanguageRuntime.h revision 263367
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
23namespace 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        ExceptionBreakpointsAreSet ();
75
76        virtual bool
77        ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason);
78
79        virtual lldb::BreakpointResolverSP
80        CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
81
82        virtual lldb::SearchFilterSP
83        CreateExceptionSearchFilter ();
84
85    protected:
86
87        lldb::BreakpointResolverSP
88        CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp, bool for_expressions);
89
90        lldb::BreakpointSP
91        CreateExceptionBreakpoint(bool catch_bp,
92                                  bool throw_bp,
93                                  bool for_expressions,
94                                  bool is_internal);
95
96    private:
97        ItaniumABILanguageRuntime(Process *process) : lldb_private::CPPLanguageRuntime(process) { } // Call CreateInstance instead.
98
99        lldb::BreakpointSP                              m_cxx_exception_bp_sp;
100    };
101
102} // namespace lldb_private
103
104#endif  // liblldb_ItaniumABILanguageRuntime_h_
105