128613242SJonas Devlieghere //===-- ScriptInterpreterLua.h ----------------------------------*- C++ -*-===// 228613242SJonas Devlieghere // 328613242SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 428613242SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 528613242SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 628613242SJonas Devlieghere // 728613242SJonas Devlieghere //===----------------------------------------------------------------------===// 828613242SJonas Devlieghere 928613242SJonas Devlieghere #ifndef liblldb_Lua_h_ 1028613242SJonas Devlieghere #define liblldb_Lua_h_ 1128613242SJonas Devlieghere 12a0d7406aSPedro Tammela #include "lldb/API/SBBreakpointLocation.h" 13a0d7406aSPedro Tammela #include "lldb/API/SBFrame.h" 14532e4203SPedro Tammela #include "lldb/Core/StructuredDataImpl.h" 1545c971f7SJonas Devlieghere #include "lldb/lldb-types.h" 1628613242SJonas Devlieghere #include "llvm/ADT/StringRef.h" 1728613242SJonas Devlieghere #include "llvm/Support/Error.h" 1828613242SJonas Devlieghere 1928613242SJonas Devlieghere #include "lua.hpp" 2028613242SJonas Devlieghere 214164be72SJonas Devlieghere #include <mutex> 224164be72SJonas Devlieghere 2328613242SJonas Devlieghere namespace lldb_private { 2428613242SJonas Devlieghere 25bf03e17cSJonas Devlieghere extern "C" { 26bf03e17cSJonas Devlieghere int luaopen_lldb(lua_State *L); 27bf03e17cSJonas Devlieghere } 28bf03e17cSJonas Devlieghere 2928613242SJonas Devlieghere class Lua { 3028613242SJonas Devlieghere public: 31ca175710SPedro Tammela Lua(); 32ca175710SPedro Tammela ~Lua(); 3328613242SJonas Devlieghere 3428613242SJonas Devlieghere llvm::Error Run(llvm::StringRef buffer); 35a0d7406aSPedro Tammela llvm::Error RegisterBreakpointCallback(void *baton, const char *body); 36a0d7406aSPedro Tammela llvm::Expected<bool> 37a0d7406aSPedro Tammela CallBreakpointCallback(void *baton, lldb::StackFrameSP stop_frame_sp, 38532e4203SPedro Tammela lldb::BreakpointLocationSP bp_loc_sp, 39532e4203SPedro Tammela StructuredData::ObjectSP extra_args_sp); 40*e81ba283SSiger Yang llvm::Error RegisterWatchpointCallback(void *baton, const char *body); 41*e81ba283SSiger Yang llvm::Expected<bool> CallWatchpointCallback(void *baton, 42*e81ba283SSiger Yang lldb::StackFrameSP stop_frame_sp, 43*e81ba283SSiger Yang lldb::WatchpointSP wp_sp); 44572b9f46SJonas Devlieghere llvm::Error LoadModule(llvm::StringRef filename); 45d853bd7aSPedro Tammela llvm::Error CheckSyntax(llvm::StringRef buffer); 46fa1b4a96SJonas Devlieghere llvm::Error ChangeIO(FILE *out, FILE *err); 4728613242SJonas Devlieghere 4828613242SJonas Devlieghere private: 4928613242SJonas Devlieghere lua_State *m_lua_state; 5028613242SJonas Devlieghere }; 5128613242SJonas Devlieghere 5228613242SJonas Devlieghere } // namespace lldb_private 5328613242SJonas Devlieghere 5428613242SJonas Devlieghere #endif // liblldb_Lua_h_ 55