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