1 //===-- GoLanguageRuntime.h -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_GoLanguageRuntime_h_
11 #define liblldb_GoLanguageRuntime_h_
15 // Other libraries and framework includes
17 #include "lldb/Breakpoint/BreakpointResolver.h"
18 #include "lldb/Core/Value.h"
19 #include "lldb/Target/LanguageRuntime.h"
20 #include "lldb/lldb-private.h"
22 namespace lldb_private {
24 class GoLanguageRuntime : public lldb_private::LanguageRuntime {
26 ~GoLanguageRuntime() override = default;
28 //------------------------------------------------------------------
30 //------------------------------------------------------------------
31 static void Initialize();
33 static void Terminate();
35 static lldb_private::LanguageRuntime *
36 CreateInstance(Process *process, lldb::LanguageType language);
38 static lldb_private::ConstString GetPluginNameStatic();
40 lldb::LanguageType GetLanguageType() const override {
41 return lldb::eLanguageTypeGo;
44 bool GetObjectDescription(Stream &str, ValueObject &object) override {
45 // TODO(ribrdb): Maybe call String() method?
49 bool GetObjectDescription(Stream &str, Value &value,
50 ExecutionContextScope *exe_scope) override {
54 bool GetDynamicTypeAndAddress(ValueObject &in_value,
55 lldb::DynamicValueType use_dynamic,
56 TypeAndOrName &class_type_or_name,
58 Value::ValueType &value_type) override;
60 bool CouldHaveDynamicValue(ValueObject &in_value) override;
62 lldb::BreakpointResolverSP CreateExceptionResolver(Breakpoint *bkpt,
64 bool throw_bp) override {
65 return lldb::BreakpointResolverSP();
68 TypeAndOrName FixUpDynamicType(const TypeAndOrName &type_and_or_name,
69 ValueObject &static_value) override;
71 //------------------------------------------------------------------
72 // PluginInterface protocol
73 //------------------------------------------------------------------
74 lldb_private::ConstString GetPluginName() override;
76 uint32_t GetPluginVersion() override;
79 GoLanguageRuntime(Process *process)
80 : lldb_private::LanguageRuntime(process) {
81 } // Call CreateInstance instead.
84 } // namespace lldb_private
86 #endif // liblldb_GoLanguageRuntime_h_