LanguageRuntime.h revision b66cd074ec097b5b0a6f2ce292f5072aa1217ca6
1//===-- LanguageRuntime.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_LanguageRuntime_h_
11#define liblldb_LanguageRuntime_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/lldb-include.h"
18#include "lldb/Core/PluginInterface.h"
19#include "lldb/lldb-private.h"
20#include "lldb/Target/ExecutionContextScope.h"
21
22namespace lldb_private {
23
24class LanguageRuntime :
25    public PluginInterface
26{
27public:
28    virtual
29    ~LanguageRuntime();
30
31    static LanguageRuntime*
32    FindPlugin (Process *process, lldb::LanguageType language);
33
34    virtual lldb::LanguageType
35    GetLanguageType () const = 0;
36
37    virtual bool
38    GetObjectDescription (Stream &str, ValueObject &object, ExecutionContextScope *exe_scope) = 0;
39
40    virtual lldb::ValueObjectSP
41    GetDynamicValue (lldb::ValueObjectSP in_value, ExecutionContextScope *exe_scope) = 0;
42
43protected:
44    //------------------------------------------------------------------
45    // Classes that inherit from LanguageRuntime can see and modify these
46    //------------------------------------------------------------------
47    LanguageRuntime(Process *process);
48    Process *m_process;
49private:
50    DISALLOW_COPY_AND_ASSIGN (LanguageRuntime);
51};
52
53} // namespace lldb_private
54
55#endif  // liblldb_LanguageRuntime_h_
56