blob: 9c2ee15cff65f077f649a352671dd71df756596a [file] [log] [blame]
Eugene Zelenko05e0fc82015-10-22 00:45:41 +00001//===-- GoLanguageRuntime.h -------------------------------------*- C++ -*-===//
Ryan Brown2b56f862015-10-06 20:31:08 +00002//
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_GoLanguageRuntime_h_
11#define liblldb_GoLanguageRuntime_h_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
Ryan Brown2b56f862015-10-06 20:31:08 +000017#include "lldb/Breakpoint/BreakpointResolver.h"
Ryan Brown2b56f862015-10-06 20:31:08 +000018#include "lldb/Core/Value.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000019#include "lldb/Target/LanguageRuntime.h"
20#include "lldb/lldb-private.h"
Ryan Brown2b56f862015-10-06 20:31:08 +000021
22namespace lldb_private {
Eugene Zelenko05e0fc82015-10-22 00:45:41 +000023
Kate Stoneb9c1b512016-09-06 20:57:50 +000024class GoLanguageRuntime : public lldb_private::LanguageRuntime {
25public:
26 ~GoLanguageRuntime() override = default;
Ryan Brown2b56f862015-10-06 20:31:08 +000027
Kate Stoneb9c1b512016-09-06 20:57:50 +000028 //------------------------------------------------------------------
29 // Static Functions
30 //------------------------------------------------------------------
31 static void Initialize();
Ryan Brown2b56f862015-10-06 20:31:08 +000032
Kate Stoneb9c1b512016-09-06 20:57:50 +000033 static void Terminate();
Ryan Brown2b56f862015-10-06 20:31:08 +000034
Kate Stoneb9c1b512016-09-06 20:57:50 +000035 static lldb_private::LanguageRuntime *
36 CreateInstance(Process *process, lldb::LanguageType language);
Ryan Brown2b56f862015-10-06 20:31:08 +000037
Kate Stoneb9c1b512016-09-06 20:57:50 +000038 static lldb_private::ConstString GetPluginNameStatic();
Ryan Brown2b56f862015-10-06 20:31:08 +000039
Kate Stoneb9c1b512016-09-06 20:57:50 +000040 lldb::LanguageType GetLanguageType() const override {
41 return lldb::eLanguageTypeGo;
42 }
Ryan Brown2b56f862015-10-06 20:31:08 +000043
Kate Stoneb9c1b512016-09-06 20:57:50 +000044 bool GetObjectDescription(Stream &str, ValueObject &object) override {
45 // TODO(ribrdb): Maybe call String() method?
46 return false;
47 }
Ryan Brown2b56f862015-10-06 20:31:08 +000048
Kate Stoneb9c1b512016-09-06 20:57:50 +000049 bool GetObjectDescription(Stream &str, Value &value,
50 ExecutionContextScope *exe_scope) override {
51 return false;
52 }
Ryan Brown2b56f862015-10-06 20:31:08 +000053
Kate Stoneb9c1b512016-09-06 20:57:50 +000054 bool GetDynamicTypeAndAddress(ValueObject &in_value,
55 lldb::DynamicValueType use_dynamic,
56 TypeAndOrName &class_type_or_name,
57 Address &address,
58 Value::ValueType &value_type) override;
59
60 bool CouldHaveDynamicValue(ValueObject &in_value) override;
61
62 lldb::BreakpointResolverSP CreateExceptionResolver(Breakpoint *bkpt,
63 bool catch_bp,
64 bool throw_bp) override {
65 return lldb::BreakpointResolverSP();
66 }
67
68 TypeAndOrName FixUpDynamicType(const TypeAndOrName &type_and_or_name,
69 ValueObject &static_value) override;
70
71 //------------------------------------------------------------------
72 // PluginInterface protocol
73 //------------------------------------------------------------------
74 lldb_private::ConstString GetPluginName() override;
75
76 uint32_t GetPluginVersion() override;
77
78private:
79 GoLanguageRuntime(Process *process)
80 : lldb_private::LanguageRuntime(process) {
81 } // Call CreateInstance instead.
82};
83
Ryan Brown2b56f862015-10-06 20:31:08 +000084} // namespace lldb_private
85
Eugene Zelenko05e0fc82015-10-22 00:45:41 +000086#endif // liblldb_GoLanguageRuntime_h_