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