LanguageRuntime.h revision 29756d452be39535ded2cff50d9db4df46fe6400
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===-- LanguageRuntime.h ---------------------------------------------------*- C++ -*-===//
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// License. See LICENSE.TXT for details.
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===//
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef liblldb_LanguageRuntime_h_
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define liblldb_LanguageRuntime_h_
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// C Includes
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// C++ Includes
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Other libraries and framework includes
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Project includes
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/lldb-include.h"
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/Core/PluginInterface.h"
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/lldb-private.h"
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/Core/ValueObject.h"
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/Core/Value.h"
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "lldb/Target/ExecutionContextScope.h"
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace lldb_private {
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class LanguageRuntime :
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    public PluginInterface
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles){
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)public:
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ~LanguageRuntime();
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    static LanguageRuntime*
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    FindPlugin (Process *process, lldb::LanguageType language);
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual lldb::LanguageType
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    GetLanguageType () const = 0;
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual bool
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    GetObjectDescription (Stream &str, ValueObject &object, ExecutionContextScope *exe_scope) = 0;
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual bool
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    GetObjectDescription (Stream &str, Value &value, ExecutionContextScope *exe_scope) = 0;
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual lldb::ValueObjectSP
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    GetDynamicValue (lldb::ValueObjectSP in_value, ExecutionContextScope *exe_scope) = 0;
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual void
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    SetExceptionBreakpoints ()
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    {
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual void
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ClearExceptionBreakpoints ()
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    {
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual bool
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ExceptionBreakpointsExplainStop (lldb::StopInfoSP stop_reason)
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    {
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        return false;
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)protected:
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    //------------------------------------------------------------------
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Classes that inherit from LanguageRuntime can see and modify these
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    //------------------------------------------------------------------
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    LanguageRuntime(Process *process);
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    Process *m_process;
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)private:
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    DISALLOW_COPY_AND_ASSIGN (LanguageRuntime);
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace lldb_private
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // liblldb_LanguageRuntime_h_
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)