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