xref: /llvm-project/lldb/source/Plugins/ScriptInterpreter/Lua/Lua.h (revision e81ba283131cf76ae62fa9b601a24d080578efaa)
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