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