1356843Sdim//===-- ScriptInterpreterLua.h ----------------------------------*- C++ -*-===// 2356843Sdim// 3356843Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4356843Sdim// See https://llvm.org/LICENSE.txt for license information. 5356843Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6356843Sdim// 7356843Sdim//===----------------------------------------------------------------------===// 8356843Sdim 9356843Sdim#ifndef liblldb_Lua_h_ 10356843Sdim#define liblldb_Lua_h_ 11356843Sdim 12356843Sdim#include "lldb/lldb-types.h" 13356843Sdim#include "llvm/ADT/StringRef.h" 14356843Sdim#include "llvm/Support/Error.h" 15356843Sdim 16356843Sdim#include "lua.hpp" 17356843Sdim 18356843Sdim#include <mutex> 19356843Sdim 20356843Sdimnamespace lldb_private { 21356843Sdim 22356843Sdimextern "C" { 23356843Sdimint luaopen_lldb(lua_State *L); 24356843Sdim} 25356843Sdim 26356843Sdimclass Lua { 27356843Sdimpublic: 28356843Sdim Lua() : m_lua_state(luaL_newstate()) { 29356843Sdim assert(m_lua_state); 30356843Sdim luaL_openlibs(m_lua_state); 31356843Sdim luaopen_lldb(m_lua_state); 32356843Sdim } 33356843Sdim 34356843Sdim ~Lua() { 35356843Sdim assert(m_lua_state); 36356843Sdim luaL_openlibs(m_lua_state); 37356843Sdim } 38356843Sdim 39356843Sdim llvm::Error Run(llvm::StringRef buffer); 40356843Sdim llvm::Error LoadModule(llvm::StringRef filename); 41356843Sdim 42356843Sdimprivate: 43356843Sdim lua_State *m_lua_state; 44356843Sdim}; 45356843Sdim 46356843Sdim} // namespace lldb_private 47356843Sdim 48356843Sdim#endif // liblldb_Lua_h_ 49