1480093f4SDimitry Andric //===-- ScriptInterpreterLua.h ----------------------------------*- C++ -*-===// 2480093f4SDimitry Andric // 3480093f4SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4480093f4SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5480093f4SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6480093f4SDimitry Andric // 7480093f4SDimitry Andric //===----------------------------------------------------------------------===// 8480093f4SDimitry Andric 9480093f4SDimitry Andric #ifndef liblldb_Lua_h_ 10480093f4SDimitry Andric #define liblldb_Lua_h_ 11480093f4SDimitry Andric 12e8d8bef9SDimitry Andric #include "lldb/API/SBBreakpointLocation.h" 13e8d8bef9SDimitry Andric #include "lldb/API/SBFrame.h" 14e8d8bef9SDimitry Andric #include "lldb/Core/StructuredDataImpl.h" 15480093f4SDimitry Andric #include "lldb/lldb-types.h" 16480093f4SDimitry Andric #include "llvm/ADT/StringRef.h" 17480093f4SDimitry Andric #include "llvm/Support/Error.h" 18480093f4SDimitry Andric 19480093f4SDimitry Andric #include "lua.hpp" 20480093f4SDimitry Andric 21480093f4SDimitry Andric #include <mutex> 22480093f4SDimitry Andric 23480093f4SDimitry Andric namespace lldb_private { 24480093f4SDimitry Andric 25480093f4SDimitry Andric extern "C" { 26480093f4SDimitry Andric int luaopen_lldb(lua_State *L); 27480093f4SDimitry Andric } 28480093f4SDimitry Andric 29480093f4SDimitry Andric class Lua { 30480093f4SDimitry Andric public: 31e8d8bef9SDimitry Andric Lua(); 32e8d8bef9SDimitry Andric ~Lua(); 33480093f4SDimitry Andric 34480093f4SDimitry Andric llvm::Error Run(llvm::StringRef buffer); 35e8d8bef9SDimitry Andric llvm::Error RegisterBreakpointCallback(void *baton, const char *body); 36e8d8bef9SDimitry Andric llvm::Expected<bool> 37e8d8bef9SDimitry Andric CallBreakpointCallback(void *baton, lldb::StackFrameSP stop_frame_sp, 38e8d8bef9SDimitry Andric lldb::BreakpointLocationSP bp_loc_sp, 39e8d8bef9SDimitry Andric StructuredData::ObjectSP extra_args_sp); 40*fe6060f1SDimitry Andric llvm::Error RegisterWatchpointCallback(void *baton, const char *body); 41*fe6060f1SDimitry Andric llvm::Expected<bool> CallWatchpointCallback(void *baton, 42*fe6060f1SDimitry Andric lldb::StackFrameSP stop_frame_sp, 43*fe6060f1SDimitry Andric lldb::WatchpointSP wp_sp); 44480093f4SDimitry Andric llvm::Error LoadModule(llvm::StringRef filename); 45e8d8bef9SDimitry Andric llvm::Error CheckSyntax(llvm::StringRef buffer); 465ffd83dbSDimitry Andric llvm::Error ChangeIO(FILE *out, FILE *err); 47480093f4SDimitry Andric 48480093f4SDimitry Andric private: 49480093f4SDimitry Andric lua_State *m_lua_state; 50480093f4SDimitry Andric }; 51480093f4SDimitry Andric 52480093f4SDimitry Andric } // namespace lldb_private 53480093f4SDimitry Andric 54480093f4SDimitry Andric #endif // liblldb_Lua_h_ 55