167de8962SJonas Devlieghere //===-- ScriptInterpreterLua.h ----------------------------------*- C++ -*-===//
267de8962SJonas Devlieghere //
367de8962SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
467de8962SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information.
567de8962SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
667de8962SJonas Devlieghere //
767de8962SJonas Devlieghere //===----------------------------------------------------------------------===//
867de8962SJonas Devlieghere 
967de8962SJonas Devlieghere #ifndef liblldb_ScriptInterpreterLua_h_
1067de8962SJonas Devlieghere #define liblldb_ScriptInterpreterLua_h_
1167de8962SJonas Devlieghere 
1267de8962SJonas Devlieghere #include "lldb/Interpreter/ScriptInterpreter.h"
1367de8962SJonas Devlieghere 
1467de8962SJonas Devlieghere namespace lldb_private {
154164be72SJonas Devlieghere class Lua;
1667de8962SJonas Devlieghere class ScriptInterpreterLua : public ScriptInterpreter {
1767de8962SJonas Devlieghere public:
1867de8962SJonas Devlieghere   ScriptInterpreterLua(Debugger &debugger);
1967de8962SJonas Devlieghere 
2067de8962SJonas Devlieghere   ~ScriptInterpreterLua() override;
2167de8962SJonas Devlieghere 
2267de8962SJonas Devlieghere   bool ExecuteOneLine(
2367de8962SJonas Devlieghere       llvm::StringRef command, CommandReturnObject *result,
2467de8962SJonas Devlieghere       const ExecuteScriptOptions &options = ExecuteScriptOptions()) override;
2567de8962SJonas Devlieghere 
2667de8962SJonas Devlieghere   void ExecuteInterpreterLoop() override;
2767de8962SJonas Devlieghere 
2867de8962SJonas Devlieghere   // Static Functions
2967de8962SJonas Devlieghere   static void Initialize();
3067de8962SJonas Devlieghere 
3167de8962SJonas Devlieghere   static void Terminate();
3267de8962SJonas Devlieghere 
3367de8962SJonas Devlieghere   static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger);
3467de8962SJonas Devlieghere 
3567de8962SJonas Devlieghere   static lldb_private::ConstString GetPluginNameStatic();
3667de8962SJonas Devlieghere 
3767de8962SJonas Devlieghere   static const char *GetPluginDescriptionStatic();
3867de8962SJonas Devlieghere 
3967de8962SJonas Devlieghere   // PluginInterface protocol
4067de8962SJonas Devlieghere   lldb_private::ConstString GetPluginName() override;
4167de8962SJonas Devlieghere 
4267de8962SJonas Devlieghere   uint32_t GetPluginVersion() override;
434164be72SJonas Devlieghere 
444164be72SJonas Devlieghere   Lua &GetLua();
454164be72SJonas Devlieghere 
46*45c971f7SJonas Devlieghere   llvm::Error EnterSession(lldb::user_id_t debugger_id);
47*45c971f7SJonas Devlieghere   llvm::Error LeaveSession();
48*45c971f7SJonas Devlieghere 
494164be72SJonas Devlieghere private:
504164be72SJonas Devlieghere   std::unique_ptr<Lua> m_lua;
51*45c971f7SJonas Devlieghere   bool m_session_is_active = false;
5267de8962SJonas Devlieghere };
5367de8962SJonas Devlieghere 
5467de8962SJonas Devlieghere } // namespace lldb_private
5567de8962SJonas Devlieghere 
5667de8962SJonas Devlieghere #endif // liblldb_ScriptInterpreterLua_h_
57