1//===-- ScriptInterpreterLua.h ----------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_ScriptInterpreterLua_h_
10#define liblldb_ScriptInterpreterLua_h_
11
12#include "lldb/Interpreter/ScriptInterpreter.h"
13
14namespace lldb_private {
15class Lua;
16class ScriptInterpreterLua : public ScriptInterpreter {
17public:
18  ScriptInterpreterLua(Debugger &debugger);
19
20  ~ScriptInterpreterLua() override;
21
22  bool ExecuteOneLine(
23      llvm::StringRef command, CommandReturnObject *result,
24      const ExecuteScriptOptions &options = ExecuteScriptOptions()) override;
25
26  void ExecuteInterpreterLoop() override;
27
28  virtual bool
29  LoadScriptingModule(const char *filename, bool init_session,
30                      lldb_private::Status &error,
31                      StructuredData::ObjectSP *module_sp = nullptr) override;
32
33  // Static Functions
34  static void Initialize();
35
36  static void Terminate();
37
38  static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger);
39
40  static lldb_private::ConstString GetPluginNameStatic();
41
42  static const char *GetPluginDescriptionStatic();
43
44  // PluginInterface protocol
45  lldb_private::ConstString GetPluginName() override;
46
47  uint32_t GetPluginVersion() override;
48
49  Lua &GetLua();
50
51  llvm::Error EnterSession(lldb::user_id_t debugger_id);
52  llvm::Error LeaveSession();
53
54private:
55  std::unique_ptr<Lua> m_lua;
56  bool m_session_is_active = false;
57};
58
59} // namespace lldb_private
60
61#endif // liblldb_ScriptInterpreterLua_h_
62